Hi I try to set up relay to be switch on and off, with push-button and it don't work as it should. Sometime it's works ok and other time it don't turn on when is button pushed other time don't switch off.
Please help me with a code
#define BUTON_PIN1 0
#define BUTON_PIN2 2
#define BUTON_PIN3 15
#define RELAY_PIN1 32
#define RELAY_PIN2 33
#define RELAY_PIN3 25
boolean oldState = HIGH;
int mode = 0;
void setup(){
pinMode(RELAY_PIN1, OUTPUT);
pinMode(RELAY_PIN2,OUTPUT);
pinMode(RELAY_PIN3,OUTPUT);
pinMode(BUTON_PIN1 ,INPUT_PULLUP);
pinMode(BUTON_PIN2 , INPUT_PULLUP);
pinMode(BUTON_PIN3 , INPUT_PULLUP);
digitalWrite(RELAY_PIN1 , LOW);
digitalWrite(RELAY_PIN2 , LOW);
digitalWrite(RELAY_PIN3 , LOW);
}
void loop() {{{
boolean newState = digitalRead(BUTON_PIN1);
if((newState == LOW) && (oldState == HIGH)) {
delay(0);
newState = digitalRead(BUTON_PIN1);
if(newState == LOW) {
if(++mode > 1) mode = 0;
switch(mode) {
case 0:
digitalWrite(RELAY_PIN1, HIGH);
break;
case 1:
digitalWrite(RELAY_PIN1, LOW);
break;
case 2:
digitalWrite( RELAY_PIN1, HIGH);
break;
}
}
}
oldState = newState;
}
boolean newState = digitalRead(BUTON_PIN2);
if((newState == LOW) && (oldState == HIGH)) {
delay(0);
newState = digitalRead(BUTON_PIN2);
if(newState == LOW) {
if(++mode > 1) mode = 0;
switch(mode) {
case 0:
digitalWrite(RELAY_PIN2, LOW);
break;
case 1:
digitalWrite(RELAY_PIN2, HIGH);
break;
case 2:
digitalWrite(RELAY_PIN2, LOW);
break;
}
}
}
oldState = newState;
}
boolean newState = digitalRead(BUTON_PIN3);
if((newState == LOW) && (oldState == HIGH)) {
delay(0);
newState = digitalRead(BUTON_PIN3);
if(newState == LOW) {
if(++mode > 0) mode = 0;
switch(mode) {
case 0:
digitalWrite(RELAY_PIN3, LOW);
break;
case 1:
digitalWrite(RELAY_PIN3, HIGH);
break;
case 2:
digitalWrite(RELAY_PIN3, LOW);
break;
}
}
}
oldState = newState;
}