Cómo completar tareas diarias con Arduino

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.

Cómo completar tareas diarias con Arduino

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.

Cómo completar tareas diarias con Arduino

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):

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

Cómo completar tareas diarias con Arduino

Esquema

Conecte el módulo DS1307 RTC al Arduino y al LED como se muestra en el siguiente esquema.

Cómo completar tareas diarias con ArduinoTambié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:

Cómo completar tareas diarias con Arduino

Para instalar estas bibliotecas, vaya al IDE de Arduino Bosquejo > incluir biblioteca > Administrar bibliotecas. Luego ingrese el nombre de las bibliotecas para instalarlas.

Cómo completar tareas diarias con Arduino

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;
}

Ver código sin formato

Esto es lo que ves en el monitor serie de tu IDE de Arduino:

Cómo completar tareas diarias con 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);
}

Ver código sin formato

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.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded




Cómo completar tareas diarias con Arduino

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:

  1. Arduino UNO
  2. Módulo RTC DS1307
  3. 1 LED
  4. 1 resistor de 220 Ohmios
  5. Protoboard
  6. 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!


2 comentarios en «Cómo completar tareas diarias con Arduino»

Deja un comentario