Go Down

Topic: encender rele segun tiempo (Read 4 times) previous topic - next topic

Jossema106

hola! Para mi proyecto necesito encender y mantener encendido un rele por el tiempo establecido y se me ocurre lo siguiente,
tiempo = 12;
if (hour == hora && minute == minute && second == segundo){     
                       
                 digitalWrite(relayPin, HIGH);
                 delay(tiempo);
                 Serial.println("encendio");
              }
            digitalWrite(relayPin, LOW);
            Serial.println("apago");

Como lo veis?
Gracias

OoTzToO

Con eso debería funcionar.

El único problema que se me ocurre es que el arduino, una vez que se apague (o reinicie), pone a cero los contadores de tiempo, así que te hace falta una fuente fiable de energía o una placa con contador específica que incluya su propia pila (que las hay por ahí).

Además, el tiempo máximo que dura el contador de tiempo del arduino es de unos 50 días ;)

;P

Jossema106

Gracias!

Tengo un rtc que es de donde coge las horas.
No entiendo lo de los 50 dias.

Por otro lado tengo que manejar otro rele y seguramente coincidan en el tiempo, al utilizar delay deja el arduino en "pause"? Si es asi no me serviria ya que al enceder uno no podria encender el otro no?

OoTzToO

Lo de los 50 días tiene que ver con que usa 4bytes de memoria para el contador de tiempo (mira la función millis())

Efectivamente durante un delay se detiene la ejecución del programa, lo que puedes hacer es declarar un if() en el que compares el tiempo actual con el que tenías cuando activaste el relé, si es mayor que el tiempo preestablecido, lo apagas, sino, sigues a tus cosas ;)

Jossema106

pero entonces si suceden dos eventos a la vez? Es decir se enciendo el tele de la calefaccion y es hora de regar?
Funcionara?

Go Up