From 1a95bcc72357baf84fa5d2ce5c8658b5f4a5dd71 Mon Sep 17 00:00:00 2001 From: "jp.av.dev" Date: Tue, 6 Jul 2021 15:09:14 -0400 Subject: [PATCH] inicio repo --- README.md | 0 caldera_rata_1/caldera_rata_1.ino | 158 +++++++++++++++++++ caldera_rata_1_deb/caldera_rata_1_deb.ino | 181 ++++++++++++++++++++++ caldera_rata_2/caldera_rata_2.ino | 167 ++++++++++++++++++++ caldera_rata_2_deb/caldera_rata_2_deb.ino | 176 +++++++++++++++++++++ 5 files changed, 682 insertions(+) create mode 100644 README.md create mode 100755 caldera_rata_1/caldera_rata_1.ino create mode 100755 caldera_rata_1_deb/caldera_rata_1_deb.ino create mode 100644 caldera_rata_2/caldera_rata_2.ino create mode 100644 caldera_rata_2_deb/caldera_rata_2_deb.ino diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/caldera_rata_1/caldera_rata_1.ino b/caldera_rata_1/caldera_rata_1.ino new file mode 100755 index 0000000..13e33fa --- /dev/null +++ b/caldera_rata_1/caldera_rata_1.ino @@ -0,0 +1,158 @@ +#include +#include + +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; +byte horaON = 5; +byte horaOFF = 7; +byte cont=0; +bool estado_termo; +bool espera; +bool start; + +void setup() { + myservo_X.attach(9); + Serial.begin(115200); + reloj.begin(); + start=1; + estado_termo = 0; + //reloj.adjust(DateTime(__DATE__, __TIME__)); +} + + +void loop() { + if(start) { + myservo_X.write(30); + start=0; + fecha = reloj.now(); + printFecha(); + } + actualMillis = millis(); + if ((unsigned long)(actualMillis - previoMillisLoop) >= intervalo_loop) { + fecha = reloj.now(); + if((fecha.hour() >= horaON) && (fecha.hour() < horaOFF) && (estado_termo == 0)) { + termoON(); + } else if(((fecha.hour() < horaON) || (fecha.hour() >= horaOFF)) && (estado_termo == 1)) { + termoOFF(); + } + previoMillisLoop = millis(); + } +} + +// Secuencia de encendido y apagado de Caldera +void termoON() { + myservo_X.write(120); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(110); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(120); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 1; +} + +void termoOFF() { + myservo_X.write(45); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(62); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(45); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 0; +} + +//En caso de ser necesario mostrar hora, este codigo añade un 0 a los valores menores a 10 +String getHora(char var) { + switch (var) { + case 'h': + if(fecha.hour() < 10) { + return ('0'+(String)fecha.hour()); break; + } else { + return (String)fecha.hour();break; + } + case 'm': + if(fecha.minute() <10) { + return ('0'+(String)fecha.minute()); break; + } else { + return (String)fecha.minute();break; + } + case 's': + if(fecha.second() <10) { + return ('0'+(String)fecha.second()); break; + } else { + return (String)fecha.second();break; + } + case 'd': + if(fecha.day() <10) { + return ('0'+(String)fecha.day()); break; + } else { + return (String)fecha.day();break; + } + case 'n': + if(fecha.month() <10) { + return ('0'+(String)fecha.month()); break; + } else { + return (String)fecha.month();break; + } + case 'a': + if(fecha.year() <10) { + return ('0'+(String)fecha.year()); break; + } else { + return (String)fecha.year();break; + } + } +} + +// Enviar hora y fecha por puerto serie +void printFecha() { + Serial.print(getHora('d')); + Serial.print("/"); + Serial.print(getHora('n')); + Serial.print("/"); + Serial.print(getHora('a')); + Serial.print(" "); + Serial.print(getHora('h')); + Serial.print(":"); + Serial.print(getHora('m')); + Serial.print(":"); + Serial.println(getHora('s')); +} diff --git a/caldera_rata_1_deb/caldera_rata_1_deb.ino b/caldera_rata_1_deb/caldera_rata_1_deb.ino new file mode 100755 index 0000000..6e6e572 --- /dev/null +++ b/caldera_rata_1_deb/caldera_rata_1_deb.ino @@ -0,0 +1,181 @@ +#include +#include + +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; +byte horaON = 5; +byte horaOFF = 35; +byte cont=0; +bool estado_termo; +bool espera; +bool start; + +void setup() { + myservo_X.attach(9); + Serial.begin(115200); // COMENTAR ****** + reloj.begin(); + start=1; + estado_termo = 0; +} +//reloj.adjust(DateTime(__DATE__, __TIME__)); + +void loop() { + if(start) { + myservo_X.write(30); + Serial.print("Servo a CERO"); + start=0; + } + actualMillis = millis(); + if ((unsigned long)(actualMillis - previoMillisLoop) >= intervalo_loop) { + Serial.println("LOOP"); // COMENTAR ****** + Serial.println("Consulta RTC"); // COMENTAR ****** + fecha = reloj.now(); // COMENTAR ****** + mostrarFechaSerie(); // COMENTAR ****** + Serial.print("Estado Termo en LOOP = "); + Serial.println(estado_termo); + if((fecha.second() >= horaON) && (fecha.second() < horaOFF) && (estado_termo == 0)) { + termoON(); + Serial.print("Termo = "); + Serial.println(estado_termo); + } else if(((fecha.second() < horaON) || (fecha.second() >= horaOFF)) && (estado_termo == 1)) { + termoOFF(); + Serial.print("Termo = "); + Serial.println(estado_termo); + } + previoMillisLoop = millis(); + } +} + +// Secuencia de encendido y apagado de Caldera +void termoON() { + Serial.println("termoON() :"); + myservo_X.write(120); + Serial.println(" S120 "); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + Serial.print("do while -> contador y posicion servo : "); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(110); + previoMillisTermo = millis(); + espera = 1; + cont++; + Serial.print(" Servo=110 - cont="); + Serial.print(cont); + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(120); + previoMillisTermo = millis(); + espera = 0; + cont++; + Serial.print(" Servo=120 - cont="); + Serial.print(cont); + } + } + } while (cont < 4); + Serial.println(""); + estado_termo = 1; +} + +void termoOFF() { + Serial.println("termoOFF() :"); + myservo_X.write(45); + Serial.println(" S45 "); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + Serial.print("do while -> contador y posicion servo : "); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(62); + previoMillisTermo = millis(); + espera = 1; + cont++; + Serial.print(" Servo=62 - cont="); + Serial.print(cont); + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(45); + previoMillisTermo = millis(); + espera = 0; + cont++; + Serial.print(" Servo=145 - cont="); + Serial.print(cont); + } + } + } while (cont < 4); + Serial.println(""); + estado_termo = 0; +} + +//En caso de ser necesario mostrar hora, este codigo añade un 0 a los valores menores a 10 +String getHora(char var) { + switch (var) { + case 'h': + if(fecha.hour() < 10) { + return ('0'+(String)fecha.hour()); break; + } else { + return (String)fecha.hour();break; + } + case 'm': + if(fecha.minute() <10) { + return ('0'+(String)fecha.minute()); break; + } else { + return (String)fecha.minute();break; + } + case 's': + if(fecha.second() <10) { + return ('0'+(String)fecha.second()); break; + } else { + return (String)fecha.second();break; + } + case 'd': + if(fecha.day() <10) { + return ('0'+(String)fecha.day()); break; + } else { + return (String)fecha.day();break; + } + case 'n': + if(fecha.month() <10) { + return ('0'+(String)fecha.month()); break; + } else { + return (String)fecha.month();break; + } + case 'a': + if(fecha.year() <10) { + return ('0'+(String)fecha.year()); break; + } else { + return (String)fecha.year();break; + } + } +} + +// Enviar hora y fecha por puerto serie +void mostrarFechaSerie() { + Serial.print(getHora('d')); + Serial.print("/"); + Serial.print(getHora('n')); + Serial.print("/"); + Serial.print(getHora('a')); + Serial.print(" "); + Serial.print(getHora('h')); + Serial.print(":"); + Serial.print(getHora('m')); + Serial.print(":"); + Serial.println(getHora('s')); +} diff --git a/caldera_rata_2/caldera_rata_2.ino b/caldera_rata_2/caldera_rata_2.ino new file mode 100644 index 0000000..ef23462 --- /dev/null +++ b/caldera_rata_2/caldera_rata_2.ino @@ -0,0 +1,167 @@ +#include +#include + +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; +byte horaON = 5; +byte horaOFF = 7; +byte horaON2=16; +byte horaOFF2=18; +byte cont=0; +bool estado_termo; +bool espera; +bool start; + +void setup() { + myservo_X.attach(9); + reloj.begin(); + start=1; + estado_termo = 0; + +} +//Serial.begin(9600); +//reloj.adjust(DateTime(__DATE__, __TIME__)); +//DateTime dt(2021, 7, 5, 17, 32, 0); +//reloj.adjust(dt); + +void loop() { + 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)) { + termoON(); + } else if(((fecha.hour() < horaON) || (fecha.hour() >= horaOFF)) && + ((fecha.hour() < horaON2) || (fecha.hour() >= horaOFF2)) && + (estado_termo == 1)) { + termoOFF(); + } + previoMillisLoop = millis(); + } +} + +// Secuencias de encendido y apagado de Caldera +void termoON() { + myservo_X.write(120); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(110); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(120); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 1; +} + +void termoOFF() { + myservo_X.write(45); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(62); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(45); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 0; +} + +//En caso de ser necesario mostrar hora, este codigo añade un 0 a los valores menores a 10 +//String getHora(char var) { +// switch (var) { +// case 'h': +// if(fecha.hour() < 10) { +// return ('0'+(String)fecha.hour()); break; +// } else { +// return (String)fecha.hour();break; +// } +// case 'm': +// if(fecha.minute() <10) { +// return ('0'+(String)fecha.minute()); break; +// } else { +// return (String)fecha.minute();break; +// } +// case 's': +// if(fecha.second() <10) { +// return ('0'+(String)fecha.second()); break; +// } else { +// return (String)fecha.second();break; +// } +// case 'd': +// if(fecha.day() <10) { +// return ('0'+(String)fecha.day()); break; +// } else { +// return (String)fecha.day();break; +// } +// case 'n': +// if(fecha.month() <10) { +// return ('0'+(String)fecha.month()); break; +// } else { +// return (String)fecha.month();break; +// } +// case 'a': +// if(fecha.year() <10) { +// return ('0'+(String)fecha.year()); break; +// } else { +// return (String)fecha.year();break; +// } +// } +//} + +// Enviar hora y fecha por puerto serie +//void printFecha() { +// Serial.print(getHora('d')); +// Serial.print("/"); +// Serial.print(getHora('n')); +// Serial.print("/"); +// Serial.print(getHora('a')); +// Serial.print(" "); +// Serial.print(getHora('h')); +// Serial.print(":"); +// Serial.print(getHora('m')); +// Serial.print(":"); +// Serial.println(getHora('s')); +// Serial.println("Día de la semana: "); +// Serial.println((String)fecha.dayOfTheWeek()); +//} diff --git a/caldera_rata_2_deb/caldera_rata_2_deb.ino b/caldera_rata_2_deb/caldera_rata_2_deb.ino new file mode 100644 index 0000000..eca319d --- /dev/null +++ b/caldera_rata_2_deb/caldera_rata_2_deb.ino @@ -0,0 +1,176 @@ +#include +#include + +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; +byte horaON = 5; +byte horaOFF = 7; +byte horaON2=14; +byte horaOFF2=18; +byte cont=0; +bool estado_termo; +bool espera; +bool start; + +void setup() { + myservo_X.attach(9); + Serial.begin(9600); + reloj.begin(); + start=1; + estado_termo = 0; + //reloj.adjust(DateTime(__DATE__, __TIME__)); + //DateTime dt(2021, 7, 5, 17, 32, 0); + //reloj.adjust(dt); +} + + +void loop() { + if(start) { + myservo_X.write(30); + start=0; + fecha = reloj.now(); + printFecha(); + } + 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)) { + Serial.print("Cond. ON pre Encendido, estado_termo: "); + Serial.println((String)estado_termo); + termoON(); + Serial.print("Cond. ON post Encendido, estado_termo: "); + Serial.println((String)estado_termo); + } else if(((fecha.hour() < horaON) || (fecha.hour() >= horaOFF)) && + ((fecha.hour() < horaON2) || (fecha.hour() >= horaOFF2)) && + (estado_termo == 1)) { + Serial.print("Cond. OFF pre Apagado, estado_termo: "); + Serial.println((String)estado_termo); + termoOFF(); + Serial.print("Cond. OFF post Apagado, estado_termo: "); + Serial.println((String)estado_termo); + } + previoMillisLoop = millis(); + } +} + +// Secuencias de encendido y apagado de Caldera +void termoON() { + myservo_X.write(120); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(110); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(120); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 1; +} + +void termoOFF() { + myservo_X.write(45); + espera = 0; + cont = 0; + previoMillisTermo = millis(); + do{ + actualMillis = millis(); + if(espera == 0) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(62); + previoMillisTermo = millis(); + espera = 1; + cont++; + } + } + if(espera == 1) { + if ((unsigned long)(actualMillis - previoMillisTermo) >= 500) { + myservo_X.write(45); + previoMillisTermo = millis(); + espera = 0; + cont++; + } + } + } while (cont < 4); + estado_termo = 0; +} + +//En caso de ser necesario mostrar hora, este codigo añade un 0 a los valores menores a 10 +String getHora(char var) { + switch (var) { + case 'h': + if(fecha.hour() < 10) { + return ('0'+(String)fecha.hour()); break; + } else { + return (String)fecha.hour();break; + } + case 'm': + if(fecha.minute() <10) { + return ('0'+(String)fecha.minute()); break; + } else { + return (String)fecha.minute();break; + } + case 's': + if(fecha.second() <10) { + return ('0'+(String)fecha.second()); break; + } else { + return (String)fecha.second();break; + } + case 'd': + if(fecha.day() <10) { + return ('0'+(String)fecha.day()); break; + } else { + return (String)fecha.day();break; + } + case 'n': + if(fecha.month() <10) { + return ('0'+(String)fecha.month()); break; + } else { + return (String)fecha.month();break; + } + case 'a': + if(fecha.year() <10) { + return ('0'+(String)fecha.year()); break; + } else { + return (String)fecha.year();break; + } + } +} + +// Enviar hora y fecha por puerto serie +void printFecha() { + Serial.print(getHora('d')); + Serial.print("/"); + Serial.print(getHora('n')); + Serial.print("/"); + Serial.print(getHora('a')); + Serial.print(" "); + Serial.print(getHora('h')); + Serial.print(":"); + Serial.print(getHora('m')); + Serial.print(":"); + Serial.println(getHora('s')); + Serial.println("Día de la semana: "); + Serial.println((String)fecha.dayOfTheWeek()); +}