int green = 10;
int red = 11;
int yellow = 12;
int buttonState = 0;
int buttonPin = 13;
int count;
void setup() {
for (int i = 2; i < 10; i++) {
pinMode(i, OUTPUT);
}
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
pinMode(buttonPin, INPUT);
}
void mati() {
for (int i = 2; i < 9; i++) {
digitalWrite(i, LOW);
}
}
void ular() {
int pattern[] = {2, 3, 8, 6, 5, 4, 8, 7};
for (int i = 0; i < 8; i++) {
digitalWrite(pattern[i], HIGH);
delay(60);
digitalWrite(pattern[i], LOW);
delay(60);
}
}
int digitPins[][7] = {
{3, 4},
{2, 3, 5, 6, 8},
{2, 3, 4, 5, 8},
{3, 4, 7, 8},
{2, 4, 5, 7, 8},
{2, 4, 5, 6, 7, 8},
{2, 3, 4},
{2, 3, 4, 5, 6, 7, 8},
{2, 3, 4, 5, 7, 8}
};
void angka(int digit) {
mati();
if (digit >= 1 && digit <= 9) {
for (int i = 0; i < sizeof(digitPins[digit - 1]) / sizeof(int); i++) {
int pin = digitPins[digit - 1][i];
digitalWrite(pin, HIGH);
}
}
}
void loop() {
buttonState = digitalRead(buttonPin);
// tombolnya pencet cepat-cepat agar pindah mode
if (buttonState == 1) {
count++;
delay(200);
} else if (buttonState == 2) {
count++;
delay(200);
} else if (buttonState == 3) {
count++;
delay(200);
}
if (count == 0) {
mati();
digitalWrite(green, LOW);
digitalWrite(yellow, LOW);
digitalWrite(red, LOW);
} else if (count == 1) {
ular();
} else if (count == 2) {
for (int i = 1; i <= 9; i++) {
angka(i);
if (i >= 1 && i <= 4) {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
} else if (i >= 5 && i <= 7) {
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
} else {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
}
delay(1000);
}
} else if (count == 3) {
for (int i = 9; i >= 1; i--) {
angka(i);
if (i >= 6 && i <= 9) {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
} else if (i >= 3 && i <= 5) {
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
} else {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
}
delay(1000);
}
} else if (count > 3) {
count = 0;
mati();
digitalWrite(green, LOW);
digitalWrite(yellow, LOW);
digitalWrite(red, LOW);
}
}