auto delayOn(const uint32_t, bool) -> bool;
uint32_t mTimestamp = 0;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
}
void loop() {
auto btn = digitalRead(2);
auto delayTriggered = delayOn(3000, btn);
if(delayTriggered)
{
digitalWrite(3, HIGH);
//Serial.println("Turned on after" + String(millis()));
}
else
digitalWrite(3, LOW);
}
/**
* @brief
*
* @param targetTime
* @param reset
* @return true
* @return false
*/
auto delayOn(const uint32_t targetTime, const bool active) -> bool
{
if(!active)
{
mTimestamp = millis();
return false;
}
uint32_t millisTemp = millis() - mTimestamp;
if (millisTemp >= targetTime)
{
return true;
}else
return false;
}