i am making a rock paper scissors game with arduino it is 2 players. both players use 3 buttons to choose an led and then after that it tells them who won by lighting up a seperate led and then turns all leds off. I tested my code but all that happens is that some of the leds flicker while others just stay off. And my buttons (momentary spst switches) dont seem to do anything. Any help is appreciated. Here is the code.
const int p1rock = 13;
const int p1paper = 12;
const int p1scissors = 11;
const int p2rock = 10;
const int p2paper = 9;
const int p2scissors = 8;
const int p1rockbutton = 7;
const int p1paperbutton = 6;
const int p1scissorsbutton = 5;
const int p2rockbutton = 4;
const int p2paperbutton = 3;
const int p2scissorsbutton = 2;
const int p2win = 24;
const int p1win = 25;
int p1rockbuttonState = 0;
int p1paperbuttonState = 0;
int p1scissorsbuttonState = 0;
int p2rockbuttonState = 0;
int p2paperbuttonState = 0;
int p2scissorsbuttonState = 0;
int p1rockState = LOW;
int p1paperState = LOW;
int p1scissorsState = LOW;
int p2rockState = LOW;
int p2paperState = LOW;
int p2scissorsState = LOW;
int p2winState = LOW;
int p1winState = LOW;
long p1rockpreviousMillis = 0;
long p1paperpreviousMillis = 0;
long p1scissorspreviousMillis = 0;
long p2rockpreviousMillis = 0;
long p2paperpreviousMillis = 0;
long p2scissorspreviousMillis = 0;
long p2winpreviousMillis = 0;
long p1winpreviousMillis = 0;
long p1rockinterval = 1000;
long p1paperinterval = 1000;
long p1scissorsinterval = 1000;
long p2rockinterval = 1000;
long p2paperinterval = 1000;
long p2scissorsinterval = 1000;
long p2wininterval = 1000;
long p1wininterval = 1000;
void setup() {
pinMode(p1rock, OUTPUT);
pinMode(p1paper, OUTPUT);
pinMode(p1scissors, OUTPUT);
pinMode(p2rock, OUTPUT);
pinMode(p2paper, OUTPUT);
pinMode(p2scissors, OUTPUT);
pinMode(p1win, OUTPUT);
pinMode(p2win, OUTPUT);
pinMode(p1rockbutton , INPUT);
pinMode(p1paperbutton , INPUT);
pinMode(p1scissorsbutton , INPUT);
pinMode(p2rockbutton , INPUT);
pinMode(p2paperbutton , INPUT);
pinMode(p2scissorsbutton , INPUT);
}
void loop() {
p1rockbuttonState = digitalRead(p1rockbutton);
p1paperbuttonState = digitalRead(p1paperbutton);
p1scissorsbuttonState = digitalRead(p1scissorsbutton);
p2rockbuttonState = digitalRead(p2rockbutton);
p2paperbuttonState = digitalRead(p2paperbutton);
p2scissorsbuttonState = digitalRead(p2scissorsbutton);
unsigned long p1rockcurrentMillis = millis();
unsigned long p1papercurrentMillis = millis();
unsigned long p1scissorscurrentMillis = millis();
unsigned long p2rockcurrentMillis = millis();
unsigned long p2papercurrentMillis = millis();
unsigned long p2scissorscurrentMillis = millis();
unsigned long p2wincurrentMillis = millis();
unsigned long p1wincurrentMillis = millis();
if(p1rockbuttonState == HIGH) {
if(p1rockcurrentMillis - p1rockpreviousMillis > p1rockinterval) {
p1rockpreviousMillis = p1rockcurrentMillis;
if (p1rockState == LOW)
p1rockState = HIGH;
else
p1rockState = LOW;
digitalWrite(p1rock, p1rockState);
}
}
if(p1paperbuttonState == HIGH) {
if(p1papercurrentMillis - p1paperpreviousMillis > p1paperinterval) {
p1paperpreviousMillis = p1papercurrentMillis;
if (p1paperState == LOW)
p1paperState = HIGH;
else
p1paperState = LOW;
digitalWrite(p1paper, p1paperState);
}
}
if(p1scissorsbuttonState == HIGH) {
if(p1scissorscurrentMillis - p1scissorspreviousMillis > p1scissorsinterval) {
p1scissorspreviousMillis = p1scissorscurrentMillis;
if (p1scissorsState == LOW)
p1scissorsState = HIGH;
else
p1scissorsState = LOW;
digitalWrite(p1scissors, p1scissorsState);
}
}
if(p2rockbuttonState == HIGH) {
if(p2rockcurrentMillis - p2rockpreviousMillis > p2rockinterval) {
p2rockpreviousMillis = p2rockcurrentMillis;
if (p2rockState == LOW)
p2rockState = HIGH;
else
p2rockState = LOW;
digitalWrite(p2rock, p2rockState);
}
}
if(p2paperbuttonState == HIGH) {
if(p2papercurrentMillis - p2paperpreviousMillis > p2paperinterval) {
p2paperpreviousMillis = p2papercurrentMillis;
if (p2paperState == LOW)
p2paperState = HIGH;
else
p2paperState = LOW;
digitalWrite(p2paper, p2paperState);
}
}
if(p2scissorsbuttonState == HIGH) {
if(p2scissorscurrentMillis - p2scissorspreviousMillis > p2scissorsinterval) {
p2scissorspreviousMillis = p2scissorscurrentMillis;
if (p2scissorsState == LOW)
p2scissorsState = HIGH;
else
p2scissorsState = LOW;
digitalWrite(p2scissors, p2scissorsState);
}
}
if(p1rock == HIGH && p2rock == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, HIGH);
}
else if(p1paper == HIGH && p2paper == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, HIGH);
}
else if(p1scissors == HIGH && p2scissors == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, HIGH);
}
else if(p1rock == HIGH && p2scissors == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, LOW);;
}
else if(p1paper == HIGH && p2rock == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, LOW);
}
else if(p1scissors == HIGH && p2paper == HIGH) {
digitalWrite(p1win, HIGH);
digitalWrite(p2win, LOW);
}
else if(p2rock == HIGH && p1scissors == HIGH) {
digitalWrite(p2win, HIGH);
digitalWrite(p1win, LOW);
}
else if(p2paper == HIGH && p1rock == HIGH) {
digitalWrite(p2win, HIGH);
digitalWrite(p1win, LOW);
}
else if(p2scissors == HIGH && p1paper == HIGH) {
digitalWrite(p2win, HIGH);
digitalWrite(p1win, LOW);
}
else {
digitalWrite(p2win, LOW);
digitalWrite(p1win, LOW);
}
if (p1win > 0 || p2win > 0) {
digitalWrite(p1rock, LOW);
digitalWrite(p1paper, LOW);
digitalWrite(p1scissors, LOW);
digitalWrite(p2rock, LOW);
digitalWrite(p2paper, LOW);
digitalWrite(p2scissors, LOW);
digitalWrite(p1win, LOW);
digitalWrite(p2win, LOW);
}
}