#define buzzerPin 9 //the buzzer attach to
const int player1button = 14;
const int player2button = 15;
const int player3button = 16;
const int player4button = 17;
const int pressallowed = 19;
const int reset = 18;
const int player1led = 5;
const int player2led = 4;
const int player3led = 3;
const int player4led = 2;
int button1State = 0;
int button2State = 0;
int button3State = 0;
int button4State = 0;
void setup() {
//define pinmodes
pinMode(player1button, INPUT);
pinMode(player2button, INPUT);
pinMode(player3button, INPUT);
pinMode(player4button, INPUT);
pinMode(pressallowed, INPUT);
pinMode(reset, INPUT);
pinMode(player1led, OUTPUT);
pinMode(player2led, OUTPUT);
pinMode(player3led, OUTPUT);
pinMode(player4led, OUTPUT);
pinMode(buzzerPin, OUTPUT);
//startup animation of the LEDS
digitalWrite(player1led, HIGH);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, HIGH);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, LOW);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
}
void loop() {
//read digital inputs
button1State = digitalRead(player1button);
button2State = digitalRead(player2button);
button3State = digitalRead(player3button);
button4State = digitalRead(player4button);
//declare playerstatus
static boolean player1win = false;
static boolean player2win = false;
static boolean player3win = false;
static boolean player4win = false;
// detect who pushes first
if (button1State == HIGH && player2win == false && player3win == false && player4win == false) {
Alarm();
digitalWrite(player1led, HIGH);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
player1win = true;
}
if (button2State == HIGH && player1win == false && player3win == false && player4win == false ) {
Alarm();
digitalWrite(player1led, LOW);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
player2win = true;
}
if (button3State == HIGH && player1win == false && player2win == false && player4win == false ) {
Alarm();
digitalWrite(player1led, LOW);
digitalWrite(player2led, LOW);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, LOW);
player3win = true;
}
if (button4State == HIGH && player1win == false && player2win == false && player3win == false ) {
Alarm();
digitalWrite(player1led, LOW);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, HIGH);
player4win = true;
}
//When the reset is pushed:
//Reset the winning player
if (digitalRead(reset) == HIGH) {
//P.displayClear();
player1win = false;
player2win = false;
player3win = false;
player4win = false;
//And play a short animation on the LED to show that the buttons have been reset.
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, HIGH);
delay(200);
digitalWrite(player1led, LOW);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(200);
digitalWrite(player1led, HIGH);
digitalWrite(player2led, HIGH);
digitalWrite(player3led, HIGH);
digitalWrite(player4led, HIGH);
delay(200);
digitalWrite(player1led, LOW);
digitalWrite(player2led, LOW);
digitalWrite(player3led, LOW);
digitalWrite(player4led, LOW);
delay(1000);
}
}
void Alarm() {
for(int i=0; i<100; i++){
digitalWrite(buzzerPin,HIGH);
delay(2);
digitalWrite(buzzerPin,LOW);
delay(2);
}
}