2021-07-06 15:09:14 -04:00
|
|
|
#include <Servo.h>
|
|
|
|
#include <RTClib.h>
|
|
|
|
|
|
|
|
Servo myservo_X;
|
|
|
|
RTC_DS3231 reloj;
|
|
|
|
|
|
|
|
volatile DateTime fecha;
|
|
|
|
unsigned long intervalo_loop=5000;
|
|
|
|
unsigned long previoMillisTermo=0;
|
|
|
|
unsigned long previoMillisLoop=0;
|
|
|
|
unsigned long actualMillis;
|
2021-07-07 16:01:19 -04:00
|
|
|
byte horaON=5;
|
|
|
|
byte horaOFF=7;
|
2021-07-06 15:09:14 -04:00
|
|
|
byte horaON2=16;
|
|
|
|
byte horaOFF2=18;
|
|
|
|
byte cont=0;
|
|
|
|
bool estado_termo;
|
|
|
|
bool espera;
|
|
|
|
bool start;
|
|
|
|
|
|
|
|
void setup() {
|
2021-07-07 16:01:19 -04:00
|
|
|
myservo_X.attach(9);
|
|
|
|
reloj.begin();
|
|
|
|
start=1;
|
|
|
|
estado_termo=0;
|
2021-07-07 19:21:36 -04:00
|
|
|
//reloj.adjust(DateTime(__DATE__, __TIME__));
|
2021-07-06 15:09:14 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
2021-07-07 16:01:19 -04:00
|
|
|
if(start) {
|
|
|
|
myservo_X.write(30);
|
|
|
|
start=0;
|
|
|
|
fecha=reloj.now();
|
|
|
|
}
|
|
|
|
actualMillis = millis();
|
|
|
|
if ((unsigned long)(actualMillis - previoMillisLoop) >= intervalo_loop) {
|
|
|
|
fecha = reloj.now();
|
|
|
|
if((((fecha.hour() >= horaON) && (fecha.hour() < horaOFF)) ||
|
|
|
|
((fecha.hour() >= horaON2) && (fecha.hour() < horaOFF2))) && (estado_termo==0)) {
|
2021-07-07 19:21:36 -04:00
|
|
|
termoACC(120, 110);
|
2021-07-07 16:01:19 -04:00
|
|
|
} else if((((fecha.hour() < horaON) || (fecha.hour() >= horaOFF)) &&
|
2021-07-07 16:04:23 -04:00
|
|
|
((fecha.hour() < horaON2) || (fecha.hour() >= horaOFF2))) && (estado_termo==1)) {
|
2021-07-07 19:21:36 -04:00
|
|
|
termoACC(45, 62);
|
2021-07-07 16:01:19 -04:00
|
|
|
}
|
|
|
|
previoMillisLoop = millis();
|
2021-07-06 15:09:14 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-07-07 19:21:36 -04:00
|
|
|
void termoACC(byte pos1, byte pos2) {
|
|
|
|
myservo_X.write(pos1);
|
2021-07-07 16:01:19 -04:00
|
|
|
espera=0;
|
|
|
|
cont=0;
|
|
|
|
previoMillisTermo=millis();
|
|
|
|
do{
|
|
|
|
actualMillis=millis();
|
|
|
|
if(espera==0) {
|
|
|
|
if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) {
|
2021-07-07 19:21:36 -04:00
|
|
|
myservo_X.write(pos2);
|
2021-07-07 16:01:19 -04:00
|
|
|
previoMillisTermo=millis();
|
|
|
|
espera=1;
|
|
|
|
cont++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(espera==1) {
|
|
|
|
if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) {
|
2021-07-07 19:21:36 -04:00
|
|
|
myservo_X.write(pos1);
|
2021-07-07 16:01:19 -04:00
|
|
|
previoMillisTermo=millis();
|
|
|
|
espera=0;
|
|
|
|
cont++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while (cont<4);
|
2021-07-07 19:21:36 -04:00
|
|
|
estado_termo=!estado_termo;
|
2021-07-06 15:09:14 -04:00
|
|
|
}
|
2021-07-07 19:21:36 -04:00
|
|
|
|