curro92:
Hola,
Si cierras con punto y coma la sentencia if(), la estás anulando.Si después del delay ya no coinciden los minutos, solo tienes que controlar la hora
Yo probaría algo así:int hancomido = 0;
void comedero()
{
if (Reloj.GetHour() == CFG.COMIDA_H && Reloj.GetMinute() == CFG.COMIDA_M && hancomido == 0)
{
SetRele( 4, PIN_D_COMIDA, HIGH );
delay(3000);
hancomido = 1;
}
else
hancomido = 0;
}
Gracias, pero creo que hay un error. Ya que siempre que sea la hora estara dando de comer, un bucle si, otro no, y asi.
Creo que habira que hcaer como dijo Cheyenne:
boolean hancomido = false;
////////////////////////////////////////////////////////////
//
// COMEDERO
//
//////////////////////////////////////////////////
void comedero()
{
if (Reloj.GetHour() == (CFG.COMIDA_H) && (Reloj.GetMinute() == (CFG.COMIDA_M )) && !=hancomido );
{
SetRele( 4, PIN_D_COMIDA, HIGH );
delay(3000);
SetRele( 4, PIN_D_COMIDA, LOW );
hancomido = true;
}
if Reloj.GetHour() != (CFG.COMIDA_H) && (Reloj.GetMinute() != (CFG.COMIDA_M )) hancomido= false;
}