Estoy haciendo un sistema de riego automático con el módulo rtc, un lcd y un módulo relé, todo va bien, pero al programar cuándo se enciende el relé, no sé como configurar los días, (la hora y los minutos si).
Aquí mi código:
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
# define Rele 3
int tonePin = 10;
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
void setup () {
pinMode(Rele, OUTPUT);
lcd.init();
lcd.backlight();
lcd.clear();
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicaci¢n con el RTC
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop(){
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.day(), DEC); // Dia
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.year(), DEC); // A§o
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
lcd.setCursor(0,0);
lcd.print("Fecha: ");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);
lcd.print("");
lcd.setCursor(0,1);
lcd.print("Hora: ");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
delay(1000); // La informaci¢n se actualiza cada 1 seg.
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
{
digitalWrite(Rele, HIGH);
DateTime fecha = RTC.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
if ( fecha.hour() == 23 && fecha.minute() == 30 ){ // si hora = 23 y minutos = 30
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Regado En");
lcd.setCursor(0,1);
lcd.print(" Proceso...");
delay(1000);
digitalWrite(Rele, LOW); // activa modulo de rele con nivel alto
delay(10000);
}
}
}