En esta ocasión te vamos a enseñar como realizar la programación de eventos con arduino, o dicho de otra forma: como podemos programar el arduino para ejecutar determinadas funciones en una hora/fecha determinadas. La información de fecha / hora actual proviene de un circuito integrado RTC (Real Time Clock) DS1307. Un RTC está especialmente diseñado para mantener la información horaria, aún cuando nuestro arduino se encuentre sin alimentación. Esto es fantástico en aplicaciones del mundo real, donde no siempre se puede confiar en el suministro de energía eléctrica.
Imaginemos por un momento que deseamos encender una lampara con arduino a una hora determinada. ¿Como podemos decirle al arduino que deseamos hacer esto? ¿Como implementamos un programa genérico para realizar cualquier acción con nuestro arduino a una hora / fecha determinada? En este tutorial te explicamos como puedes hacer precisamente eso: Temporizar cualquier acción con arduino para que sea llevada a cabo según la programación de horario elegida.
En nuestra foto de portada vemos nuestro laboratorio de domótica con arduino, que estaremos usando durante este tutorial, en conjunto con un arduino UNO y el RTC DS1307.
Conexión y uso de un RTC con Arduino.
En otra entrada anterior hemos tratado ya como realizar la conexión del RTC DS1307 con Arduino, así como su funcionamiento básico. Vamos a colocar aquí la imagen de la conexión como referencia. Para saber como podemos leer y escribir el RTC, así como más detalles de su funcionamiento, recomendamos leer nuestro tutorial referente a este tema.
Una vez que tengamos nuestro arduino funcionando con el RTC y hayamos programado la hora y fecha actual dentro de este, podemos seguir con el resto de este tutorial.
Librerías para Programación de Eventos con Arduino.
Como ya sabemos, la plataforma arduino tiene un buen número de librerías que nos facilitan bastante algunas tareas, pues la lógica ya ha sido implementada y solamente debemos conocer el API de dichas librerías para acceder a su funcionalidad. En este caso, estaremos trabajando con la librería de gestión de eventos y horarios conocida como “TimeAlarms”. Mediante esta librería podemos programar la ejecución de determinadas funciones en una fecha y hora específica. La librería “TimeAlarms” depende de la librería “Time” para conocer la fecha/hora actual, por lo que también debe ser instalada. Finalmente para la interfaz con el reloj en tiempo real utilizaremos la librería DS1307RTC.
A continuación dejamos los enlaces para descargar las librerías requeridas:
La siguiente es la explicación de que hace cada una de las librerías:
- Time: Funciona como un reloj en tiempo real por software que lleva la cuenta del tiempo usando el CPU de arduino. Funciona llevando un conteo del número de segundos desde segundos transcurridos desde la medianoche UTC del 1 de enero de 1970 (timestamp de Unix). Este conteo se pierde al apagar el arduino, por lo que NO funciona como base de tiempo confiable sin energía eléctrica.
- TimeAlarms: Es la encargada de la programación de eventos utilizando la hora/fecha (unix) provista por la librería Time. Esta librería asocia las funciones declaradas dentro del sketch de arduino a un evento que ocurre en una hora/fecha determinada.
- DS1307RTC: Se encarga de la comunicación con el RTC DS1307 o DS3231 para obtener el tiempo actual y mantener la precisión a largo plazo, esta librería proporciona la base de tiempo permanente para ser usado por la librería “Time” y “TimeAlarms”
Programa para temporizador con arduino
Con todo esto ya instalado en nuestro IDE podemos comenzar con nuestro primer sketch que permite realizar la programación de eventos con Arduino. En este programa buscamos hacer lo siguiente: Hacer que todos los días a las 14:00, 14:05, 14:10 se ejecute una función elegida por nosotros que imprime un texto al monitor serial de arduino. El código de nuestro sketch queda de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /** GeekFactory - "Construye tu propia tecnologia" Distribucion de materiales para el desarrollo e innovacion tecnologica www.geekfactory.mx Ejemplo de Programación de Eventos con Arduino con las librerias Time y TimeAlarms en este programa, la hora se configura en el inicio del arduino y solamente se utiliza el CPU de arduino para llevar el conteo del tiempo, en este ejemplo NO se utiliza el reloj en tiempo real externo. */ #include <Time.h> #include <TimeAlarms.h> void setup() { Serial.begin(9600); // Configurar la fecha / hora manualmente cada vez que se reinicia el arduino // Configurar al lunes 22 de agosto de 2016 a las 13:59:50 setTime(13, 59, 50, 22, 8, 16); // Crear las alarmas y configurar las funciones correspondientes a cada una Alarm.alarmRepeat(14, 0, 0, Alarma1400); // Evento a las 14:00 diario Alarm.alarmRepeat(14, 5, 0, Alarma1405); // Evento a las 14:05 diario Alarm.alarmRepeat(14, 10, 0, Alarma1410); // Evento a las 14:10 diario } void loop() { // Mostrar el reloj en el monitor serial digitalClockDisplay(); // Esperar 1 segundo y procesar las Alarmas mientras tanto... Alarm.delay(1000); } void Alarma1400() { Serial.println("Evento de las 14:00:00"); } void Alarma1405() { Serial.println("Evento de las 14:05:00"); } void Alarma1410() { Serial.println("Evento de las 14:10:00"); } /** Funciones para la impresion del reloj al monitor serial de arduino */ void digitalClockDisplay() { Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.println(); } void printDigits(int digits) { Serial.print(":"); if (digits < 10) Serial.print('0'); Serial.print(digits); } |
Este programa aún no utiliza la fecha / hora proveniente del RTC, en cambio configura una fecha/hora conveniente al arrancar el arduino, pero podemos configurar la librería Time para que haga uso del RTC de una manera muy sencilla. El siguiente programa que realizaremos pretende ser un ejemplo de una aplicación real con el RTC y la librería TimeAlarms, por lo que será necesario que pongamos a tiempo el reloj antes de intentarlo. Si deseamos encender una lámpara realmente en nuestra casa será necesario conectar una tarjeta de relevadores al arduino, como lo haremos en el siguiente ejemplo.
Programación del horario de una lámpara con arduino
Ahora que ya conocemos el funcionamiento de la librería TimeAlarms vayamos con un ejemplo práctico de algo que se requiere de manera cotidiana: Prender una luz a una hora determinada y apagarla en otro momento. Usando nuestra librería de TimeAlarms creamos un par de funciones que se encargarán de apagar o encender la luz en el momento oportuno. En la parte de hardware utilizamos un módulo de relevador que controla la carga de corriente alterna. El montaje de nuestro circuito se observa de la siguiente forma, incluyendo la parte de control de corriente alterna:
Esta imagen muestra más de cerca el detalle de las conexiones al arduino:
Nosotros estamos utilizando nuestro kit de laboratorio para domótica, que está diseñado para simplificar en gran medida la parte de la conexión de dispositivos de corriente alterna. Nos ahorra tener que cablear la parte de alterna cada vez que deseamos experimentar, además de permitir un mejor manejo de la corriente alterna que pudiera ser peligrosa. El sketch completo que controla el encendido de una luz en el momento deseado es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | /** GeekFactory - "Construye tu propia tecnologia" Distribucion de materiales para el desarrollo e innovacion tecnologica www.geekfactory.mx Ejemplo de Programación de Eventos con Arduino con las librerias Time y TimeAlarms. En este programa se utiliza el RTC para obtener la fecha y hora actual, por lo que el RTC debe tener una fecha/hora válida para poder correr este programa. Las conexiones de SDA y SCL deben estar correctamente realizadas. Se activará el relevador conectado en el pin 3 digital segun el horario indicado. */ #include <Time.h> #include <TimeAlarms.h> #include <DS1307RTC.h> void setup() { // Preparar la interfaz serial Serial.begin(9600); // Configurar los pines de salida de relevadores desactivados al inicio // recordamos que los modulos de reles se activan con un estado bajo pinMode(3, OUTPUT); digitalWrite(3, HIGH); pinMode(4,OUTPUT); digitalWrite(4, HIGH); // Cargar la hora actual desde el RTC e indicar que esto suceda de forma automática durante loop() // Utilizamos el método RTC.get() de la libreria DS1307RTC. El RTC debe estar conectado como se // indica en el texto y debe tener la fecha y hora correctas setSyncProvider(RTC.get); if (timeStatus() != timeSet) Serial.println("Fallo de RTC"); else Serial.println("Sincronizado con RTC"); // Crear las alarmas y configurar las funciones correspondientes a cada una Alarm.alarmRepeat(18, 0, 0, EventoEnciendeLuz); // Evento a las 18:00 diario (enciende luz) Alarm.alarmRepeat(7, 0, 0, EventoApagaLuz); // Evento a las 7:05 diario (apaga luz) } void loop() { // Mostrar el reloj en el monitor serial digitalClockDisplay(); // Esperar 1 segundo y procesar las Alarmas mientras tanto... // El metodo Alarm.delay() procesa en el fondo las alarmas y llamara a las funciones indicadas Alarm.delay(1000); } /** Funcion callback que activa el relevador en el pin 3 (enciende la luz) */ void EventoEnciendeLuz() { Serial.println("Encendiendo Luz!!!"); digitalWrite(3, LOW); } /** Funcion callback que desactiva el relevador en el pin 3 (apaga la luz) */ void EventoApagaLuz() { Serial.println("Apagando Luz!!!"); digitalWrite(3, HIGH); } /** Funciones para la impresion del reloj al monitor serial de arduino */ void digitalClockDisplay() { Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.println(); } void printDigits(int digits) { Serial.print(":"); if (digits < 10) Serial.print('0'); Serial.print(digits); } |
Está de más decir que este sketch puede ampliarse para soportar incluso varios canales o patrones más complejos. Por ejemplo podemos conectar más relevadores para controlar otras cargas, por ejemplo bombas para realizar riego, motores que controlen persianas, sirenas de alarma, etc. Como podemos observar la Programación de Eventos con Arduino mediante la librería TimeAlarms es muy sencilla, aún cuando utilizamos el RTC.
Palabras finales sobre la Programación de Eventos con Arduino.
La Programación de Eventos con Arduino es una de las tareas más básicas cuando deseamos llevar a cabo alguna automatización en el hogar, el trabajo o la industria. Con los ejemplos y librerías que mostramos en esta página, es posible crear un marco de trabajo que nos permita afrontar con mucha sencillez esta tarea. Además las librerías que hemos mostrado en esta página permiten obtener información de fecha/hora no solamente desde el RTC, sino desde otras fuentes también como un servidor NTP o un GPS, por lo que seguramente tienen cabida en muchísimas aplicaciones que requieren control de tiempo preciso a largo plazo.
bUENAS, Me funciona todo muy bien. pero quisiera agregar el comando if para tener un control de modo manual a mi regadero automático, pero no permite, sale el error que no se encuentra declarado las variables programadas para los diferentes horarios.
Hola que tal, soy nuevo con arduino y estoy elaborando un proyecto con el que e tenido un para de complicaciones con el tema de las fechas que necesito calcular fechas a futuro
hola muchas gracias por tu explicación y ejemplos, quería saber como se hace en el primer ejemplo si quisiera poner la alarma 3 días después del dia que inicia.
Muchas gracias
saludos
Tengo la misma duda, ya que necesito activar una electrovalvula determinados solo cada diez días.
Buenos dias, me gusta este proyecto. Mi pregunta es si podría especificar que ese evento solo se diera (Por Ejemplo) el 15 de Abril de 17:00 a 17:30?
Por que ahora esta programado para que funcione todos los dias.
Cuál es la funcion del Pin 4 que tambien aparece activado en PINMODE?
pinMode(3, OUTPUT);
digitalWrite(3, HIGH);
pinMode(4,HIGH);
digitalWrite(4, HIGH);
Si te fijas en la imagen donde tienen todos los componentes tiene 2 de gran importancia que son el foco y el contacto en el pin 3 esta el foco en el pin 4 esta el contacto.
OJO tu puedes cambiar esos pines o conectar casas diferentes ( no solo casas que vallan directamente a la luz ) puedes conectar hasta un eliminador de voltaje
Hola buen día programe los eventos y funciona a la perfección pero quisiera conectar otros focos en diferentes zonas utilizando el mismo arduino
que tal esti haciedo un proyecto igual pero cuento don el reloj ds1302 ya pude ponerle la hora pero no me respeta las alarmas que pongo como le puedo hacer para que me funcionen
Hola.
Probablemente tenga que ver con la librería que estas utilizando para el DS1302. Podrías brindar más información al respecto?
Saludos.
buen ejemplo disculpa tengo un lcd 16×2 que tengo conectado al sda u scl puedo aun asi conectar el rtc en el analogo 4 y 5 por que e lcd esta utilizando el sda y scl
Hola.
En el caso del Arduino Uno, no podrias utilizar los pines como analogicos, ya que estos comparten la función del bus I2C.
Saludos.
HOLA FELICIDADES POR TU TRABAJO NOS ES DE MUCHA AYUDA A NUESTRAS DUDAS EN ESTOS ASUNTOS TENGO UN PROBLEMA Y ES COMO PODRÍA CONTROLAR UNA PLACA DE 4 SSR RELÉS, CON RTC MONTADO EN PLACA, DE FORMA INDEPENDIENTE QUE ESTUVIERAN ENCENDIDAS DE FORMA TEMPORIZADA 2 DE ELLOS EN BUCLE Y DE FORMA HORARIA LOS OTROS DOS EN ARDUINO MEGA O UNO TIENES POR AY UN EJEMPLO QUE ME PUDIERA SERVIR? GRACIAS DE ANTEMANO
Eso sería una pequeña modificación del último ejemplo.
Buenos días.
Que buen tutorial, pero permiteme preguntarte algo como podría hacer un cronometro programable cuenta arriba o abajo y que sonara un buzer y mostrarlo en una matriz p10. por tu ayuda mil gracias.
buenas noches.
tengo un problema y espero que ustedes puedan ayudarme.
lo que pasa es quiro tener la opcion de interumpir la funcion que se ejecute con la alarma, osea que por ejemplo: se activara un led a cierta hora, cierto tiempo.
lo que yo quiero hacer es que se apage con un boton o algo para que lo apague manualmente iterrumpiendo la duracion de esa alrma.
espero y me comprendan y gracias por su ayuda.
Hola.
Puedes controlar los pines del arduino de forma independiente a la del horario, por ejemplo puedes prender el led como se muestra en el ejemplo y apagarlo con digitaWrite().
Saludos.
Que tal, disculpa tengo un proyecto parecido, solo que yo quiero que me vaya suviendo la intenciadad de la luz cada cierto tiempo (hacer efecto amanecer, atardecer, y anochecer), que tendria que agregarle o quitar para hacer eso. gracias
Tengo la misma consulta que el compañero
Quisiera saber si es posible de esta manera registrar la hora exacta cuando falle la corriente eléctrica y de la misma manera registrar la hora exacta en lo que tenga nuevamente la corriente eléctrica
Si el RTC es con batería como el RTC3231 que es el más exacto si te mantiene la hora y al regresar el suministro sigue con la rutina como si nunca se cortara la luz.
Una consulta, es posible utilizar la funcion sleep en arduino uno? (o hay alguna otra alternativa)
precisaria realizar un evento cada 40 minutos por varios dias con 1500mah.
Gracias!
Hola, si deseo prender una bomba cada 45 minutos por 15 minutos todos los dias como tendria que poner el codigo. Gracias por la respuesta.
Y CUANTO QUIERES QUE TARDE PRENDIDA CADA 45 MIN
Hola esta muy bien el proyecto pero ya agregue mas focos y no entiendo como hacelos que funcionen en diferentes pines de mi arduino, lo que entiendo es que esta activo el pin 3 y 4 quisiera ver si se puede colocar horas diferentes para el pin 3 y para el pin 4 te agadezco tu atencion
Hola, que tal, quiero realizar esta practica pero sin la libreria , y en lugar de esa utilizar la para leer la hora del DS1307, pero me surge un conflicto con el tipo de variable uint8_t para almacenar los datos de fecha y hora y me marca como redeclarado, a que se debera? o como podria solucionarlo?
buenas tardes yo conecte el circuito pero el error que comete,es cuando desconecto y lo vuelvo a conectar la hora si la deja grabada pero si esta un foco encendido de acuerdo al horario al volverlo a conectar se apaga y se supone que deberia prender si ya esta programado que podra ser podrian ayudarme
Buenas, muy buen trabajo, lo que necesito es hacer que se ejecuten funciones simples en una banda de fechas ponele que de enero a marzo se ejecute tal funciones en determinadas horas (eso lo tengo echo pero funcionan durante cualquier fecha no en esa banda de fechas) otras penele de abril a octubre y otras noviembre y diciembre que repetiria las mismas de comienzo de año. porque al cargar las acciones de uno o el otro y superponer las bandas horarias me activa o desactiva sobre los extremos donde se superponen las acciones que corresponden a una fecha sobre las de otra.
Basicamente lo probe con un temporizador para un rele que active de ene a mar y de nov a dic de 19 a 6 y de abr a oct de 18 a 7 y me activa de 18 a 6.
que conexion estas utilizando para el display??, IIC?? necesito otras librerias para el dislay?? gracias.
quisiera mas detalles de conexión del proyecto de la lampara, para poder realizarlo. gracias
Hola.
Excelente informacion,te felicito pues esta muy bien detallada.
Personalmente me gustaria implementar tu proyecto y adicionarle una par de cosas mas, por lo tanto estoy pensando comprar un Arduino Mega… mi pregunta es: Puedo implementar tu proyecto (hardware y software) en un Arduino Mega sin ningun problema?
Saludos.
Buenas tardes, en teoria no deberias tener problemas usando un Arduino Mega. Saludos.
Hola, tengo un ds1302, y llevo varios dias intentando realizar exactamente el mismo proyecto por mi cuenta, pero resulta ser un verdadero dolor de cabeza. No tienes un tutorial o un articulo para el ds1302? cualquier ayuda o guía estaré tremendamente agradecido.
hola, tengo un modulo ds1302 sera compatible con el codigo?
saludos
Hola, debe ser posible pero requieres una librería para el DS1302 que pueda entregar un timestamp de unix. Si encuentras una librería con esta característica o la realizas tu, entonces es posible utilizarlo.
buenas tardes!
Estoy interesado en darle una aplicacion a tu proyecto, me podrias pasar algun diagrama de las conexiones, ??
Saludos y excelente proyecto
Hola nuevamente modifique la librería y si me efectuó los 40 eventos pero me parece buen punto como hacerlos que solo trabajen de lunes a viernes? si hay alguna forma?
Buenas noches.
No es posible especificar los dias, si se puede crear un evento semanal pero demandaría uno por día, por lo que se tendrían que dar de alta uno por día y eso serían 350 eventos.
Saludos.
Hola buenas tardes me parece muy bueno el desarrollo del proyecto, lo ejecute en un arduino nano y me funciono bien pero quiero agregar mas alarmas y solo me funcionaron 3 de la cuarta en adelante no funcionan ¿ Es una limitante del arduino o me pudieras ayudar? es decir copie y pegue la instrucción
Alarm.alarmRepeat(7, 00, 0, EventoEnciendeLuz);
Alarm.alarmRepeat(7, 00, 8, EventoApagaLuz);
Alarm.alarmRepeat(7, 50, 0, EventoEnciendeLuz);
Alarm.alarmRepeat(7, 50, 3, EventoApagaLuz);
Alarm.alarmRepeat(8, 40, 0, EventoEnciendeLuz);
Alarm.alarmRepeat(8, 40, 3, EventoApagaLuz);
Despues de esta alarma ya no me funcionan las subsecuentes requiero un total de 20 encendidos y 20 apagados
Gracias
Hola Francisco.
Tienes que cambiar la configuración de la librería en TimeAlarms.h, toma en cuenta que el Arduino NANO, UNO, Leonardo, etc. Tienen poca memoria y no se si se puedan agregar hasta 20. Si no funciona, tendrías que cambiar de placa o hacer la programación de otra forma. Por defecto la librería viene configurada para procesar 6 eventos y por eso no te funcionan los demas.
Espero que te sirva la pista, Saludos.
Si se puede, entra al archivo TimeAlarms.h editalo en la primer linea dice asi dtNBR_ALARMS 6 coloca 40 porque quieres 20 encendidos y 20 apagados y funciona muy bien
Muchas felicidades este trabajo es muy útil sobre todo de bajo costo, solo quería sugerir que si se puede agregar algo para que solo funcione de lunes a Viernes y encontrar la forma que sus librerías cambien el horario de verano en forma automática aquí en México gracias
Muchas gracias ya lo probé y funciona perfectamente espero sigas subiendo proyectos como es que son tan útiles e ingeniosos y nuevamente mochas gracias
Me da gusto que ya te haya funcionado, efectivamente tenía un detalle en el manejo de los puertos, pero ya esta corregido. Mil gracias por el feedback.
a mi no me da me podria explicar
Disculpa mi insistencia pero no logro accionar el relevador tengo duda en esta parte de la programación
/ Configurar los pines de salida de relevadores desactivados al inicio
// recordamos que los modulos de reles se activan con un estado bajo
pinMode(OUTPUT, 3);
digitalWrite(HIGH, 3);
pinMode(OUTPUT, 4);
digitalWrite(HIGH, 4);
ahora bien en la fotografia se ve que el rele esta al pin 3 y aqui se menciona el 4 y no falta la instruccion de int relay = 3;
Espero me puedas ayudar ya que tu proyecto es genial
Hice algunos ajustes en el programa. ¿podrías probarlo ahora?
ESTA MUY INTERESANTE EL PROYECTO YA FUNCIONA EN PANTALLA CON EL MONITOR SERIAL, PERO EL RELAY DE ARDUINO NO SE ACTIVA AUNQUE DIGA EL MONITOR QUE ESTA ENCENDIDO.
¿TAMBIEN SOLO FUNCIONA SI ESTA CONECTADO A LA COMPUTADORA Y AL MONITOR SERIAL?
PORQUE CUANDO LO CONECTO SOLO NO PARPADEA EL LED DEL ARDUINO INDICANDO EL SEGUNDERO
¿Hola, con que arduino estas trabajando? El led que parpadea cada segundo es en realidad el led TX de la interfaz serial, por lo tanto es probable que por eso no parpadee si tienes solo conectado el arduino sin el cable USB. La programación de horario debe funcionar aún sin el arduino conectado a la PC.
Estoy trabajando con placa arduino uno y si efectivamente es el TX de la interfaz serial, conecte los cables al pin 3 como lo muestras pero cuando llega al tiempo de accionar el relevador en pantalla dice enciende luz pero el relevador no se activa ¿hay que modificar algo en el programa o mi arduino no sirve?
Buenas tardes. Felicitaciones por expandir el conocimiento. quiero programar 4 eventos diferentes (luces , bombas,puertas). luces ejemplo prendan a las 6 y apaguen a las 10 todos los dias . y sis salgo a las 12 enciendan por detector de proximidad por 2 minutos. y la opcion que otros eventos los pueda tambien controlar desde internet. tengo un arduinl due y planeo comprar el rtc. el modulo eternet y un modulo de 8 canales. que tan factible resulta lo que quiero hacer . Muchas gracias
Hola.
Gracias por tu comentario. Lo que deseas hacer no es imposible pero también requiere trabajo en la parte de programación, si tienes paciencia y constancia seguramente que lo lograrás.
Mucha suerte con tu proyecto Marco.
necesito encender y apagar dos leds en diferentes horarios de lunes a viernes
como le puedo hacer?
Hola tendiras que implementar tus horarios y funciones callback usando Alarm.alarmRepeat(DayOfWeek, Hour, Minute, Second, AlarmFunction);
Puedes revisar la documentacion de la libreria aqui:
https://github.com/PaulStoffregen/TimeAlarms
hola, cordial saludo
que pasa si durante el evento ay un cote de energía.
si programo una lampara para que encienda a las 22h y se pague a las 06h si en ese intervalo de las 8 horas hay un corte de energia al reiniciarse el arduino uno, pero estando el RTC con la hora actual como sincroniza el tiempo que falta y enciende la lampra para terminar el proceso ?
Hola.
No es tan simple, el arduino al sincronizar el tiempo, vuelve a estar listo para procesar eventos, pero no va a poner sus salidas como estaban (o como deberían estar) antes del corte de energia. Esto corresponde a otra lógica que se debe programar de forma independiente.
Saludos.
Y como programo esto
Hola.
No mencionas bien que tipo de carro, pero si tiene batería no importaría que haya cortes de energía. Deberías conectar el arduino a una fuente de energía que no se interrmpa. Ese es el camino más sencillo.
Saludos.
Me puedes ayudar por favor tengo que programar un carro para que se apague a sierta ora y se me prenda a otra sin importar que ayan Cortes de energía
puedo utilizar el RTC DS3231 en vez del DS1307?
Si sin mayor problema, no necesitas cambiar nada
Saludos.