int green = 10;
int red = 11;
int yellow = 12;
int count = 0;
void setup() {
for (int i = 2; i < 10; i++) {
pinMode(i, OUTPUT);
}
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
}
void mati() {
for (int i = 2; i < 9; i++) {
digitalWrite(i, LOW);
}
}
void ular() {
// Definisikan beberapa pola ular yang berbeda
int pattern1[] = {2, 3, 8, 6, 5, 4, 8, 7};
int pattern2[] = {7, 6, 5, 4, 3, 2, 8};
int pattern3[] = {3, 5, 7, 2, 8, 6, 4};
int pattern4[] = {8, 7, 6, 5, 4, 3, 2};
int pattern5[] = {2, 4, 6, 8, 7, 5, 3};
// Tambahkan semua pola ke dalam array 2D
int* patterns[] = {pattern1, pattern2, pattern3, pattern4, pattern5};
int patternLengths[] = {8, 7, 7, 7, 7}; // Panjang setiap pola
// Tentukan berapa banyak pola yang akan digunakan
int numPatterns = sizeof(patterns) / sizeof(patterns[0]);
// Loop melalui setiap pola
for (int p = 0; p < numPatterns; p++) {
for (int i = 0; i < patternLengths[p]; i++) {
digitalWrite(patterns[p][i], HIGH);
delay(30); // Dipercepat menjadi 30ms
digitalWrite(patterns[p][i], LOW);
delay(30); // Dipercepat menjadi 30ms
}
}
}
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() {
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(500); // Dipercepat menjadi 500ms
}
} 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(500); // Dipercepat menjadi 500ms
}
}
count++;
if (count > 3) {
count = 0;
}
delay(1000); // Dipercepat menjadi 1000ms sebelum mode selanjutnya berjalan
}