Skip to main content
Post Closed as "Duplicate" by Juraj, chrisl, VE7JRO

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

i 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 ");

  break;

case 2: // if order equals 2
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 2");

  break;

case 3: // 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);
  
  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

I 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 ");

      break;

    case 2: // if order equals 2
    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 2"); 

      break;

    case 3: // 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);
      
      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

Source Link

multiple button switch case how to add counter

i 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 ");

  break;

case 2: // if order equals 2
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 2");

  break;

case 3: // 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);
  
  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