// https://forum.arduino.cc/t/interlocking-relay-code/1268854
const int ValueHigh1 = 100; // high value for turning Relay 1 off
const int ValueLow1 = 20; // low value for turning Relay 1 on
const int ValueHigh2 = 90; // high value for turning Relay 2 off
const int ValueLow2 = 30; // low value for turning Relay 2 on
const int VlaueHigh3 = 75; // high value for turning Relay 3 off
const int ValueLow3 = 45; // low value for turning Relay 3 on
int R1 = 4; //digital pin for relay 1
int R2 = 5; //digital pin for relay 2
int R3 = 6; //digital pin for relay 3
int V1 = A1; // analog pin
int V2 = A2;
int V3 = A3;
int Value1, Value2, Value3; // analog input values
void setup() {
//INITIALIZING RELAY STATES:
digitalWrite(R1, LOW); // OFF
pinMode(R1, OUTPUT);
digitalWrite(R2, LOW); // OFF
pinMode(R2, OUTPUT);
digitalWrite(R3, LOW); // OFF
pinMode(R3, OUTPUT);
pinMode(V1, INPUT); // analog pin as input
pinMode(V3, INPUT);
pinMode(V2, INPUT);
}
void loop() {
Value1 = analogRead(V1); // read analog pins
Value2 = analogRead(V2);
Value3 = analogRead(V3);
// if ( R1 > ValueHigh1) { //sensor values inversed so when hit low turn on
if ( Value1 > ValueHigh1) { //sensor values inversed so when hit low turn on
digitalWrite(R1, HIGH); //on
digitalWrite(R2, LOW); //off
digitalWrite(R3, LOW); //off
}
// if (R1 <= ValueLow1) {
if (Value1 <= ValueLow1) {
digitalWrite(R1, LOW); //off
}
// if ( R2 > ValueHigh2) { //sensor values inversed so when hit low turn on
if ( Value2 > ValueHigh2) { //sensor values inversed so when hit low turn on
digitalWrite(R2, HIGH); //on
digitalWrite(R1, LOW); //off
digitalWrite(R3, LOW); //off
}
// if (R2 <= ValueLow2) {
if (Value2 <= ValueLow2) {
digitalWrite(R2, LOW); //off
}
// if ( R3 > VlaueHigh3) { //sensor values inversed so when hit low turn on
if ( Value3 > VlaueHigh3) { //sensor values inversed so when hit low turn on
digitalWrite(R3, HIGH); //on
digitalWrite(R1, LOW); //off
digitalWrite(R2, LOW); //off
}
// if (R3 <= ValueLow3) {
if (Value3 <= ValueLow3) {
digitalWrite(R3, LOW); //off
}
}