#include <Wire.h> // incluye libreria para interfaz I2C
#include <RTClib.h> // incluye libreria para el manejo del modulo RTC
RTC_DS1307 rtc; // crea objeto del tipo RTC_DS3231
bool evento_inicio = true; // variable de control para inicio de evento con valor true
bool evento_fin = true; // variable de control para finalizacion de evento con valor true
int PIR = 2; // señal de PIR a pin 2
int RELE = 3; // IN de rele a pin 3
int RELE2 = 5; // IN de rele a pin 5
int ESTADO = 0; // almacena estado de señal
//# define RELE 3 // constante RELE con valor 3 que corresponde a pin digital 3
//# define PIR 2
// donde se encuentra conectado el modulo de rele
void setup () {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
pinMode(RELE, OUTPUT); // pin 3 como salida
pinMode(RELE2, OUTPUT); // pin 3 como salida
pinMode(PIR, INPUT);
delay(20000); // demora para estabilizar el sensor
if (! rtc.begin()) { // si falla la inicializacion del modulo
Serial.println("Modulo RTC no encontrado !"); // muestra mensaje de error
while (1); // bucle infinito que detiene ejecucion del programa
}
}
void loop () {
DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
int ESTADO = 0; //almacena estado de señal
// Estabilizacion de voltaje
// .........
if ( fecha.hour() == 17 && fecha.minute() == 54 ) { // si hora = 14 y minutos = 30
if ( evento_inicio == true ) { // si evento_inicio es verdadero
digitalWrite(RELE, HIGH); // activa modulo de rele con nivel alto
digitalWrite(RELE2, HIGH); // activa modulo de rele 2 con nivel alto
Serial.println( "Rele encendido" ); // muestra texto en monitor serie
evento_inicio = false; // carga valor falso en variable de control
} // para evitar ingresar mas de una vez
ESTADO = digitalRead(PIR); // lectura de estado de señal
if (ESTADO == HIGH) { // si la señal esta en alto indicando movimiento
digitalWrite(RELE, LOW); // activa modulo de rele con nivel bajo
delay(4000);
digitalWrite(RELE, HIGH);
}
}
if ( fecha.hour() == 17 && fecha.minute() == 57 ) { // si hora = 15 y minutos = 30
if ( evento_fin == true ) { // si evento_fin es verdadero
digitalWrite(RELE, LOW); // desactiva modulo de rele con nivel bajo
digitalWrite(RELE2, LOW); // desactiva modulo de rele con nivel bajo
Serial.println( "Rele apagado" ); // muestra texto en monitor serie
evento_fin = false; // carga valor falso en variable de control
} // para evitar ingresar mas de una vez
}
Serial.print(fecha.day()); // funcion que obtiene el dia de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.year()); // funcion que obtiene el año de la fecha completa
Serial.print(" "); // caracter espacio en blanco como separador
Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.println(fecha.second()); // funcion que obtiene los segundos de la fecha completa
delay(1000); // demora de 1 segundo
if ( fecha.hour() == 2 && fecha.minute() == 0 ) { // si hora = 2 y minutos = 0 restablece valores de
evento_inicio = true; // variables de control en verdadero
evento_fin = true;
}
}
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>
Edita titulo, nada de "Necesito ayuda...."
Además de lo que te dice el moderador de que te leas las normas y edites el código para que se vea correctamente, ¿qué es lo que tu código tiene que hacer? ¿qué es lo que no entiendes?