Laporan Percobaan 2 (M2)

  




1. Prosedur  [back]
Langkah-langkah percobaan :
    1. Siapkan alat dan bahan dengan komponen yaitu Arduino Uno, 
       Dipswitch, dan 7segment
    2. Rangkai komponen sesuai gambar percobaan
    3, Rancang kerja rangkaian menggunakan program pada Arduino IDE
    4. Compile dan upload program pada Arduino Uno
    4. Jalankan dan uji coba rangkaian.


Gambar Percobaan



2. Hardware dan diagram blok [back]
  • Hardware :
- Arduino Uno


- Dipswitch



- Seven Segment



- Jumper 

-Breadboard

  • Diagram Blok :



3. Rangkaian Percobaan dan Prinsip Kerja  [back]
  • Rangkaian Percobaan


  • Prinsip Kerja :
    Pada rangkaian percobaan kali ini, merupakan rangkaian timer arduino. Seven segment akan menampilkan tampilan counting dengan timer dari 0-9 atau 9-0 berdasarkan kondisi switch yang aktif. Penampilan setiap karakter diatur menggunakan fungsi timer ardunino.


4. Flowchart dan Listing Program  [back]
  • Flowchart :



  • Listing Program :
#define a 4
#define b 5
#define c 9
#define d 13
#define e 11
#define f 8
#define g 12
#define dp 10
#define D1 7
#define D2 6
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3
bool sw1,sw2,sw3,sw4;

int segments[] = {a,b,c,d,e,f,g};
byte digitPatterns[10][7] = {
  {0, 0, 0, 0, 0, 0, 1}, // 0
  {1, 0, 0, 1, 1, 1, 1}, // 1
  {0, 0, 1, 0, 0, 1, 0}, // 2
  {0, 0, 0, 0, 1, 1, 0}, // 3
  {1, 0, 0, 1, 1, 0, 0}, // 4
  {0, 1, 0, 0, 1, 0, 0}, // 5
  {0, 1, 0, 0, 0, 0, 0}, // 6
  {0, 0, 0, 1, 1, 1, 1}, // 7
  {0, 0, 0, 0, 0, 0, 0}, // 8
  {0, 0, 0, 0, 1, 0, 0}  // 9
};

void setup() {
  for (int i = 0; i < 7; i++) {
  pinMode(segments[i], OUTPUT);
  }
  pinMode(dp, OUTPUT);
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(Dsw1, INPUT_PULLUP);
  pinMode(Dsw2, INPUT_PULLUP);
  pinMode(Dsw3, INPUT_PULLUP);
  pinMode(Dsw4, INPUT_PULLUP);
  Serial.begin(9600);
}

void number(int display) {
  if (display >= 0 && display <= 9) {
    for (int i = 0; i < 7; i++) {
      digitalWrite(segments[i], digitPatterns[display][i]);
    }
  }
}

void loop() {
  int sw1 = digitalRead(Dsw1);
  int sw2 = digitalRead(Dsw2);
  int sw3 = digitalRead(Dsw3);
  int sw4 = digitalRead(Dsw4);
  static int digit = 1; // Digit yang sedang ditampilkan (1 atau 2)
  static int count = 0; // Counter untuk digit
  static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol

if (sw1 == LOW) {
    if (millis() - lastTime > 1000) { // Debouncing
        lastTime = millis();
        count++;
        if (count > 9) {
            count = 0;
        }
        if (digit == 1) {
            digitalWrite(D1, HIGH);
            digitalWrite(D2, LOW);
            number(count);
            digit = 2;
        } else {
            digitalWrite(D1, LOW);
            digitalWrite(D2, HIGH);
            number(count);
            digit = 1;
        }
    }
}

else if (sw2 == LOW) {
    if (millis() - lastTime > 1000) { // Debouncing
        lastTime = millis();
        digitalWrite(D1, HIGH);
        digitalWrite(D2, LOW);
        for (int i = 9; i >= 0; i--) {
            number(i);
            delay(1000); // Delay agar Anda bisa melihat perubahan digit
        }
    }
}
if (sw3 == LOW) {
    if (millis() - lastTime > 2000) { // Debouncing
        lastTime = millis();
        count++;
        if (count > 9) {
            count = 0;
        }
        if (digit == 1) {
            digitalWrite(D2, HIGH);
            digitalWrite(D1, LOW);
            number(count);
            digit = 2;
        } else {
            digitalWrite(D2, LOW);
            digitalWrite(D1, HIGH);
            number(count);
            digit = 1;
        }
    }
}
else if (sw4 == LOW) {
    if (millis() - lastTime > 2000) { // Debouncing
        lastTime = millis();
        digitalWrite(D2, HIGH);
        digitalWrite(D1, LOW);
        for (int i = 9; i >= 0; i--) {
            number(i);
            delay(200); // Delay agar Anda bisa melihat perubahan digit
        }
    }
}
}


   
5. Video Demo  [back]
 


6. Kondisi  [back]
    Percobaan 3 : Timer Arduino dengan Dipswitch dan Seven Segment. Seven segment akan menampilkan karakter counting menggunakan timer sesuai dengan kondisi switch yang aktif pada dipswitch (SW1, SW2, SW3, SW4)
  
7. Video Simulasi  [back]




8. Download File  [back]
Download Video percobaan Di Sini
Download Library Arduino Uno Di Sini
Download Datasheet Arduino Uno Di Sini
Download Datasheet Seven segment Di Sini
Download HTML Di Sini

Tidak ada komentar:

Posting Komentar