Tugas Pendahuluan 2 (M1)


Percobaan 5 Kondisi 2
Dip Switch & Seven Segment

1. Prosedur [Kembali]

  • Rangkailah semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai, masukkan program ke arduino 
  • Jalankan program pada simulasi dan lakukan sesuai kondisi

  • Rangkaian







  • Prinsip Kerja

Pada percobaan 1 Kondisi 1, Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling. Disini kita menggunakan dip switch sebagai input dan 7-segment sebagai output, dimana dip switch terhubung ke resistor agar dapat mengatur arus yang melewati rangkaian.

Pada rangkaian tersebut dapat kita lihat, bahwa dip switch terhubung ke pin A0 Arduino, dimana dipswitch digunakan sebagai input. Dan untuk output kita menggunakan 7-segment 2 digit yang dihubungkan ke pin 4 sampai 13. dimana ketika D1 dan D2 kita atur dalam keadaan high maka 7-segment akan menyala secara counting dari 0-9 dengan digit 1 dan 2 menyala secara bergantian. kemuadian ketika D1 dalam keadaan High dan D2 dalam keadaan Low, maka digit 2 akan menyala. begitupun sebaliknya.

        


#define a 6
#define b 7
#define c 8
#define d 9
#define e 10
#define f 11
#define g 12
#define dp 13
#define D1 4
#define D2 5
#define Dsw A0
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[10][7] = {
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};
void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segments[i], OUTPUT);
  }
  pinMode(dp, OUTPUT);
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(Dsw, 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 sw = analogRead(Dsw);
  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 (sw < 1000) { // Threshold untuk memastikan switch aktif
    if (millis() - lastTime > 200) { // 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;
      }
    }
  }
}


4. Kondisi [Kembali]

Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling

HTML klik disini  
Rangkaian Simulasi  klik disini
Video Simulasi   klik disini
Listing Program klik disini


Tidak ada komentar:

Posting Komentar