En la sociedad actual, la tecnología se ha integrado de manera imprescindible en nuestras vidas. Una de las herramientas más versátiles en este sentido es Arduino, un microcontrolador que nos permite automatizar tareas y simplificar nuestro día a día. En este artículo, te enseñaremos cómo completar tareas diarias utilizando Arduino de forma sencilla y efectiva. ¡Descubre todas las posibilidades que esta pequeña pero poderosa herramienta tiene para ofrecerte!
En este tutorial le mostraremos cómo realizar tareas cotidianas con Arduino. Encenderemos y apagaremos un LED a una hora concreta del día todos los días. Luego podrá modificar fácilmente el ejemplo proporcionado para realizar cualquier otra tarea.
Descripción del proyecto
- Este proyecto utiliza el Módulo de reloj en tiempo real DS1307 para realizar un seguimiento del tiempo. Puede encontrar una introducción al módulo RTC aquí: Instrucciones del módulo de reloj en tiempo real con Arduino (DS1307 y DS3231).
- En el ejemplo dado, un LED se enciende todos los días a las 7:00 p. m. y se apaga a las 9:00 a. m. todos los días.
- Puede modificar fácilmente el código para activar sus propios eventos y su sincronización.
Piezas requeridas
Para este ejemplo, necesitará las siguientes piezas (haga clic en los enlaces a continuación para encontrar el mejor precio en Asesor de creadores):
- Arduino UNO – leer Los mejores kits de inicio de Arduino
- Módulo RTC DS1307
- 1xLED
- 1x resistencia de 220 ohmios
- tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema
Conecte el módulo DS1307 RTC al Arduino y al LED como se muestra en el siguiente esquema.
También puede consultar la siguiente tabla para conectar el módulo RTC DS1307 a Arduino.
Pin del módulo DS1307 RTC | Cableado con Arduino Uno |
SCL | A5 |
ASD | A4 |
VCC | 5V |
Dimensiones | Dimensiones |
Instalación de bibliotecas
Para este ejemplo necesita instalar las siguientes bibliotecas: Tiempo, Alertas de tiempoY DS1307RTC creado por Michael Margolis y mantenido por Paul Stoffregen:
Para instalar estas bibliotecas, vaya al IDE de Arduino Bosquejo > incluir biblioteca > Administrar bibliotecas. Luego ingrese el nombre de las bibliotecas para instalarlas.
Establecer la hora del módulo RTC DS1307
Para configurar la hora del módulo DS1307 RTC, debe cargar el siguiente boceto en su placa Arduino y ejecutarlo una vez:
/*
SetTime.ino sketch to set the time of DS1307 RTC - created by Paul Stoffregen
github.com/PaulStoffregen/DS1307RTC/blob/master/examples/SetTime/SetTime.ino
*/
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
tmElements_t tm;
void setup() {
bool parse=false;
bool config=false;
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
if (parse && config) {
Serial.print("DS1307 configured Time=");
Serial.print(__TIME__);
Serial.print(", Date=");
Serial.println(__DATE__);
} else if (parse) {
Serial.println("DS1307 Communication Error :-{");
Serial.println("Please check your circuitry");
} else {
Serial.print("Could not parse info from the compiler, Time="");
Serial.print(__TIME__);
Serial.print("", Date="");
Serial.print(__DATE__);
Serial.println(""");
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
bool getDate(const char *str)
{
char Month[12];
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
Esto es lo que ves en el monitor serie de tu IDE de Arduino:
Una vez que la hora y la fecha estén configuradas correctamente, podrá continuar con este proyecto y cargar el boceto final.
código
El código proporcionado apaga el LED todas las mañanas a las 9:00 a. m. y lo enciende todas las noches a las 7:00 p. m. Copie el siguiente código en el IDE de Arduino y cárguelo en su placa Arduino.
/*
*
* Complete project details at https://randomnerdtutorials.com
* Based on TimeAlarmExample from TimeAlarms library created by Michael Margolis
*
*/
#include <TimeLib.h>
#include <TimeAlarms.h>
#include <Wire.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
const int led = 7;
void setup() {
// prepare pin as output
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(9600);
// wait for Arduino Serial Monitor
while (!Serial) ;
// get and set the time from the RTC
setSyncProvider(RTC.get);
if (timeStatus() != timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
// to test your project, you can set the time manually
//setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
// create the alarms, to trigger functions at specific times
Alarm.alarmRepeat(9,0,0,MorningAlarm); // 9:00am every day
Alarm.alarmRepeat(19,0,0,EveningAlarm); // 19:00 -> 7:00pm every day
}
void loop() {
digitalClockDisplay();
// wait one second between each clock display in serial monitor
Alarm.delay(1000);
}
// functions to be called when an alarm triggers
void MorningAlarm() {
// write here the task to perform every morning
Serial.println("Tturn light off");
digitalWrite(led, LOW);
}
void EveningAlarm() {
// write here the task to perform every evening
Serial.println("Turn light on");
digitalWrite(led, HIGH);
}
void digitalClockDisplay() {
// digital clock display of the time
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 código es fácil de entender y se puede modificar fácilmente. Continúe leyendo esta página para aprender cómo funciona el código.
Importando bibliotecas
Primero, importe las bibliotecas necesarias para crear alarmas horarias e interactuar con el módulo RTC:
#include <TimeLib.h> #include <TimeAlarms.h> #include <Wire.h> #include <DS1307RTC.h>
consigue el tiempo
En el configuración()Obtienes la hora del RTC con la siguiente línea:
setSyncProvider(RTC.get);
También puede mostrar un mensaje en el monitor serie para saber si la hora se sincronizó correctamente:
if (timeStatus() != timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time");
Puede configurar la hora manualmente; simplemente descomente la siguiente línea. Esto es particularmente útil para probar tus bocetos, ya que puedes cambiar fácilmente la hora y probar si suenan las alarmas.
//setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
Configurar alarmas
La siguiente línea resuelve que alarma matutina Función todos los días a las 9:00 am. El alarma matutina se define después del bucle().
Alarm.alarmRepeat(9,0,0, MorningAlarm); // 9:00am every day
Para cambiar la hora solo necesitas cambiar los números. 9.0.0con el tiempo deseado. El primer número es la hora, el segundo son los minutos y el tercero son los segundos.
El alarma nocturna La función se activa todos los días a las 7:00 p. m.
Alarm.alarmRepeat(19,0,0, EveningAlarm); // 19:00 -> 7:00pm every day
Cinta()
En el Cinta() Puede mostrar la hora cada segundo en el monitor serie presionando el botón pantalla de reloj digital() Función que se definirá más adelante en el código.
void loop() { digitalClockDisplay(); Alarm.delay(1000); // wait one second between clock display }
Definir tareas
El Alarma de la mañana() Y alarma nocturna() Las funciones se llaman en el momento que usted define. configuración().
Para editar sus tareas, solo necesita agregarlas al Alarma de la mañana() Y alarma nocturna() Características.
void MorningAlarm() { // write here the task to perform every morning Serial.println("Alarm: - turn lights off"); digitalWrite(led, LOW); }
void EveningAlarm() { // write here the task to perform every evening Serial.println("Alarm: - turn lights on"); digitalWrite(led, HIGH); }
Aquí simplemente imprimimos un mensaje en el monitor serie y encendemos y apagamos un LED.
La idea es que uses este ejemplo para que tu Arduino realice una tarea útil a la misma hora todos los días.
Envolver
En este tutorial, le mostramos cómo realizar tareas cotidianas con Arduino. El ejemplo proporcionado es simple, por lo que puedes adaptarlo fácilmente a tus proyectos. Aquí hay algunas ideas de tareas que puede automatizar usando esta técnica:
- Encender/apagar las luces a una hora específica
- cerrar las persianas
- Alimenta a tus mascotas
¿Te gustaría utilizar Arduino Daily Task en uno de tus proyectos? Háganos saber dejando un comentario a continuación.
Si te gusta Arduino, es posible que te gusten las siguientes publicaciones de blog:
- Instrucciones para pantalla TFT 1.8 con Arduino
- Instrucciones para el Escudo GPRS GSM SIM900 con Arduino
- Instrucciones del módulo de tarjeta SD con Arduino
- Curso de proyecto Arduino paso a paso.
Esperamos que hayas encontrado útil esta publicación. Gracias por leer.
Proyecto overview
En este tutorial te mostraremos cómo completar tareas diarias con Arduino. Vamos a encender y apagar un LED a una hora específica del día, todos los días. Puedes modificar fácilmente el ejemplo proporcionado para realizar cualquier otra tarea.
Visión general del proyecto
Este proyecto utiliza el módulo DS1307 Real Time Clock para llevar un registro del tiempo. Para obtener una introducción al módulo RTC, lee: Guía para el módulo de Real Time Clock con Arduino (DS1307 y DS3231).
El ejemplo proporcionado encenderá un LED todos los días a las 7:00 PM y lo apagará todos los días a las 9:00 AM. Puedes modificar fácilmente el código para activar tus propios eventos y la hora en que ocurren.
Partes requeridas
Para este ejemplo necesitas las siguientes partes:
- Arduino UNO
- Módulo RTC DS1307
- 1 LED
- 1 resistor de 220 Ohmios
- Protoboard
- Cables jumper
Puedes encontrar todas las partes para tus proyectos al mejor precio en Maker Advisor.
Esquemático
Cablea el módulo DS1307 RTC al Arduino y al LED, como se muestra en el esquemático. Puedes seguir la tabla proporcionada para cablear el módulo DS1307 RTC al Arduino.
Instalación de librerías
Para este ejemplo necesitas instalar las siguientes librerías: Time, TimeAlarms y DS1307RTC creadas por Michael Margolis y mantenidas por Paul Stoffregen.
Para instalar estas librerías, en el IDE de Arduino ve a Sketch > Include Library > Manage Libraries. Luego, ingresa el nombre de las librerías para instalarlas.
Configuración del tiempo del módulo DS1307 RTC
Para configurar la hora del módul DS1307 RTC, necesitas cargar el siguiente sketch en tu placa Arduino y ejecutarlo una vez:
Código para configurar la hora del módulo DS1307 RTC…
Código
El código proporcionado apaga el LED todas las mañanas a las 9:00 AM y lo enciende todas las tardes a las 7:00 PM. Copia el siguiente código en el IDE de Arduino y cárgalo en tu placa Arduino.
Código para encender y apagar un LED a horas específicas…
Importando librerías
Primero, importas las librerías necesarias para crear alarmas de tiempo e interactuar con el módulo RTC.
Obteniendo la hora
En el setup(), obtienes la hora del módulo RTC y la sincronizas con tu sistema. También muestras un mensaje en el monitor serial para saber si la sincronización fue exitosa.
Configurando alarmas
En la función loop() muestras la hora en el monitor serial cada segundo llamando a la función digitalClockDisplay().
Definiendo las tareas
Se definen las funciones MorningAlarm() y EveningAlarm() que se llamarán en los horarios establecidos. En estas funciones puedes escribir tus tareas para cada momento del día.
Conclusión
En este tutorial te hemos mostrado cómo puedes completar tareas diarias con Arduino. El ejemplo proporcionado es sencillo para que puedas adaptarlo a tus proyectos. ¿Planeas usar esta técnica en uno de tus proyectos? ¡Déjanos saber en los comentarios!
¡Qué interesante! Nunca pensé que Arduino pudiera hacer mi vida diaria más fácil. ¡Genial artículo! 🤯👏
Wow, nunca se me había ocurrido usar Arduino para completar tareas diarias. ¡Definitivamente quiero probarlo ahora! 😱🤖