const int centerLED = 4;
const int player1Button = 5;
const int player1LED = 2;
const int player2Button = 6;
const int player2LED = 3;
int player1Score = 0;
int player2Score = 0;
int cycles = 0;
int randomTime = 0;
int reactionTime1 = 0;
int reactionTime2 = 0;
void setup() {
pinMode(centerLED, OUTPUT);
pinMode(player1Button, INPUT_PULLUP);
pinMode(player1LED, OUTPUT);
pinMode(player2Button, INPUT_PULLUP);
pinMode(player2LED, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
if (cycles < 20) {
randomTime = random(1000, 5000);
digitalWrite(centerLED, LOW);
delay(randomTime);
digitalWrite(centerLED, HIGH);
reactionTime1 = 0;
reactionTime2 = 0;
while (digitalRead(player1Button) == HIGH && digitalRead(player2Button) == HIGH) {
delay(1);
}
if (digitalRead(player1Button) == LOW) {
digitalWrite(player1LED, HIGH);
player1Score++;
reactionTime1 = millis() - (randomTime + 1000);
}
if (digitalRead(player2Button) == LOW) {
digitalWrite(player2LED, HIGH);
player2Score++;
reactionTime2 = millis() - (randomTime + 1000);
}
delay(500);
digitalWrite(player1LED, LOW);
digitalWrite(player2LED, LOW);
Serial.print("Cycle: ");
Serial.print(cycles + 1);
Serial.print(", Player 1 score: ");
Serial.print(player1Score);
Serial.print(", Reaction Time: ");
Serial.print(reactionTime1);
Serial.print(", Player 2 score: ");
Serial.print(player2Score);
Serial.print(", Reaction Time: ");
Serial.println(reactionTime2);
cycles++;
} else {
if (player1Score > player2Score) {
for (int i = 0; i < 5; i++) {
digitalWrite(player1LED, HIGH);
delay(250);
digitalWrite(player1LED, LOW);
delay(250);
}
} else if (player2Score > player1Score) {
for (int i = 0; i < 5; i++) {
digitalWrite(player2LED, HIGH);
delay(250);
digitalWrite(player2LED, LOW);
delay(250);
}
}
while (1) {
delay(180);
}
}
}