Go Down

Topic: Problema encendido led con TimeAlarms y/o con pulsador (Read 1 time) previous topic - next topic

American2020

#5
Apr 17, 2013, 06:13 pm Last Edit: Apr 17, 2013, 06:15 pm by American2020 Reason: 1
Ahí encontré las 3 librerías. Veré si eso me ayuda a entender mejor el código.

PD: Igual el código me tirará error, porque no tengo el dispositivo que le provee la hora al Arduino, pero al menos para intentar probar lo demás.
My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

American2020

Creo que ya caí en la cuenta de como hacerlo.

¿La alarma enciende el Led en el período que está activa cierto?

Probemos esto:

Code: [Select]
  digitalClockDisplay();
  Alarm.delay(1000); // espera un segundo para mostrar cambio de hora
  if (digitalRead(BOTON) == HIGH) //Sin importar el estado de la alarma, el led debe ser encendido
  {digitalWrite(LED,HIGH);}
  else //El botón no está precionado
  {
if (onbyAlarm == 1) { } //Está encendido por la alarma (no lo apagamos nosotros)
else { digitalWrite(LED,LOW);} //No está encendido por la alarma, lo apagamos
}


Y en las funciones las modificas para que queden así:

Code: [Select]
void MorningAlarm(){
  Serial.println("Alarma: - Apagar luces");
  digitalWrite(LED,LOW);
  onbyAlarm = 0; //Apagado por la alarma
}

void EveningAlarm(){
  Serial.println("Alarma: - Encender luces");
  digitalWrite(LED,HIGH);
  onbyAlarm = 1; //Encendido por la alarma
}


En el inicio incluir

Code: [Select]
boolean onbyAlarm = 0;

No lo he probado, pero debería funcionar.
My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

vicks

Probado y funcionando perfecto. Una solución muy elegante.
Muchísimas gracias.

American2020

:) Que bueno que le di a la primera :P

Si, es la mejor forma, siempre que se quiera "rastrear" el estado de algún pin o lo que sea, lo mejor es asignarlo a una variable, de esa forma es simple usarla en los IF y actuar en consecuencia.

También se puede leer el estado de dicho pin en ese momento, pero en este caso no hubiera servido, ya que al soltar el botón, el estado del pin del led, siempre iba a devolver que estaba encendido, pero nosotros no sabríamos si había sido encendido por el botón, o si previamente ya estaba encendido por la alarma ;)
My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Go Up