hola gente estoy intentando hacer un timer para luces de un acuario pero no logo poder armarlo e intentado muchas cosas que no me dieron resultados aun asi no me rindo solo que necesito ayuda
lo que quisiera hacer es lo siguiente es que el modulo que tengo ds1302 coompare las horas de una variable y si es =< a 12:00 prenda una luz y si es >= a 00:00 la apague alguien me podria ayudar ?
Hola parece que ya estas repitiendo el mismo problema en otro hilo.
he visto un poco la libreria para el ds1302 y tienes la posibilidad de comparar la hora y los minutos por separado pero usando enteros.
mira el ejemplo DS1302_Serial_Hard
puedes crear una instancia del objeto rtc.getTime().
y comparar por separado la hora y los minutos.
lo hago asi pero nunca me sale la hora por mas que lo desalbilite el else no sale es como si no comparara siempre me sale el luz off en el monitor serial sabes a que se debe ?
la variable l la declare global como time l
void LucesFlora() {
l = rtc.getTime();
if ((l.hour > 12) && ( l.hour < 1)) {
Serial.print("luz on");
}
else {
Serial.print("luz off");
}
}
para depurar puedes usar el serial antes de la comparación, así te das cuenta que datos estas recibiendo, por ejemplo:
Serial.print("hora: ");
Serial.println(t.hour);
Serial.print("minuto: ");
Serial.println(t.min);
if((t.hour >= 12) && (t.hour < 13))
{
....
} else
{
...
}
en el Serial deberán aparecer los datos y estos deben ser del mismo tipo que el dato contra el que estas comparando(de no ser así la comparación siempre sera negativa),
puede ser que " t.hour " sea un tipo de dato diferente al que lo estas comparando,no lo se , podría ser de tipo char("12") o tal vez binario(B11000000) o hexadecimal(c), para asegurar que sea un entero tienes que usar "int(t.hour)" así t.hour dará un entero por ejemplo: 12
Otra cosa que también podría estar pasando es que la comparación no este bien definida, pues ese momento nunca sucede en realidad:
if ((l.hour > 12) && ( l.hour < 1)) {
esta comprobación nunca sera verdadera; no existe un número que sea mayor que doce y al mismo tiempo menor que uno.
if((int(t.hour) >= 12) && (int(t.hour) < 13))
{
....
} else
{
...
}