So I am trying to be able to control relays with the serial print in so that i can toggle the relay on and off with the space bar. the problem is that there are 16 relays. so i can control relays 1-9 fine the problem is when i try to turn on relays 10-16 it just turns on relays in the 1-9 series. for example if i put, 12 space bar, it will turn on relay 1 and 2 instead of 12. any thought on this, I have been stumped for like a week! I bolded and italicized the line of code in question. Thnaks
#define RELAY1 31 //climate 1
#define RELAY2 32 //climate 2
#define RELAY3 33 //climate 3
#define RELAY4 34 //climate 4
#define RELAY5 35 //climate 5
#define RELAY6 36 //climate 6
#define RELAY7 37 //climate 7
#define RELAY8 38 //climate 8
#define RELAY9 39 // irrigation 9
#define RELAY10 40 //irrigation 10
#define RELAY11 41 //irrigation 11
#define RELAY12 42 //irrigation 12
#define RELAY13 43 //irrigation 13
#define RELAY14 44 //irrigation 14
#define RELAY15 45 //irrigation 15
#define RELAY16 46 //irrigation 16
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);
pinMode(RELAY9, OUTPUT);
pinMode(RELAY10, OUTPUT);
pinMode(RELAY11, OUTPUT);
pinMode(RELAY12, OUTPUT);
pinMode(RELAY13, OUTPUT);
pinMode(RELAY14, OUTPUT);
pinMode(RELAY15, OUTPUT);
pinMode(RELAY16, OUTPUT);
Serial.begin(9600); // open serial
** Serial.println("Press a number 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 to toggle a relay on/off");**
}
boolean relay1State = false; // Assume off to start with
boolean relay2State = false;
boolean relay3State = false;
boolean relay4State = false;
boolean relay5State = false;
boolean relay6State = false;
boolean relay7State = false;
boolean relay8State = false;
boolean relay9State = false;
boolean relay10State = false;
boolean relay11State = false;
boolean relay12State = false;
boolean relay13State = false;
boolean relay14State = false;
boolean relay15State = false;
boolean relay16State = false;
void loop()
{
static int relayVal = 0;
int cmd;
while (Serial.available() > 0)
{
cmd = Serial.read();
switch (cmd)
{
case '1':
{
relay1State = !relay1State; // If true, make false. If false, make true
digitalWrite(RELAY1, relay1State);
break;
}
case '2':
{
relay2State = !relay2State; // If true, make false. If false, make true
digitalWrite(RELAY2, relay2State);
break;
}
case '3':
{
relay3State = !relay3State; // If true, make false. If false, make true
digitalWrite(RELAY3, relay3State);
break;
}
case '4':
{
relay4State = !relay4State; // If true, make false. If false, make true
digitalWrite(RELAY4, relay4State);
break;
}
case '5':
{
relay5State = !relay5State; // If true, make false. If false, make true
digitalWrite(RELAY5, relay5State);
break;
}
case '6':
{
relay6State = !relay6State; // If true, make false. If false, make true
digitalWrite(RELAY6, relay6State);
break;
}
case '7':
{
relay7State = !relay7State; // If true, make false. If false, make true
digitalWrite(RELAY7, relay7State);
break;
}
case '8':
{
relay8State = !relay8State; // If true, make false. If false, make true
digitalWrite(RELAY8, relay8State);
break;
}
case '9':
{
relay9State = !relay9State; // If true, make false. If false, make true
digitalWrite(RELAY9, relay9State);
break;
}
case '10':
{
relay10State = !relay10State; // If true, make false. If false, make true
digitalWrite(RELAY10, relay1State);
break;
}
case '11':
{
relay11State = !relay11State; // If true, make false. If false, make true
digitalWrite(RELAY11, relay11State);
break;
}
case '12':
{
relay12State = !relay12State; // If true, make false. If false, make true
digitalWrite(RELAY12, relay12State);
break;
}
case '13':
{
relay13State = !relay13State; // If true, make false. If false, make true
digitalWrite(RELAY13, relay13State);
break;
}
case '14':
{
relay14State = !relay14State; // If true, make false. If false, make true
digitalWrite(RELAY14, relay14State);
break;
}
case '15':
{
relay15State = !relay15State; // If true, make false. If false, make true
digitalWrite(RELAY15, relay15State);
break;
}
case '16':
{
relay16State = !relay16State; // If true, make false. If false, make true
digitalWrite(RELAY16, relay16State);
break;
}
default:
{
Serial.println("There are 8 options Relay 1 or Relay 2 or Relay 3 or Relay 4 or Relay 5 or Relay 6 or Relay 7 or Relay 8");
}
}
}
}