Code: Not at all clean...
Code:
unsigned long time_now = 0;
unsigned long time_now2 = 0;
int LED = 25;
int LED2 = 26;
int SW = 23;
int SWwasLO = 0;
int noGO = 0;
int norepeat = 0;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(SW, INPUT_PULLUP);
//digitalWrite(LED,LOW);
//digitalWrite(LED2,LOW);
}
void loop() {
if ((digitalRead(SW) == 0) && (SWwasLO == 1) && ((millis() - time_now > 420)))
{
//delay(10);
Serial.println("At Start SW==0 SWwasLO ==1 and millis time_now");
time_now = (millis() + 9000);
//time_now = 0;
//digitalWrite(LED2, HIGH);
noGO = 1;
}
if (digitalRead(SW) == 0 && SWwasLO == 0)
{
armrlyheld();
}
if ((digitalRead(SW) == 1) && (SWwasLO == 1))//&& (time_now2 ==0))
{
timeoutrlys();
}
if ((digitalRead(SW) == 0) && (digitalRead(LED) == LOW) && (norepeat == 0) && (noGO == 1) && (SWwasLO == 1) && (millis() - time_now2 > 3000))
{
Serial.println("ARM and EXPOSE relay on");
digitalWrite(LED2, LOW);
//norepeat=1;
time_now2 = 0;
} else if ((digitalRead(SW) == 0) && (digitalRead(LED) == LOW) && (norepeat == 0) && (noGO == 1) && (SWwasLO == 1) && (millis() - time_now2 > 1020))
{
Serial.println(" Dropping ARM and EXPOSE");
//digitalWrite(LED2, HIGH);
//norepeat=1;
time_now2 = 0;
//SWwasLO = 0;
}
}
void armrlyheld()
{
Serial.println("ARM Relay Held");
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
time_now = millis();
time_now2 = millis();
SWwasLO = 1;
noGO = 1;
}
void timeoutrlys()
{
if (millis() - time_now > 9000) {
Serial.println("ARM and EXPOSED Relay Timed Out or Dropped");
digitalWrite(LED, HIGH);
digitalWrite(LED2, HIGH);
time_now = 0;
SWwasLO = 0;
norepeat = 0;
time_now2 = 0;
}
}