add EEPROM y variables de control

This commit is contained in:
jp.av.dev 2021-07-08 02:05:10 -04:00
parent 21239552c8
commit 3389c25f66

View File

@ -1,5 +1,15 @@
#include <Servo.h> #include <Servo.h>
#include <RTClib.h> #include <RTClib.h>
#include <EEPROM.h>
#define dirHoraON1 0
#define dirHoraOFF1 1
#define dirHoraON2 2
#define dirHoraOFF2 3
#define dirPosON1 4
#define dirPosON2 5
#define dirPosOFF1 6
#define dirPosOFF2 7
Servo myservo_X; Servo myservo_X;
RTC_DS3231 reloj; RTC_DS3231 reloj;
@ -9,10 +19,14 @@ unsigned long intervalo_loop=5000;
unsigned long previoMillisTermo=0; unsigned long previoMillisTermo=0;
unsigned long previoMillisLoop=0; unsigned long previoMillisLoop=0;
unsigned long actualMillis; unsigned long actualMillis;
byte horaON=5; byte horaON1;
byte horaOFF=7; byte horaOFF1;
byte horaON2=16; byte horaON2;
byte horaOFF2=18; byte horaOFF2;
byte posON1;
byte posON2;
byte posOFF1;
byte posOFF2;
byte cont=0; byte cont=0;
bool estado_termo; bool estado_termo;
bool espera; bool espera;
@ -21,8 +35,10 @@ bool start;
void setup() { void setup() {
myservo_X.attach(9); myservo_X.attach(9);
reloj.begin(); reloj.begin();
start=1; setVarControl(); // Provisorio, a dividir segun control horario, posiciones. futuras vars
estado_termo=0; estado_termo=0;
variablesControl();
start=1;
//reloj.adjust(DateTime(__DATE__, __TIME__)); //reloj.adjust(DateTime(__DATE__, __TIME__));
} }
@ -35,12 +51,12 @@ void loop() {
actualMillis = millis(); actualMillis = millis();
if ((unsigned long)(actualMillis - previoMillisLoop) >= intervalo_loop) { if ((unsigned long)(actualMillis - previoMillisLoop) >= intervalo_loop) {
fecha = reloj.now(); fecha = reloj.now();
if((((fecha.hour() >= horaON) && (fecha.hour() < horaOFF)) || if((((fecha.hour() >= horaON1) && (fecha.hour() < horaOFF1)) ||
((fecha.hour() >= horaON2) && (fecha.hour() < horaOFF2))) && (estado_termo==0)) { ((fecha.hour() >= horaON2) && (fecha.hour() < horaOFF2))) && (estado_termo==0)) {
termoACC(120, 110); termoACC(posON1, posON2);
} else if((((fecha.hour() < horaON) || (fecha.hour() >= horaOFF)) && } else if((((fecha.hour() < horaON1) || (fecha.hour() >= horaOFF1)) &&
((fecha.hour() < horaON2) || (fecha.hour() >= horaOFF2))) && (estado_termo==1)) { ((fecha.hour() < horaON2) || (fecha.hour() >= horaOFF2))) && (estado_termo==1)) {
termoACC(45, 62); termoACC(posOFF1, posOFF2);
} }
previoMillisLoop = millis(); previoMillisLoop = millis();
} }
@ -73,3 +89,33 @@ void termoACC(byte pos1, byte pos2) {
estado_termo=!estado_termo; estado_termo=!estado_termo;
} }
// provisorio, case config para hora, horas o dias, posiciones, etc.
void setVarControl() {
horaON1 = 5;
horaOFF2 = 7;
horaON2 = 16;
horaOFF2 = 18;
posON1 = 120;
posON2 = 110;
posOFF1 = 45;
posOFF2 = 62;
EEPROM.put(dirHoraON1, horaON1);
EEPROM.put(dirHoraOFF1, horaOFF1);
EEPROM.put(dirHoraON2, horaON2);
EEPROM.put(dirHoraOFF2, horaOFF2);
EEPROM.put(dirPosON1,posON1);
EEPROM.put(dirPosON2, posON2);
EEPROM.put(dirPosOFF1, posOFF1);
EEPROM.put(dirPosOFF2, posOFF2);
}
void variablesControl() {
horaON1 = EEPROM.read(dirHoraON1);
horaOFF1 = EEPROM.read(dirHoraOFF2);
horaON2 = EEPROM.read(dirHoraON2);
horaOFF2 = EEPROM.read(dirHoraOFF2);
posON1 = EEPROM.read(dirPosON1);
posON2 = EEPROM.read(dirPosON2);
posOFF1 = EEPROM.read(dirPosOFF1);
posOFF2 = EEPROM.read(dirPosOFF2);
}