עוד
עוד
#define YELLOW_LED 9
#define GREEN_LED 10
#define RED_LED 11
#define BLUE_LED 12
#define YELLOW_BTN 2
#define GREEN_BTN 3
#define RED_BTN 4
#define BLUE_BTN 5
int sequence[100];
int level = 0;
void setup() {
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(YELLOW_BTN, INPUT_PULLUP);
pinMode(GREEN_BTN, INPUT_PULLUP);
pinMode(RED_BTN, INPUT_PULLUP);
pinMode(BLUE_BTN, INPUT_PULLUP);
randomSeed(analogRead(A0));
nextRound();
}
void loop() {
for (int i = 0; i < level; i++) {
int btn = waitForButton();
if (btn != sequence[i]) {
gameOver();
return;
}
}
delay(500);
nextRound();
}
void nextRound() {
sequence[level] = random(0, 4);
level++;
for (int i = 0; i < level; i++) {
showColor(sequence[i]);
delay(300);
}
}
int waitForButton() {
while (true) {
if (!digitalRead(YELLOW_BTN)) {
showColor(0);
return 0;
}
if (!digitalRead(GREEN_BTN)) {
showColor(1);
return 1;
}
if (!digitalRead(RED_BTN)) {
showColor(2);
return 2;
}
if (!digitalRead(BLUE_BTN)) {
showColor(3);
return 3;
}
}
}
void showColor(int color) {
int led;
if (color == 0) led = YELLOW_LED;
if (color == 1) led = GREEN_LED;
if (color == 2) led = RED_LED;
if (color == 3) led = BLUE_LED;
digitalWrite(led, HIGH);
delay(400);
digitalWrite(led, LOW);
}
void gameOver() {
for (int i = 0; i < 3; i++) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(BLUE_LED, HIGH);
digitalWrite(YELLOW_LED, HIGH);
delay(200);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
delay(200);
}
level = 0;
delay(500);
nextRound();
}