Estoy intentando hacer una "alarma" que funcione de 6 de la tarde a 7 de la mañan y que consiste en que cuando una persona pase por en frente de un sensor de ultrasonido lo detecte y encienda un led y si fuera posible que se mantubiera encendido(aunque eso lo puedo ver despues yo) tengo este codigo pero el led no enciende por la hora incluso si utilizo solamente la hora y no el sensor de ultrasonido como metodo de encendido el rtc dice que son las 18 o mas pero el led no enciende espero que me puedan ayudar
Aqui esta el codigo ,Gracias de antemano
#include <Wire.h>
#include <RTClib.h>
#define led 2
int estado = 0;
int TRIG = 10; // trigger en pin 10
int ECO = 9; // echo en pin 9
int DURACION;
int DISTANCIA;
bool evento_inicio = true;
bool evento_fin = true;
RTC_DS3231 rtc;
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(TRIG, OUTPUT); // trigger como salida
pinMode(ECO, INPUT);
if (! rtc.begin()) {
Serial.println("Modulo RTC no encontrado !");
while (1);
}
}
void loop()
{
digitalWrite(TRIG, HIGH); // generacion del pulso a enviar
delay(1); // al pin conectado al trigger
digitalWrite(TRIG, LOW); // del sensor
DURACION = pulseIn(ECO, HIGH); // con funcion pulseIn se espera un pulso
// alto en Echo
DISTANCIA = DURACION / 58.2; // distancia medida en centimetros
// envio de valor de distancia por monitor serial
delay(200);
DateTime fecha = rtc.now();
if ( fecha.hour() == 18 && fecha.minute() == 00 ) { // si hora = 18 y minutos = 00
//if(){
if ( evento_inicio == true ) {
if(DISTANCIA <= 70 && DISTANCIA >= 0 ){
digitalWrite(led, HIGH); // activa modulo de rele con nivel alto
Serial.println( "led encendido" ); // muestra texto en monitor serie
evento_inicio = false;
}
// carga valor falso en variable de control
}
// }
}
if ( fecha.hour() == 7 && fecha.minute() == 00 ) { // si hora = 7 y minutos = 00
if ( evento_fin == true ) { // si evento_fin es verdadero
digitalWrite(led, LOW); // desactiva modulo de rele con nivel bajo
Serial.println( "led 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(DISTANCIA);
Serial.print("\n");
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());
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;
}
}