Preciso de um script que ative o rele ao iniciar e desligue se o botão não for pressionando em 5 minutos, quando pressionado pausar a contagem e permanecer ligado.
#define rele 13
#define botao 2
boolean estado = false;
unsigned long Tempo; // Variavel de 4 bytes para Tempo
//------------------------------
void setup()
{
//Serial.begin(9600); // Diag
pinMode(rele, OUTPUT);
pinMode(botao, INPUT);
digitalWrite(botao, HIGH);
Tempo = millis(); // Inicializa a variavel Tempo
}
//------------------------------
void loop()
{
if (digitalRead(botao) == LOW) // Se botao foi apertado
{
delay(100); // Evita debouncing
if (digitalRead(botao) == LOW) // Se botao continua apertado
{
delay(100); // Evita debouncing
estado = !estado; // Inverte estado da saida
Tempo = millis(); // Reinicializa a variavel
//Serial.println(estado); // Diag
}
}
if (digitalRead(botao) == HIGH) // Se botao está liberado
{
if (estado == true) // Se o estado for ligado
{
// if (Tempo - millis() >= 18000000) // Espera o tempo de 5 horas
if (millis() - Tempo >= 10000) // Testa espera o tempo de 10 segundos
{
//Serial.println(millis() - Tempo); // Diag
Tempo = millis(); // Reinicializa a variavel
estado = false; // Informa desligado
}
}
}
digitalWrite(rele, estado); // HIGH (1) = +5V
}