// defining constants
const int d1_pin = 3;
const int d2_pin = 4;
const int ol_pin = 2;
const int rly1 = 7;
const int rly2 = 8;
const int flt_led = 13;
// defining variables
int d1_current=0;
int d1_last=0;
int d2_current=0;
int d2_last=0;
int ol_state=0;
int flt_cond=false;
int actuating=false;
int i = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(d1_pin, INPUT);
pinMode(d2_pin, INPUT);
pinMode(ol_pin, INPUT);
pinMode(rly1, OUTPUT);
pinMode(rly2, OUTPUT);
pinMode(flt_led, OUTPUT);
}
void loop() {
d1_current = digitalRead(d1_pin);
d2_current = digitalRead(d2_pin);
ol_state=digitalRead(ol_pin);
/*Serial.print("d1-current= ");
Serial.print(d1_current);
Serial.print(" ");
Serial.print("d1-last= ");
Serial.print(d1_last);
Serial.print(" ");
Serial.print("Overload = ");
Serial.print(ol_state);
Serial.print(" ");
Serial.print("Counter = ");
Serial.print(i);
Serial.print(" ");
Serial.print("Actuate = ");
Serial.println(actuating);*/
if (d1_current == HIGH && d2_current == HIGH){
flt_cond=true;
actuating = 0;
digitalWrite(flt_led, HIGH);
digitalWrite(rly2, LOW);
digitalWrite(rly1, LOW);
}
if (d1_current != d2_current){
flt_cond=false;
digitalWrite(flt_led, LOW);
}
if (d2_last == HIGH && d2_current == LOW && d1_current == HIGH){
i = 0;
}
if (d1_current != d1_last && flt_cond != true) {
if (d1_current == HIGH){
actuating = 1;
}
if (d1_current == LOW){
delay(50);
i = 0;
d1_last = d1_current;
}
}
if (actuating == 1 && ol_state == LOW && flt_cond != true){
digitalWrite(rly2, LOW);
digitalWrite(rly1, HIGH);
}
if (actuating == 1 && (ol_state == HIGH | i>=200)) {
digitalWrite(rly1, LOW);
actuating = 0;
i=0;
delay(50);
d1_last = d1_current;
}
if (d2_current != d2_last && flt_cond != true) {
if (d2_current == HIGH){
actuating = 2;
}
if (d2_current == LOW){
delay(50);
i = 0;
d2_last = d2_current;
}
}
if (actuating == 2 && ol_state == LOW){
digitalWrite(rly1, LOW);
digitalWrite(rly2, HIGH);
}
if (actuating == 2 && (ol_state == HIGH | i>=200)) {
digitalWrite(rly2, LOW);
actuating = 0;
i=0;
delay(50);
d2_last = d2_current;
}
if (actuating == 1 | actuating == 2){
i=i+1;
delay(50);
d2_last = d2_current;
}
}
// put your main code here, to run repeatedly: