iI want to add counter in multiple-buttons-to-control-relays // /// int relay1 = 23; int relay2 = 25; int relay3 = 27; int relay4 = 29; int relay5 = 31; int relay6 = 33; int relay7 = 35; int relay8 = 37; ////////////int mode = 41; // select mode AUTO/MANUAL if HIGH=AUTO else LOW=MANUAL //////////int start = 43; // select START/STOP auto mode //////////int tool = 13; // tool Sw int sw1 = 2; int sw2 = 4; int sw3 = 6; int sw4 = 8;
int sw5 = 3; //additional int sw6 = 5; int sw7 = 7; int sw8 = 9; ////////int modeState = 1; //modelState for //start stop and tool /////////int startState = 1; //start1State /////////int toolState = 1; int sw1Status, sw2Status, sw3Status, sw4Status,sw5Status, sw6Status, sw7Status, sw8Status; int order = 1; // default is to set all relays off. /// for counter////////////////////////////////////////////////// int val = 0; // variable for reading the pin status int counter = 0; int currentState = 0; int previousState = 0; //// for counter //////////////////////////////////////////////// void setup() { pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); pinMode(relay5, OUTPUT); pinMode(relay6, OUTPUT); pinMode(relay7, OUTPUT); pinMode(relay8, OUTPUT);
// input pull-up, so default state of buttons is HIGH. pinMode(sw1, INPUT_PULLUP); pinMode(sw2, INPUT_PULLUP); pinMode(sw3, INPUT_PULLUP); pinMode(sw4, INPUT_PULLUP); pinMode(sw5, INPUT_PULLUP); ///additional pinMode(sw6, INPUT_PULLUP); pinMode(sw7, INPUT_PULLUP); pinMode(sw8, INPUT_PULLUP); Serial.begin(9600); }
void loop() { // read the buttons status sw1Status = digitalRead(sw1); sw2Status = digitalRead(sw2); sw3Status = digitalRead(sw3); sw4Status = digitalRead(sw4); sw5Status = digitalRead(sw5); sw6Status = digitalRead(sw6); sw7Status = digitalRead(sw7); sw8Status = digitalRead(sw8); ///// tool state example ////if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW && toolState == HIGH) { //
if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW) { // if button 1 pressed order = 2; // go to case 2 start up state Serial.println("all switch off follow order 2"); } if (sw1Status == HIGH && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW) { // if button 2 pressed order = 3;// go to case 3 Serial.println("order 3 sw 1 relay 1 on"); } if (sw1Status == HIGH && sw2Status == LOW && sw3Status == LOW && sw4Status == HIGH) { // if button 3 pressed //// possible if (order != 5) { // if order is not equal 5 turn on relay 1 & 4 order = 4;// go to case 4 Serial.println(" order 4 sw 1,4 relay 1,7,8 on");
} if (sw1Status == HIGH && sw2Status == LOW && sw3Status == HIGH && sw4Status == LOW) { // if button 3 pressed order = 5;// go to case 5 Serial.println(" order 5 sw 2 3 on relay 1on now right down"); } if (sw1Status == LOW && sw2Status == HIGH && sw3Status == HIGH && sw4Status == LOW) { // if button 3 pressed order = 6;// go to case 6 Serial.println(" order 6 sw 3 and 2 on"); } if (sw1Status == LOW && sw2Status == HIGH && sw3Status == LOW && sw4Status == HIGH) { // if button 2 pressed order = 7;// go to case Serial.println(" order 7 "); } if (sw1Status == LOW && sw2Status == HIGH && sw3Status == HIGH && sw4Status == LOW && sw7Status == LOW) { // order = 8;// go to case Serial.println("orde 8 left side "); } if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw8Status == HIGH && sw8Status == LOW) { // order = 9;// go to case Serial.println(" spare order 9 sw 4 high"); }
if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW) { // button 4 toggle if (order != 10) { // if order is not equal Serial.println(" spare order 10 all off ");
order = 10;
}
else { // else go to case 1, which will turns off all relays
order = 1;
}
}
switch (order) { case 1: // if order equals 1 delay(200); digitalWrite(relay1, LOW); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); digitalWrite(relay4, HIGH); digitalWrite(relay5, HIGH); digitalWrite(relay6, HIGH); digitalWrite(relay7, HIGH); digitalWrite(relay8, HIGH); Serial.println("default start up ");
int relay1 break;= 23;
int relay2 = 25;
int relay3 = 27;
int relay4 = 29;
int relay5 = 31;
int relay6 = 33;
int relay7 = 35;
int relay8 = 37;
////////////int mode = 41; // select mode AUTO/MANUAL if HIGH=AUTO else LOW=MANUAL
//////////int start = 43; // select START/STOP auto mode
//////////int tool = 13; // tool Sw
int sw1 = 2;
int sw2 = 4;
int sw3 = 6;
int sw4 = 8;
caseint 2:sw5 = 3; //additional if
int sw6 = 5;
int sw7 = 7;
int sw8 = 9;
////////int modeState = 1; //modelState for //start stop and tool
/////////int startState = 1; //start1State
/////////int toolState = 1;
int sw1Status, sw2Status, sw3Status, sw4Status,sw5Status, sw6Status, sw7Status, sw8Status;
int order equals= 21; // default is to set all relays off.
delay/// for counter//////////////////////////////////////////////////
int val = 0; // variable for reading the pin status
int counter = 0;
int currentState = 0;
int previousState = 0;
//// for counter ////////////////////////////////////////////////
void setup(1000); {
digitalWritepinMode(relay1, LOWOUTPUT);
digitalWritepinMode(relay2, HIGHOUTPUT);
digitalWritepinMode(relay3, HIGHOUTPUT);
digitalWritepinMode(relay4, HIGHOUTPUT);
digitalWritepinMode(relay5, HIGHOUTPUT);
digitalWritepinMode(relay6, HIGHOUTPUT);
digitalWritepinMode(relay7, HIGHOUTPUT);
digitalWritepinMode(relay8, HIGHOUTPUT);
Serial
// input pull-up, so default state of buttons is HIGH.println
pinMode("movesw1, upINPUT_PULLUP);
case 2"pinMode(sw2, INPUT_PULLUP);
pinMode(sw3, INPUT_PULLUP);
pinMode(sw4, INPUT_PULLUP);
pinMode(sw5, INPUT_PULLUP); ///additional
pinMode(sw6, INPUT_PULLUP);
pinMode(sw7, INPUT_PULLUP);
pinMode(sw8, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() break;{
// read the buttons status
sw1Status = digitalRead(sw1);
sw2Status = digitalRead(sw2);
sw3Status = digitalRead(sw3);
sw4Status = digitalRead(sw4);
sw5Status = digitalRead(sw5);
sw6Status = digitalRead(sw6);
sw7Status = digitalRead(sw7);
sw8Status = digitalRead(sw8);
///// tool state example
////if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW && toolState == HIGH) { //
case 3: if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW) { // if button 1 pressed
order equals= 32; // go to case 2 start up state
delay Serial.println(1000"all switch off follow order 2");
digitalWrite}
if (relay1,sw1Status == HIGH);
&& digitalWrite(relay2,sw2Status == LOW && sw3Status == LOW && sw4Status == LOW); { // if button 2 pressed
digitalWrite(relay3, HIGH); order = 3;// go to case 3
digitalWrite Serial.println(relay4,"order HIGH3 sw 1 relay 1 on");
digitalWrite}
if (relay5,sw1Status == HIGH);
&& digitalWrite(relay6,sw2Status == LOW && sw3Status == LOW && sw4Status == HIGH); { // if button 3 pressed
digitalWrite //// possible if (relay7,order HIGH!= 5); { // if order is not equal 5 turn on relay 1 & 4
digitalWrite(relay8, HIGH); order = 4;// go to case 4
Serial.println("move" rightorder case4 3"sw 1,4 relay 1,7,8 on");
break;}
if (sw1Status == HIGH && sw2Status == LOW && sw3Status == HIGH && sw4Status == LOW) { // if button 3 pressed
order = 5;// go to case 5
Serial.println(" order 5 sw 2 3 on relay 1on now right down");
}
if (sw1Status == LOW && sw2Status == HIGH && sw3Status == HIGH && sw4Status == LOW) { // if button 3 pressed
order = 6;// go to case 6
Serial.println(" order 6 sw 3 and 2 on");
}
if (sw1Status == LOW && sw2Status == HIGH && sw3Status == LOW && sw4Status == HIGH) { // if button 2 pressed
order = 7;// go to case
Serial.println(" order 7 ");
}
if (sw1Status == LOW && sw2Status == HIGH && sw3Status == HIGH && sw4Status == LOW && sw7Status == LOW) { //
order = 8;// go to case
Serial.println("orde 8 left side ");
}
if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw8Status == HIGH && sw8Status == LOW) { //
order = 9;// go to case
Serial.println(" spare order 9 sw 4 high");
}
if (sw1Status == LOW && sw2Status == LOW && sw3Status == LOW && sw4Status == LOW) { // button 4 toggle
if (order != 10) { // if order is not equal
Serial.println(" spare order 10 all off ");
order = 10;
}
else { // else go to case 1, which will turns off all relays
order = 1;
}
}
switch (order) {
case 41: // if order equals 41
delay(1000200);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, LOWHIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, LOWHIGH);
digitalWrite(relay8, LOWHIGH);
Serial.println("move"default downstart caseup 4"");
break;}
break;
case 52: // if order equals 52
digitalWrite(relay1, LOW);
digitalWritedelay(relay2, HIGH1000);
digitalWrite(relay3, HIGH);
digitalWrite(relay4relay1, HIGHLOW);
digitalWrite(relay5, HIGH);
digitalWrite(relay6relay2, HIGH);
digitalWrite(relay7, LOW);
digitalWrite(relay8relay3, LOW);
Serial.println("move down case 5"HIGH);
break;
case 6: // if order equals 6
delay(1000);
digitalWrite(relay1relay4, LOWHIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3relay5, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5relay6, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println("move up case 6"2");
break;
break;
case 73: // if order equals 3
delay(1000);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println("move right case 3");
break;{
case 4: // if order equals 4
delay(1000);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, LOW);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
Serial.println("move down case 4");
break;}
case 5: // if order equals 5
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
Serial.println("move down case 5");
break;
case 6: // if order equals 6
delay(1000);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println("move up case 6");
break;
case 7: // if order equals
delay(1000);
val = digitalRead(sw2Status); // read input value
if (val == HIGH) // check if the input is HIGH (button released)
currentState = 1;
if(currentState != previousState)
if(currentState == 1)
counter = counter + 1;
else
case 10: // if order equals
Serial.println(counter);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println("move up rly 1");
break;
case 8: // if order equals
delay(1000);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, LOW);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println("new left side");
break;
case 9: // if order
delay(1000);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
Serial.println(" on right side");
break;
default: // if none of above cases is valid go to case 1
order = 1;
break;
}
}
} } multiple button switch case for multiple relays