Hola a todos.
Estoy desarrollando un pequeño proyecto con Arduino UNO.
Este es mi primer acercamiento a la programación y mi intención es controlar 2 relés en 3 distintos ciclos.
En mi programación pretendo iniciar el proceso al presionar un botón.
Esto dará comienzo al primer ciclo (Ciclo 1) en el cual, un relé se mantendrá 18 horas apagado, y 6 horas encendido y el otro deberá prender durante 150 segundos y estar pagado el resto del día.
Este ciclo se repetirá 14 veces.
Al terminar el Ciclo 1, dará comienzo el Ciclo 2 en el cual, un relé se mantendrá 12 horas apagado, y 12 horas encendido y el otro deberá prender durante 250 segundos y estar pagado el resto del día.
Este ciclo se repetirá 70 veces.
Al terminar el Ciclo 2, dará comienzo el Ciclo 3 en el cual, un relé se mantendrá 12 horas apagado, y 12 horas encendido y el otro deberá prender durante 150 segundos y estar pagado el resto del día.
Este ciclo se repetirá 7 veces.
Mis dudas son:
-
¿Consideran que el código que tengo me servirá, voy por buen camino? Lo escribí usando partes de distintos ejemplos y aunque no muestra errores de compilación agradecería la opinión de alguien con experiencia.
-
¿Será posible mostrar toda esta información en un pantalla LCD? Me gustaría añadir también temperatura y humedad.
-
¿Será posible agregar un LED que indique en que ciclo se encuentra el programa?
#include <GFButton.h>
const int RelayG_pin = 3; //pin donde se conecta el Relay G
const int RelayW_pin = 4; //pin donde se conecta el Relay W
GFButton buttonOn = 5;
bool primerCiclo = true; //para saber cuándo es la primera vez del Ciclo 1
bool segundoCiclo = true; //para saber cuándo es la primera vez del Ciclo 2
bool tercerCiclo = true; //para saber cuándo es la primera vez del Ciclo 3
void setup() {
Serial.begin(9600); // inicia serial
pinMode(RelayG_pin, OUTPUT); // set arduino pin to output mode
}
void loop(){
// Check if "on" button is pressed
if (buttonOn.isPressed()) {
Serial.println("Let's start!!!");
// Iniciar ciclo 1
primerCiclo = false;
}
// el primer ciclo debera repetirse 14 veces
if (primerCiclo){
primerCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<14; i=i+1){
Serial.println("LIGHT ON - GROW CYCLE");
delay(6480000); //mantener 18 horas
digitalWrite(RelayG_pin,HIGH); //ENCENDER RELAY G
delay(6480000); //mantener 18 horas
Serial.println("LIGHT OFF - GROW CYCLE");
delay(2160000); //mantener 6 horas
digitalWrite(RelayG_pin,LOW); //APAGAR RELAY G
delay(2160000); //mantener 6 horas
segundoCiclo = false;
}
}
else if (primerCiclo){
primerCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<70; i=i+1){
Serial.println("WATER ON - GROW CYCLE");
delay(15000); //mantener 150 segundos
digitalWrite(RelayW_pin,HIGH); //ENCENDER RELAY W
delay(15000); //mantener 150 segundos
Serial.println("WATER OFF - GROW CYCLE");
delay(500); //mantener 5 segundos
digitalWrite(RelayW_pin,LOW); //APAGAR RELAY W
delay(8625000); //mantener 86250 segundos
}
// el segundo ciclo debera repetirse 70 veces
if (segundoCiclo){
segundoCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<70; i=i+1){
Serial.println("LIGHT ON - BLOOM CYCLE");
delay(4320000); //mantener 12 horas
digitalWrite(RelayG_pin,HIGH); //ENCENDER RELAY
delay(4320000); //mantener 12 horas
Serial.println("LIGHT OFF - BLOOM CYCLE");
delay(4320000); //mantener 12 horas
digitalWrite(RelayG_pin,LOW); //APAGAR RELAY
delay(4320000); //mantener 12 horas
Serial.println("ALMOST THERE - CHANGE TO CLEAN WATER!!!");
delay(10000); //mantener 100 segundos
}
}else if (segundoCiclo){
segundoCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<70; i=i+1){
Serial.println("WATER ON - BLOOM CYCLE");
delay(25000); //mantener 250 segundos
digitalWrite(RelayW_pin,HIGH); //ENCENDER RELAY W
delay(25000); //mantener 250 segundos
Serial.println("WATER OFF - BLOOM CYCLE");
delay(500); //mantener 5 segundos
digitalWrite(RelayW_pin,LOW); //APAGAR RELAY W
delay(8615000); //mantener 86150 segundos
tercerCiclo = false;
}
}
if (tercerCiclo){
tercerCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<4; i=i+1){
Serial.println("LIGHT ON - HARVEST CYCLE");
delay(4320000); //mantener 12 horas
digitalWrite(RelayG_pin,HIGH); //ENCENDER RELAY
delay(4320000); //mantener 12 horas
Serial.println("LIGHT OFF - HARVEST CYCLE");
delay(4320000); //mantener 12 horas
digitalWrite(RelayG_pin,LOW); //APAGAR RELAY
delay(4320000); //mantener 12 horas
Serial.println("HARVEST TIME!!!");
delay(10000); //mantener 100 segundos
}
}else if (tercerCiclo){
tercerCiclo = false; //ya no sera más la primera vez
for (int i = 0; i<7; i=i+1){
Serial.println("WATER ON - HARVEST CYCLE");
delay(15000); //mantener 150 segundos
digitalWrite(RelayW_pin,HIGH); //ENCENDER RELAY W
delay(15000); //mantener 150 segundos
Serial.println("WATER OFF - HARVEST CYCLE");
delay(500); //mantener 5 segundos
digitalWrite(RelayW_pin,LOW); //APAGAR RELAY W
delay(8615000); //mantener 86150 segundos
}
}
}
}
Muchas gracias!