const int light11 = 2, light12 = 3, light21 = 4, light22 = 5, light31 = 6, light32 = 7, light41 = 8, light42 = 9, lightStart = 10, buzzer = 11;
const int button1 = A0, button2 = A1, button3 = A2, button4 = A3;
const int startTone = 1760, tone1 = 262, tone2 = 330, tone3 = 392, tone4 = 523;
int score = 0;
int sDTime = 100;
int lDTime = 400;
int rando[8];
bool alive = LOW;
void setup() {
pinMode(light11, OUTPUT);
pinMode(light12, OUTPUT);
pinMode(light21, OUTPUT);
pinMode(light22, OUTPUT);
pinMode(light31, OUTPUT);
pinMode(light32, OUTPUT);
pinMode(light41, OUTPUT);
pinMode(light42, OUTPUT);
pinMode(lightStart, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
Serial.begin(9600);
pinMode(A4, INPUT);
randomSeed(analogRead(A4));
}
void loop() {
while (alive == HIGH){
rando[0] = random(4);
rando[1] = random(4);
rando[2] = random(4);
rando[3] = random(4);
rando[4] = random(4);
rando[5] = random(4);
rando[6] = random(4);
rando[7] = random(4);
if (score < 4){
pattern(2);
readpattern(2);
}
else if (score < 8){
pattern(4);
readpattern(4);
}
else if (score < 12){
pattern(8);
readpattern(8);
}
}
if (alive == LOW){
digitalWrite(lightStart, HIGH);
Serial.println("PRESS ANY BUTTON TO START!");
while(not(digitalRead(button1) == HIGH or digitalRead(button2) == HIGH or digitalRead(button3) == HIGH or digitalRead(button4) == HIGH)){}
digitalWrite(lightStart, HIGH);
tone(buzzer, startTone);
delay(sDTime);
digitalWrite(lightStart, LOW);
noTone(buzzer);
delay(lDTime);
alive = HIGH;
score = 0;
}
}
void pattern(int num){
for(int ctr = 0; ctr < num; ctr++){
if(rando[ctr] == 0){
digitalWrite(light12, HIGH);
tone(buzzer, tone1);
delay(sDTime);
digitalWrite(light12, LOW);
noTone(buzzer);
delay(lDTime);
}
if(rando[ctr] == 1){
digitalWrite(light22, HIGH);
tone(buzzer, tone2);
delay(sDTime);
digitalWrite(light22, LOW);
noTone(buzzer);
delay(lDTime);
}
if(rando[ctr] == 2){
digitalWrite(light32, HIGH);
tone(buzzer, tone3);
delay(sDTime);
digitalWrite(light32, LOW);
noTone(buzzer);
delay(lDTime);
}
if(rando[ctr] == 3){
digitalWrite(light42, HIGH);
tone(buzzer, tone4);
delay(sDTime);
digitalWrite(light42, LOW);
noTone(buzzer);
delay(lDTime);
}
}
digitalWrite(lightStart, HIGH);
tone(buzzer, startTone);
delay(sDTime);
digitalWrite(lightStart, LOW);
noTone(buzzer);
}
void readpattern(int num){
for(int ctr = 0; ctr < num; ctr++ && alive == HIGH){
while(not(digitalRead(button1) == HIGH or digitalRead(button2) == HIGH or digitalRead(button3) == HIGH or digitalRead(button4) == HIGH)){}
if(digitalRead(button1) == HIGH && rando[ctr] == 0){
digitalWrite(light11, HIGH);
tone(buzzer, tone1);
delay(sDTime);
digitalWrite(light11, LOW);
noTone(buzzer);
}
else if(digitalRead(button2) == HIGH && rando[ctr] == 1){
digitalWrite(light21, HIGH);
tone(buzzer, tone2);
delay(sDTime);
digitalWrite(light21, LOW);
noTone(buzzer);
}
else if(digitalRead(button3) == HIGH && rando[ctr] == 2){
digitalWrite(light31, HIGH);
tone(buzzer, tone3);
delay(sDTime);
digitalWrite(light31, LOW);
noTone(buzzer);
}
else if(digitalRead(button4) == HIGH && rando[ctr] == 3){
digitalWrite(light41, HIGH);
tone(buzzer, tone4);
delay(sDTime);
digitalWrite(light41, LOW);
noTone(buzzer);
}
else{
alive = LOW;
}
while(digitalRead(button1) == HIGH or digitalRead(button2) == HIGH or digitalRead(button3) == HIGH or digitalRead(button4) == HIGH){}
}
score++;
delay(sDTime);
digitalWrite(lightStart, HIGH);
tone(buzzer, startTone);
delay(sDTime);
digitalWrite(lightStart, LOW);
noTone(buzzer);
delay (lDTime);
Serial.println(score);
}
Comments