Button1 works if only I rem out button2 instructions... Button2 works only if I rem out Button1... I've spent a lot of hours trying... what am I missing here? help!
// Button 1: 3 Press ON, 3 Press OFF, Button 2: 1 Press ON, 1 Press OFF
// 2022 by Jerry Tucker
#define button1 1 //Push button1 on D1
#define button2 2 //Push button2 on D2
#define redLED 0 //red LED on D0
#define relay1 3 //relay1 on D3
#define relay2 4 //relay2 on D4
//-----
int button1state = 0; //integer to hold current state
int button1old = 0; //integer to hold last state
int button1Poll = 0; //integer to hold button state
//-----
int button2state = 0; //integer to hold current state
int button2old = 0; //integer to hold last state
int button2Poll = 0; //integer to hold button state
//-----
void setup() {
pinMode(button1, INPUT_PULLUP); //button1 set as input
pinMode(relay1, OUTPUT); //relay1 set as output
pinMode(button2, INPUT_PULLUP); //button2 set as input
pinMode(redLED, OUTPUT); //redLED as output
pinMode(relay2, OUTPUT); //relay2 as output
digitalWrite(redLED, LOW); //set initial state as ON
digitalWrite(relay1, HIGH); //set initial state as OFF
digitalWrite(relay2, HIGH); //set initial state as OFF
}
//Button 1 instructions:
void loop() {
//debouncing routine to read button1
button1Poll = digitalRead(button1); //poll the state of button1
if (button1Poll == 1) { //check if it has been pressed
delay(100); //wait 100ms
button1Poll = digitalRead(button1); //poll button1 again
if (button1Poll == 0) { // if 0 - considered one press
button1state = button1old + 1; //increase state by 1
}
} else { //if button1 has not been pressed
delay(100); //wait 100ms
}
switch (button1state) { //react to button1 press & state
case 1: //if button1state is 1
digitalWrite(redLED, LOW); //red LED off
digitalWrite(relay1, HIGH); //relay1 on
button1old = button1state; //set old state to state
break;
case 2:
digitalWrite(redLED, LOW);
digitalWrite(relay1, HIGH);
button1old = button1state;
break;
case 3:
digitalWrite(redLED, HIGH);
digitalWrite(relay1, LOW);
button1old = button1state;
break;
case 4:
digitalWrite(redLED, HIGH);
digitalWrite(relay1, LOW);
button1old = button1state;
break;
case 5:
digitalWrite(redLED, HIGH);
digitalWrite(relay1, LOW);
button1old = button1state;
break;
case 6:
digitalWrite(redLED, LOW);
digitalWrite(relay1, HIGH);
button1old = 0; //set old state to zero
break;
default: //if state is not 1-5
digitalWrite(redLED, LOW); //redLED ON
digitalWrite(relay1, HIGH);
button1old = 0; //reset relay1 to off
break;
}
//Button 2 instructions:
//debouncing routine to read button2
button2Poll = digitalRead(button2); //poll the state of button2
if (button2Poll == 1) { //check if it has been pressed
delay(100); //wait 100ms
button2Poll = digitalRead(button2); //poll button again
if (button2Poll == 0) { // if 0 - considered one press
button2state = button2old + 1; //increase state by 1
}
} else { //if button2 has not been pressed
delay(100); //wait 100ms
}
switch (button2state) { //react to button2 press & state
case 1: //if button2state is 1
//digitalWrite(redLED, HIGH); //red LED off
digitalWrite(relay2, LOW); //relay2 on
button2old = button2state; //set old state to state
break;
case 2:
//digitalWrite(redLED, LOW);
digitalWrite(relay2, HIGH);
button2old = 0; //set old state to zero
break;
default: //if state is not 1
digitalWrite(relay2, HIGH); //reset relay2 to off
button2old = 0;
break;
}
}