Project sebelumnya dikembangkan lagi dengan menambahkan tombol Down untuk memilih angka dengan hitungan mundur. Jadi pada project kali ini, angka dapat dinaikan atau diturunkan dengan cara menekan tombol. Disediakan 2 tombol dengan fungsinya masing-masing, yaitu naik dan turun. Kalau diterapkan pada tombol pemilih channel, maka fungsinya sudah bisa memajukan channel (CH+) dan memundurkan channel (CH-).

Bahan yang digunakan :

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

Image

Gambar 1. Skema rangkaian.

Image

Gambar 2. Pengkabelan mengikuti skema rangkaian.

Untuk program yang di-upload ke mikrokontrol, kita gandakan kode untuk membaca input switch menjadi 2. Tinggal dibedakan, kode pertama untuk menaikkan nilai variabel i dan kode kedua untuk menurunkan nilai variabel i. Ketika menaikkan nilai i dan nilai i telah melebihi 9, maka nilai i di-reset menjadi 0. Sebaliknya, ketika menurunkan nilai i dan nilai i kurang dari 0, maka nilai i di-reset menjadi 9. Demikianlah yang membuat angka ini akan terus berganti secara berkesinambungan.

int switchUp = 6;
int switchDown = 5;
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 previousUp = LOW;
bool previousDown = LOW;

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

void loop() {
// Switch Up
bool readingUp = digitalRead(switchUp);
showNumber(i);
if (readingUp == LOW && previousUp == HIGH && millis() - time > 200) {
time = millis();
i++;
if (i > 9) {
i = 0;
}
turnOff();
}
previousUp = readingUp;
// Switch Down
bool readingDown = digitalRead(switchDown);
showNumber(i);
if (readingDown == LOW && previousDown == HIGH && millis() - time > 200) {
time = millis();
i--;
if (i < 0) {
i = 9;
}
turnOff();
}
previousDown = readingDown;
}

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);
}
}

Jika anda mengikuti tulisan saya dari yang paling awal, hingga sampai di sini, mungkin anda merasakan kalau makin ke sini semakin sulit. Ya, memang kita harus memulai dari yang simpel terlebih dahulu untuk dapat memahami ke tahap selanjutnya. Demikin pula untuk project selanjutnya akan semakin rumit lagi tetapi semakin menarik. Penjelasannya mungkin sedikit, itu karena penjelasan yang lebih lengkapnya terdapat pada tulisan sebelumnya. Jadi, tiap tulisan saling berhubungan.

Sekian isi tulisan kali ini. Terimakasih telah membaca, semoga bermanfaat. Jika ada kritik dan saran, silahkan tuliskan pada komentar, atau mungkin ingin me-request tulisan untuk project selanjutnya juga bisa. Asalkan bahan yang tersedia cukup. Ya, karena ini masihlah lab mini yang dibiayai dengan biaya sendiri. OK, jangan lupa ikuti terus perkembangan tulisan dari lab mini ini.