Buenos días, mi nombre es Isaí, soy estudiante de preparatoria, y estoy trabajando en un control de riego para un invernadero. Estoy usando un modulo de 4 relevadores, 3 los usaré para activar 3 electrovalvulas y uno para activar una bomba; tengo un problema, al momento de activarse el primer relé y al mismo tiempo se activa el relé que va a la bomba, esto está todo bien, pero el segundo y tercer relé no se activan a la hora especifica, más bien, no se activan en ningun momento, ni al momento de activarse este segundo y tercer relé tampoco se activa el relé que va a la bomba, solo hace el funcionamiento correcto el primer relé, quisiera saber si me podrían ayudar, este es mi codigo:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <TimeAlarms.h>
#include <Time.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#define bomba 5
// introduce segundos de riego 1-59
int TR=15; //TIEMPO DE RETRASO
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hora:");
Serial.begin(9600);
//Pines de salida a los relevadores
pinMode(bomba,OUTPUT);
digitalWrite(bomba, HIGH);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
pinMode(7, OUTPUT);
digitalWrite(7, HIGH );
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
// Set time fija el horario inicial del reloj (HH:MM:SS:DD:MM:YY) sólo una vez
setTime(11,35,30,20,7,23);
RTC.set(now());
setSyncProvider(RTC.get);
if (timeStatus() != timeSet)
Serial.println("Fallo de RTC");
else
Serial.println("Sincronizado con RTC");
// Crear las alarmas (HH:MM:SS:FUNCIÓN)
//Horas de Válvula 1
{
Alarm.alarmRepeat(11, 36, 0, EV1ON);
Alarm.alarmRepeat(11, 36, TR, EV1OFF);
Alarm.alarmRepeat(11, 39, 0, EV1ON);
Alarm.alarmRepeat(11, 39, TR, EV1OFF);
Alarm.alarmRepeat(11, 43, 0, EV1ON);
Alarm.alarmRepeat(11, 43, TR, EV1OFF);}
//Horas de la Válvula 2
{
Alarm.alarmRepeat(11, 37, 0, EV2ON);
Alarm.alarmRepeat(11, 37, TR, EV2OFF);
Alarm.alarmRepeat(11, 40, 0, EV2ON);
Alarm.alarmRepeat(11, 40, TR, EV2OFF);
Alarm.alarmRepeat(11, 42, 0, EV2ON);
Alarm.alarmRepeat(11, 42, TR, EV2OFF);
}
//Horas de la Válvula 3
{
Alarm.alarmRepeat(11, 38, 0, EV3ON);
Alarm.alarmRepeat(11, 38, TR, EV3OFF);
Alarm.alarmRepeat(11, 41, 0, EV3ON);
Alarm.alarmRepeat(11, 41, TR, EV3OFF);
Alarm.alarmRepeat(11, 42, 0, EV3ON);
Alarm.alarmRepeat(11, 42, TR, EV1OFF);
}
}
void loop() {
// Mostrar el reloj en el monitor serial
digitalClockDisplay();
LCDClockDisplay();
// Esperar 1 segundo y procesar las Alarmas mientras tanto...
// El metodo Alarm.delay() procesa en el fondo las alarmas y llamara a las funciones indicadas
Alarm.delay(1000);
}
//Encendido electroválvula 1
void EV1ON()
{
digitalWrite(8, LOW);
Serial.println("EV Pin8 ON");
digitalWrite(bomba, LOW);
}
//Apagado electroválvula 1
void EV1OFF()
{
digitalWrite(bomba, HIGH);
Serial.println("EV Pin8 OFF");
digitalWrite(8, HIGH);
}
void EV2ON()
{
digitalWrite(7, LOW);
Serial.println("EV Pin9 ON");
digitalWrite(bomba, LOW);
}
void EV2OFF()
{
digitalWrite(bomba, HIGH);
Serial.println("EV Pin9 OFF");
digitalWrite(7, HIGH);
}
void EV3ON()
{
digitalWrite(6, LOW);
Serial.println("EV Pin10 ON");
digitalWrite(bomba, LOW);
}
void EV3OFF()
{
digitalWrite(bomba, HIGH);
Serial.println("EV Pin10 OFF");
digitalWrite(6, HIGH);
}
// Funciones para la impresión de la hora
void digitalClockDisplay() {
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits) {
Serial.print(":");
if (digits < 10)
Serial.print('0');
Serial.print(digits);
}
void printDigitsLCD(int digits) {
lcd.print(":");
if (digits < 10)
lcd.print('0');
lcd.print(digits);
}
void LCDClockDisplay(){
// digital clock display of the time
lcd.setCursor(0, 1);
lcd.print(hour());
printDigitsLCD(minute());
printDigitsLCD(second());
}