Color Press
#define R 11
#define G 10
#define B 9
#define lR 2
#define lG 5
#define lB 6
#define b1 A0
#define b2 A1
#define b3 A2
#define b4 A3
#define b5 A4
#define buz 3
#define timerLen 10000
int count = 0;
void setup() {
int outputs[] = {R, G, B, lR, lG, lB, buz};
for (int i = 0; i < 7; i++){
pinMode(outputs[i], OUTPUT);
}
pinMode(b1, INPUT);
pinMode(b2, INPUT);
pinMode(b3, INPUT);
pinMode(b4, INPUT);
pinMode(b5, INPUT);
Serial.begin(9600);
Serial.println("Setup complete");
}
bool test(int light){
setLight(light);
long long int endTime = millis() + timerLen;
while (millis() < endTime && pressed() == -1){
continue;
}
return (millis() < endTime && pressed() == light);
}
void setLight(int light){
if (light == 0){
digitalWrite(lR, HIGH);
} else if (light == 1){
digitalWrite(lG, HIGH);
} else if (light == 2){
digitalWrite(lB, HIGH);
} else if (light == 3){
digitalWrite(lG, HIGH);
digitalWrite(lB, HIGH);
} else if (light == 4){
digitalWrite(lR, HIGH);
digitalWrite(lG, HIGH);
digitalWrite(lB, HIGH);
}
}
void allOff(){
int outputs[] = {R, G, B, lR, lG, lB};
for (int i = 0; i < 6; i++){
digitalWrite(outputs[i], LOW);
}
}
int pressed(){
int buttons[] = {b1, b2, b3, b4, b5};
for (int i = 0; i < 5; i++){
if(analogRead(buttons[i]) >= 512){
return i;
}
}
return -1;
}
void loop(){
randomSeed(analogRead(A5));
int light = random(0,5);
Serial.println(light);
bool gameState = test(light);
if (gameState == true){
count++;
if (count % 5 == 0){
win();
}
}
allOff();
toEncode(light);
}
void win(){
tone(buz, 2349, 250);
delay(250);
tone(buz, 2793, 250);
delay(250);
tone(buz, 3135, 250);
delay(250);
tone(buz, 3520, 250);
delay(250);
tone(buz, 3951, 250);
delay(250);
noTone(buz);
}
void toEncode(int light){
delay(3000);
if (analogRead(light) >= 512){
encode();
}
}
void encode(){
allOff();
if (count <= 10){
digitalWrite(R, HIGH);
} else if (count <= 20 && count > 10){
digitalWrite(G, HIGH);
} else if (count <= 30 && count > 20){
digitalWrite(B, HIGH);
} else if (count <= 40 && count > 30){
digitalWrite(R, HIGH);
digitalWrite(B, HIGH);
} else {
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, HIGH);
}
delay(5000);
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
}
.png)