I'm rather rusty at programming and right now I need help!
I have have a membrane panel with 5 switches and need to operate 6 relays as follows
switch 0(on) - relay 0(on), relay 4(on)
switch 0(off) - relay 0(off), delay(), relay 4(off), relay 5(on), delay, relay 5(off)
switch 1 and 2 similar function to switch 0
switch 3(on) - relay 3(on)
switch 3(off) - relay 3(off)
switch 4(on) - relay 4(on)
switch 4(off) - relay 4(off), relay 5(on), delay, relay 5(off)
My code works fine when set up for a single switch but when I try to implement muti switchs I get erratic results.
I'm using a genuine Arduino Uno and would welcome any help/criticism.
#include <Wire.h> // Comes with Arduino IDE
//#include <LiquidCrystal_I2C.h>
#define col 2
#define range 3
#define lim 4
#define sti 5
#define sod 6
#define exhaust 7
#define On 0
#define Off 1
int switchPin[] = {8, 9, 10, 11, 12}; //switch pins
int relayPin[] = {2, 3, 4, 5, 6, 7}; //relay pins
//int valve[] = {1, 1, 1, 1, 1,}; // valve on
int ledPin = 13;
int VALVE = 1;
void setup() {
Serial.begin(9600);
#define SCOL 8
#define SRANGE 9
#define SLIM 10
#define SSTI 11
#define SSOD 12
digitalWrite(col, HIGH);// Set relay
digitalWrite(range, HIGH);
digitalWrite(lim, HIGH);
digitalWrite(sti, HIGH);
digitalWrite(sod, HIGH);
digitalWrite(exhaust, HIGH);
pinMode(SCOL, INPUT_PULLUP); //Set switch
pinMode(SRANGE, INPUT_PULLUP);
pinMode(SLIM, INPUT_PULLUP);
pinMode(SSTI, INPUT_PULLUP);
pinMode(SSOD, INPUT);
pinMode(col, OUTPUT);
pinMode(range, OUTPUT);
pinMode(lim, OUTPUT);
pinMode(sti, OUTPUT);
pinMode(sod, OUTPUT);
pinMode(exhaust, OUTPUT);
}
void loop()
{
//int j = 0;
for (int i = 0; i < 5; i++)
{
if (digitalRead(switchPin[i]) == LOW)
{
switch (switchPin[i])
{
case 8:
relay(0);
break;
case 9:
relay(1);
break;
case 10:
relay(2);
break;
case 11:
relay(3);
break;
case 12:
relay(4);
break;
}
}
else
{
switch (switchPin[i])
{ case 8:
relayOff(0);
break;
case 9:
relayOff(1);
break;
case 10:
relayOff(2);
break;
case 11:
relayOff(3);
break;
case 12:
relayOff(4);
break;
}
}
}
}
void relay(int j)
{
//if (digitalRead(switchPin[j]) == LOW)
{
digitalWrite(relayPin[j], On);
digitalWrite(sod, On);
digitalWrite(exhaust, Off);
VALVE = 0;
delay(100);
}
}
// else
void relayOff(int j)
{
digitalWrite(relayPin[j], Off);
delay(1500);
digitalWrite(sod, Off);
if (VALVE == 0)
{
digitalWrite(exhaust, On);
delay(1000);
digitalWrite(exhaust, Off);
VALVE = 1;
}
}