#define PB_UP 13
#define PB_DOWN 12
#define PB_RESET 11
//7 Segments
#define SEGMENT_A 2
#define SEGMENT_B 3
#define SEGMENT_C 4
#define SEGMENT_D 5
#define SEGMENT_E 6
#define SEGMENT_F 7
#define SEGMENT_G 8
int value = 0;
void setup() {
Serial.begin(9600);
pinMode(SEGMENT_A, OUTPUT);
pinMode(SEGMENT_B, OUTPUT);
pinMode(SEGMENT_C, OUTPUT);
pinMode(SEGMENT_D, OUTPUT);
pinMode(SEGMENT_E, OUTPUT);
pinMode(SEGMENT_F, OUTPUT);
pinMode(SEGMENT_G, OUTPUT);
pinMode(PB_UP, INPUT);
pinMode(PB_DOWN, INPUT);
pinMode(PB_RESET, INPUT_PULLUP);
}
void loop() {
if (digitalRead(PB_UP) == 0 && value < 9) {
while(digitalRead(PB_UP) == 0) {}
value += 1;
}
if (digitalRead(PB_DOWN) == 1 && value > 0) {
delay(300);
value -= 1;
}
if (digitalRead(PB_RESET) == 0) {
delay(300);
value = 0;
}
displayDIGIT(value);
Serial.println(value);
}
void displayDIGIT(int angka) {
switch (angka) {
case 1:
digitalWrite(SEGMENT_A, 1);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 1);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 1);
digitalWrite(SEGMENT_G, 1);
break;
case 2:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 1);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 0);
digitalWrite(SEGMENT_F, 1);
digitalWrite(SEGMENT_G, 0);
break;
case 3:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 1);
digitalWrite(SEGMENT_G, 0);
break;
case 4:
digitalWrite(SEGMENT_A, 1);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 1);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 0);
break;
case 5:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 1);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 0);
break;
case 6:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 1);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 0);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 0);
break;
case 7:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 1);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 1);
digitalWrite(SEGMENT_G, 1);
break;
case 8:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 0);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 0);
break;
case 9:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 1);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 0);
break;
default:
digitalWrite(SEGMENT_A, 0);
digitalWrite(SEGMENT_B, 0);
digitalWrite(SEGMENT_C, 0);
digitalWrite(SEGMENT_D, 0);
digitalWrite(SEGMENT_E, 0);
digitalWrite(SEGMENT_F, 0);
digitalWrite(SEGMENT_G, 1);
break;
}
}