I'm currently working on a project that requires that I simultanously check the state of two buttons. Each button HIGH state is assigned to one if loop. Here's the basic concept:
void loop() {
S1_State = digitalRead(S1_Pin);
S2_State = digitalRead(S2_Pin);
ButtonPRESSED = false;
P1_Time = random(2000, 5000);
delay(P1_Time);
digitalWrite(P1_Pin, HIGH);
while(ButtonPRESSED == false) {
if (S1_State == HIGH) {
Serial.print("Player 1 wins");
Serial.print("");
digitalWrite(P1_Pin, LOW);
ButtonPRESSED = true;
delay(5000); }
if (S2_State == HIGH) {
Serial.print("Player 2 wins");
Serial.print("");
digitalWrite(P1_Pin, LOW);
ButtonPRESSED = true;
delay(5000); }
void loop() {
S1_State = digitalRead(S1_Pin);
S2_State = digitalRead(S2_Pin);
ButtonPRESSED = false;
P1_Time = random(2000, 5000);
delay(P1_Time);
digitalWrite(P1_Pin, HIGH);
while(ButtonPRESSED == false) {
if (S1_State == HIGH) {
Serial.print("Player 1 wins");
Serial.print("");
digitalWrite(P1_Pin, LOW);
ButtonPRESSED = true;
delay(5000); }
if (S2_State == HIGH) {
Serial.print("Player 2 wins");
Serial.print("");
digitalWrite(P1_Pin, LOW);
ButtonPRESSED = true;
delay(5000); }
The problem is that checking for the button states this way requires that the S1_State loop has to be read before the S2_State loop, thus giving player 1 an advantage. Although I'm not sure how pronounced this issue is in practice, it certainly was noticable when I was first trying this project out through python code on a Pi through similar means.
Is it possible check the conditions to both if loops simultanously? If not, are there other ways to circumvent this problem?