Menampilkan Up Counter 0-9 Dengan Kendali Sakelar Tekan Menggunakan Arduino

Pada project sebelumnya, angka 0-9 ditampilkan secara otomatis setiap 1 detik. Kali ini angka ditampilkan dengan kendali sebuah sakelar tekan. Setiap kali sakelar ditekan, maka angka yang tampil akan ditambahkan dengan 1. Ketika sudah sampai pada angka 9, lalu ditekan, maka angka akan kembali ke 0. Sistem ini sering ditemui saat anda menekan tombol CH+ untuk mengganti channel pada TV. Ditekan-tekan, angkanya semakin maju dan kalau sudah sampai pada batas maksimum, maka kembali lagi ke channel paling awal.

Cukup modifikasi sedikit project sebelumnya dengan menambahkan sakelar tekan dan sebuah resistor, maka project kali ini bisa diwujudkan. Pada kode juga perlu dimodifikasi dengan menambahkan kode untuk membaca input dari sakelar tekan. Input yang masuk akan digunakan untuk menaikkan angka. Kode ini juga bisa diambil dari project yang telah ada sebelumnya.

Bahan yang digunakan :

  1. Arduino UNO R3
  2. Breadboard
  3. 7-segment common cathode 0.86 inchi
  4. Resistor 330 Ohm
  5. Resistor 10K
  6. Push button switch
  7. Kabel jumper secukupnya.

Gambar 1. Skema rangkaian.

Gambar 2. Pengkabelan mengikuti skema rangkaian.

Kode program yang diupload ke mikrokontrol adalah kode di bawah ini :

int switchIn = 6;
int dA = 7;
int dB = 8;
int dC = 9;
int dD = 10;
int dE = 11;
int dF = 12;
int dG = 13;
int i = 0;
long time = 0;
bool previous = LOW;

void setup() {
pinMode(switchIn, INPUT);
pinMode(dA, OUTPUT);
pinMode(dB, OUTPUT);
pinMode(dC, OUTPUT);
pinMode(dD, OUTPUT);
pinMode(dE, OUTPUT);
pinMode(dF, OUTPUT);
pinMode(dG, OUTPUT);
}

void loop() {
bool reading = digitalRead(switchIn);
showNumber(i);
if (reading == LOW && previous == HIGH && millis() - time > 200) {
time = millis();
i++;
if (i > 9) {
i = 0;
}
turnOff();
}
previous = reading;
}

void turnOff()
{
digitalWrite(dA, LOW);
digitalWrite(dB, LOW);
digitalWrite(dC, LOW);
digitalWrite(dD, LOW);
digitalWrite(dE, LOW);
digitalWrite(dF, LOW);
digitalWrite(dG, LOW);
}

void showNumber(int n)
{
// LED A 7-segment
if (n != 1 && n != 4) {
digitalWrite(dA, HIGH);
}
// LED B 7-segment
if (n != 5 && n != 6) {
digitalWrite(dB, HIGH);
}
// LED C 7-segment
if (n != 2) {
digitalWrite(dC, HIGH);
}
// LED D 7-segment
if (n != 1 && n != 4 && n != 7) {
digitalWrite(dD, HIGH);
}
// LED E 7-segment
if (n == 0 || n == 2 || n == 6 || n == 8) {
digitalWrite(dE, HIGH);
}
// LED F 7-segment
if (n != 1 && n != 2 && n != 3 && n != 7) {
digitalWrite(dF, HIGH);
}
// LED G 7-segment
if (n != 0 && n != 1 && n != 7) {
digitalWrite(dG, HIGH);
}
}

Jadi kode ini adalah kombinasi antara kode pada project counter 7-segment dan kode pada project switch LED. Jika dikombinasikan dengan benar, maka akan berjalan sebagaimana mestinya. Variabel i dijadikan variabel globalĀ dan sedikit ada penambahan kondisi saat nilai i sudah melebihi 9. Nilai i di-reset ke 0. Nilai dariĀ i inilah yang mewakili angka yang akan ditampilkan ke 7-segment.

Sekianlah cerita tentang project kali ini. Tidak begitu lama ditulis setelah project sebelumnya. Karena yang telah ada tinggal dimodifikasi untuk membuat project baru. Terimakasih telah membaca tulisan ini, semoga bermanfaat. Ikuti terus perkembangan tulisan di lab mini Introvesia.

Our Location

company 1
company 2
company 3
company 4