//7 Segments --->> Common Anode
#define SW_UP 9
#define SW_DOWN 10
#define SW_RESET 11
#define BUZZER 12
const int SEGMENT_PIN[7] = {2, 3, 4, 5, 6, 7, 8};
bool digit[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, //Angka 0
{0, 1, 1, 0, 0, 0, 0}, //Angka 1
{1, 1, 0, 1, 1, 0, 1}, //Angka 2
{1, 1, 1, 1, 0, 0, 1}, //Angka 3
{0, 1, 1, 0, 0, 1, 1}, //Angka 4
{1, 0, 1, 1, 0, 1, 1}, //Angka 5
{1, 0, 1, 1, 1, 1, 1}, //Angka 6
{1, 1, 1, 0, 0, 0, 0}, //Angka 7
{1, 1, 1, 1, 1, 1, 1}, //Angka 8
{1, 1, 1, 1, 0, 1, 1} //Angka 9
};
int val = 0;
void setup() {
Serial.begin(9600);
pinMode(SW_UP, INPUT_PULLUP);
pinMode(SW_DOWN, INPUT_PULLUP);
pinMode(SW_RESET, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT);
for (int i = 0; i < 7; i++) pinMode(SEGMENT_PIN[i], OUTPUT);
for (int i = 0; i < 7; i++) digitalWrite(SEGMENT_PIN[i], HIGH);
}
void loop() {
displayDIGIT(val);
if (digitalRead(SW_UP) == 0 && val < 9) {
tone(BUZZER, 2500);
while (digitalRead(SW_UP) == 0) {}
noTone(BUZZER);
val++;
}
if (digitalRead(SW_DOWN) == 0 && val > 0) {
tone(BUZZER, 2400);
while (digitalRead(SW_DOWN) == 0) {}
noTone(BUZZER);
val--;
}
if (digitalRead(SW_RESET) == 0) {
tone(BUZZER, 2300);
while (digitalRead(SW_RESET) == 0) {}
noTone(BUZZER);
val = 0;
}
}
void displayDIGIT(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(SEGMENT_PIN[i], 1 - digit[num][i]);
}
}