Problemas com acionamentos por tempo...

Bom dia amigos, estou engajado em um projeto, para acionar um relé remotamente pela rede ethernet, de um arduino para o outro.

A parte de comunicação e sinalização está perfeita...
A questão é que eu quero implementar junto ao arduino que está com o relé, um botão para ele dar LOW no relé...

Ex. Acionam o relé pelo arduino remoto, se o botão junto ao arduino que está com o relé não for pressionado, o relé vai dar LOW sozinho após 5 minutos...

Olhem meu código...

void loop()
{
// Load HTML
if (sup.available())
{
// Verifica se algum botao foi pressionado
int lastButton = sup.getLastClickedButton();

// Executa o comando conforme o botao clicado
switch(lastButton)
{
case sirene:
digitalWrite(sirene, HIGH);
break;
default:
break;
}
}
if (digitalRead(6) == LOW) {
digitalWrite(sirene, LOW);
}

}

Aí seu eu coloco um delay aqui:

{
case sirene:
digitalWrite(sirene, HIGH);
delay(5000);
break;
default:
break;
}

Meu código não permite que meu botão funcione...
Alguém poderia me ajudar?

Obrigado desde já!
Forte abraço a todos!

Boas.
Nao podes usar o delay para isso pois se o usares o micro vai ficar parado sem fazer nada.Procura um sketch Blinkwitoutdelay e entende a logica de como podes fazer "delays" sem usares o procedimento delay
Em resumo consiste em marcares o tempo e ires olhando para a diferença temporal.Quando essa diferença for X executas uma açao.Tem a vantagem de nao travar o micro.
Podes tambem usar uma interrupçao para deterarem que depois alguem tocou no botao ...