int leds[3] = {8, 9, 10};
int buttons[3] = {2, 3, 4};
int sequence[100];
int level = 1;
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(leds[i], OUTPUT);
pinMode(buttons[i], INPUT_PULLUP); // внутренний резистор
}
randomSeed(analogRead(0));
}
void showSequence() {
for (int i = 0; i < level; i++) {
int led = sequence[i];
digitalWrite(leds[led], HIGH);
delay(500);
digitalWrite(leds[led], LOW);
delay(300);
}
}
int readButton() {
while (true) {
for (int i = 0; i < 3; i++) {
if (digitalRead(buttons[i]) == LOW) { // нажата кнопка
delay(200); // антидребезг
return i;
}
}
}
}
void gameOver() {
for (int i = 0; i < 3; i++) {
digitalWrite(leds[i], HIGH);
}
delay(1000);
for (int i = 0; i < 3; i++) {
digitalWrite(leds[i], LOW);
}
level = 1;
}
void loop() {
sequence[level – 1] = random(0, 3);
showSequence();
for (int i = 0; i < level; i++) {
int input = readButton();
if (input != sequence[i]) {
gameOver();
return;
}
}
level++;
delay(800);
}