Pin setup:
#define Player1 6
#define Player2 9
#define Player3 10
#define Player4 11
#define Player1But A1
#define Player2But A2
#define Player3But A3
#define Player4But A4
#define Sound 13
boolean state1 = false;
boolean state2 = false;
boolean state3 = false;
boolean state4 = false;
void setup(){
Serial.begin(9600);
pinMode(Player1, OUTPUT);
pinMode(Player2, OUTPUT);
pinMode(Player3, OUTPUT);
pinMode(Player4, OUTPUT);
pinMode(Sound, OUTPUT);
}
void loop(){
int alarmCount = 0;
while(alarmCount < 1000){
// Some other code running
alarmCount++;
}
while(alarmCount >= 1000){
pwmAll();
}
}
Makes the LED's go from LOW to HIGH and vice versa.
void pwmAll(){
for(int i = 0; i < 255; i+=10) {
if(checkState(Player1But, state1) == false){analogWrite(Player1,i);}
if(checkState(Player2But, state2) == false){analogWrite(Player2,i);}
if(checkState(Player3But, state3) == false){analogWrite(Player3,i);}
if(checkState(Player4But, state4) == false){analogWrite(Player4,i);}
lastPushed();
delay(5);
}
alarmSound(true);
for (int i = 255;i > 0; i-=10){
if(checkState(Player1But, state1) == false){analogWrite(Player1, i);}
if(checkState(Player2But, state2) == false){analogWrite(Player2, i);}
if(checkState(Player3But, state3) == false){analogWrite(Player3, i);}
if(checkState(Player4But, state4) == false){analogWrite(Player4, i);}
lastPushed();
delay(5);
}
analogWrite(Player1, 0);
analogWrite(Player2, 0);
analogWrite(Player3, 0);
analogWrite(Player4, 0);
alarmSound(true);
}
void alarmSound(boolean state){
if(state == true){
tone(Sound, 200);
delay(175);
noTone(Sound);
}
}
boolean checkState(int pin, boolean state){
if(analogRead(pin) > 5){
state = true;
analogWrite(pin,LOW);
return true;
}
else {
state = false;
return false;
}
}
boolean lastPushed(){
if(state1 == true && state2 == true && state3 == true){
analogWrite(Player1, LOW);
analogWrite(Player2, LOW);
analogWrite(Player3, LOW);
analogWrite(Player4, HIGH);
delay(5000);
}
if(state1 == true && state2 == true && state4 == true){
analogWrite(Player1, LOW);
analogWrite(Player2, LOW);
analogWrite(Player4, LOW);
analogWrite(Player3, HIGH);
delay(5000);
}
if(state1 == true && state3 == true && state4 == true){
analogWrite(Player1, LOW);
analogWrite(Player3, LOW);
analogWrite(Player4, LOW);
analogWrite(Player2, HIGH);
delay(5000);
}
if(state2 == true && state3 == true && state4 == true){
analogWrite(Player2, LOW);
analogWrite(Player3, LOW);
analogWrite(Player4, LOW);
analogWrite(Player1, HIGH);
delay(5000);
}
}
This is all the necessary code. And this is how I thought it could work, but it doesn't work as I want to.
By the way, I am usinge Arduino Leonardo Atmega32u4.