#define START_DELAY 1000 //1000ms
#define STOP_DELAY 1500 //1500ms
unsigned long ON_oldtime, OFF_oldtime, old_time;
uint8_t ONdelayStart, OFFdelayStart;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(10, INPUT_PULLUP); //to read state of switch. using internal pullup resistor
pinMode(6, OUTPUT); //output signal to LED
ONdelayStart = OFFdelayStart = 0;
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(10) == LOW){ //switch was turned ON
if(ONdelayStart == 0){
ONdelayStart = 1;
ON_oldtime = millis();
}
if(ONdelayStart == 1 && millis()-ON_oldtime >START_DELAY){ //turn ON LED after time has expired
digitalWrite(6,HIGH);
}
}
else{ //switch is OFF
if(ONdelayStart == 1){ //was the switch previously ON?
ONdelayStart = 0;
OFFdelayStart = 1;
OFF_oldtime = millis();
}
if(OFFdelayStart == 1 && millis()-OFF_oldtime >STOP_DELAY){ ////turn OFF LED after time has expired
digitalWrite(6,LOW);
OFFdelayStart = 0;
}
}
}