#include <Arduino.h>
// Definisi Pin 7-Segment
const int pinA = 7;
const int pinB = 6;
const int pinC = 5;
const int pinD = 10;
const int pinE = 11;
const int pinF = 8;
const int pinG = 9;
const int pinDP = 4;
// Definisi Pin Tombol
const int tombolMaju = 12;
const int tombolMundur = 13;
// Definisi pin Buzzer
const int pinBuzzer=3;
// Variabel Logika Utama
int angkaSekarang = 0;
void clearDisplay() {
digitalWrite(pinA, LOW); digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW); digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW); digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW); digitalWrite(pinDP, LOW);
}
void tampilkanAngka(int num) {
clearDisplay();
switch (num) {
case 0: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); digitalWrite(pinE, HIGH); digitalWrite(pinF, HIGH); break;
case 1: digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); break;
case 2: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinG, HIGH); digitalWrite(pinE, HIGH); digitalWrite(pinD, HIGH); break;
case 3: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinG, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); break;
case 4: digitalWrite(pinF, HIGH); digitalWrite(pinG, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); break;
case 5: digitalWrite(pinA, HIGH); digitalWrite(pinF, HIGH); digitalWrite(pinG, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); break;
case 6: digitalWrite(pinA, HIGH); digitalWrite(pinF, HIGH); digitalWrite(pinG, HIGH); digitalWrite(pinE, HIGH); digitalWrite(pinD, HIGH); digitalWrite(pinC, HIGH); break;
case 7: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); break;
case 8: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); digitalWrite(pinE, HIGH); digitalWrite(pinF, HIGH); digitalWrite(pinG, HIGH); break;
case 9: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); digitalWrite(pinF, HIGH); digitalWrite(pinG, HIGH); break;
}
}
void setup() {
// buzzer
pinMode(pinBuzzer, OUTPUT);
// Inisialisasi pin output untuk 7-Segment
int outPins[] = {pinA, pinB, pinC, pinD, pinE, pinF, pinG, pinDP};
for (int i = 0; i < 8; i++) pinMode(outPins[i], OUTPUT);
// Menggunakan Pull-up internal untuk keamanan dan efisiensi sirkuit
pinMode(tombolMaju, INPUT_PULLUP);
pinMode(tombolMundur, INPUT_PULLUP);
tampilkanAngka(angkaSekarang);
}
void loop() {
// 1. Logika Tombol MAJU (Pin 12)
if (digitalRead(tombolMaju) == LOW) {
delay(50); // Meredam noise mekanis (Debounce)
if (digitalRead(tombolMaju) == LOW) {
digitalWrite(pinBuzzer,HIGH);
delay(100);
digitalWrite(pinBuzzer,LOW);
angkaSekarang++;
if (angkaSekarang > 9) angkaSekarang = 0;
tampilkanAngka(angkaSekarang);
// Mengunci eksekusi loop hingga tombol benar-benar dilepas
while(digitalRead(tombolMaju) == LOW);
digitalWrite(pinBuzzer,HIGH);
delay(500);
}
}
// 2. Logika Tombol MUNDUR (Pin 13)
if (digitalRead(tombolMundur) == LOW) {
delay(50); // Meredam noise mekanis (Debounce)
if (digitalRead(tombolMundur) == LOW) {
digitalWrite(pinBuzzer,HIGH);
delay(100);
digitalWrite(pinBuzzer,LOW);
angkaSekarang--;
if (angkaSekarang < 0) angkaSekarang = 9;
tampilkanAngka(angkaSekarang);
// Mengunci eksekusi loop hingga tombol benar-benar dilepas
while(digitalRead(tombolMundur) == LOW);
}
}
}