Estimada comunidad:
Luego de un tiempo dándole vueltas a un código para activar 4 bombas mediante reles en función de los días obtenidos de un modulo RTC, llegue a uno que funcionaba casi perfecto hasta que hoy día me di cuenta que no paso a activar el rele que le correspondía por fecha, quizás mal use el IF, es un código bien bruto pero funciona todo, la lectura de falla la señal del presostato, pero no cambia en función de los días, les dejo acá el codigo y alumbrarme si ven algo mal escrito, gracias de antemano:
#include <Wire.h>
#include "RTClib.h"
#include <Time.h>
#include <TimeLib.h>
#include <TimeAlarms.h>
//SoftwareSerial HMISerial(10,11);
//NexText texbomb= NexText (0,3,"t1");
RTC_DS1307 rtc;
int RELE1 = 8;
int RELE2 = 9;
int RELE3 = 10;
int RELE4 = 11;
int falla1=4;
int falla2=5;
int falla3=6;
int falla4=7;
int presostato=12;
//const unsigned long HORA = 3600;
//const unsigned long DIA = 24*HORA;
void setup() {
Wire.begin();
Serial.begin(9600);
rtc.begin();
//nexInit();
//rtc.adjust(DateTime(F(DATE),F(TIME))); // para grabar la bora inicial solo se hace una vez.
pinMode (RELE1, OUTPUT);
pinMode (RELE2, OUTPUT);
pinMode (RELE3, OUTPUT);
pinMode (RELE4, OUTPUT);
pinMode (falla1, INPUT);
pinMode (falla2, INPUT);
pinMode (falla3, INPUT);
pinMode (falla4, INPUT);
pinMode (presostato, INPUT);
digitalWrite(RELE1, HIGH);
digitalWrite(RELE2, HIGH);
digitalWrite(RELE3, HIGH);
digitalWrite(RELE4, HIGH);
}
void loop() {
DateTime now= rtc.now();
Serial.println(now.day(),DEC);
int sensorfalla1= digitalRead(falla1);
int sensorfalla2= digitalRead(falla2);
int sensorfalla3= digitalRead(falla3);
int sensorfalla4= digitalRead(falla4);
int statepresostato=digitalRead(presostato);
Serial.println(statepresostato);
//----------------ACTIVANCIÓN BOMBA2-----------------------------------------
if (now.day()>=0 && now.day()<=8) {
if (statepresostato==1){
statepresostato=0;
}
else {
statepresostato=1;
}
digitalWrite(RELE1, HIGH);
digitalWrite(RELE2, statepresostato);
Serial.println("FUNCIONANDO BOMBA1!");
if(sensorfalla2==HIGH){
Serial.println("FALLA BOMBA 2");
digitalWrite(RELE2,HIGH);
digitalWrite(RELE3,statepresostato);
}
else {
digitalWrite(RELE3,HIGH);
digitalWrite(RELE2,statepresostato);
}
}
//----------------ACTIVACIÓN BOMBA3------------------------------------------
if (now.day()>8 && now.day()<=15) {
if (statepresostato==1){
statepresostato=0;
}
else {
statepresostato=1;
}
digitalWrite(RELE2, HIGH);
digitalWrite(RELE3, statepresostato);
Serial.println("FUNCIONANDO BOMBA3!");
if(sensorfalla3==HIGH){
Serial.println("FALLA BOMBA 2");
digitalWrite(RELE3,HIGH);
digitalWrite(RELE4,statepresostato);
}
else {
digitalWrite(RELE4,HIGH);
digitalWrite(RELE3,statepresostato);
}
}
//---------------ACTIVACIÓN BOMBA4-------------------------------------------
if (now.day()>15 && now.day()<=24){
if (statepresostato==1){
statepresostato=0;
}
else {
statepresostato=1;
}
digitalWrite(RELE3, HIGH);
digitalWrite(RELE4, statepresostato);
if(sensorfalla4==HIGH){
Serial.println("FALLA BOMBA 3");
digitalWrite(RELE4,HIGH);
digitalWrite(RELE1,statepresostato);
}
else {
digitalWrite(RELE1,HIGH);
digitalWrite(RELE4,statepresostato);
}
}
//----------------ACTIVACIÓN BOMBA1------------------------------------------
if (now.day()>24 && now.day()<=31) {
if (statepresostato==1){
statepresostato=0;
}
else {
statepresostato=1;
}
digitalWrite(RELE4, HIGH);
digitalWrite(RELE1, statepresostato);
Serial.println("bomba4!");
if(sensorfalla1==HIGH){
Serial.println("FALLA BOMBA 4");
digitalWrite(RELE1,HIGH);
digitalWrite(RELE2,statepresostato);
}
else {
digitalWrite(RELE2,HIGH);
digitalWrite(RELE1,statepresostato);
}
}
delay (2000);
}