Riego RTC3231 en un determinado periodo

Hola, soy Eloy, desde Argentina. Estoy armando un sistema de riego para cultivo indoor con fibra de coco, ya tengo el programa armado, pero necesito agragar un automatismo, donde todos los días a las 05:00 am (por ejemplo), comience a ejecutar el siguiente código hasta que se complete. Lo mismo al día siguiente. Ahora bien, si se corta la alimentación eléctrica, el programa debería seguir desde donde se cortó o mejor aún, seguir hasta una determinada hora (23hs), todo se va a cero para comenzar al día siguiente.

Va código los comentarios son xq tengo que cambiar los tiempos o definir todo con el RTC. Muchas gracias.

void loop() {
   int riego = 8;
   int recirc = 5;
   int luces = 2;
   int i = 1;
   pinMode(riego, OUTPUT);
   pinMode(recirc, OUTPUT);
   pinMode(luces, OUTPUT);

 digitalWrite (riego, LOW); 
 digitalWrite (recirc, LOW); 
 digitalWrite (luces, LOW); 
 Serial.println("iniciando");

 delay(500);
 digitalWrite (recirc, HIGH); 
 Serial.println("recirculando");
 delay(1500); //60000
 digitalWrite (recirc, LOW); 
 delay(500);
 
 Serial.println("riego 1");
 digitalWrite (riego, HIGH); //riego 1 
 delay(1500); //60000
 digitalWrite (riego, LOW); 
 delay(1500); //120000
 digitalWrite (luces, HIGH); //Enciende luces
 Serial.println("encienden luces");
 delay(2000); //2940000

{
for (int i = 1; i<14; i++)
{
 Serial.println("dentro del for"); 
  Serial.println(i);
 delay(2000); //3419000
 digitalWrite (recirc, HIGH); 
 Serial.println("recirculando");
 delay(2500); //60000
 digitalWrite (recirc, LOW); 
 delay(500);
 Serial.println("riego");
 digitalWrite (riego, HIGH); 
 delay(2000); //120000
 digitalWrite (riego, LOW); 
 delay(500);
}

}
 delay(5000); //14400000 recalcular
 digitalWrite (luces, LOW); 
 Serial.println("apaga luces");
 delay(5000); //17939000 recalcular

 return;
}


Si querés que alguien se tome el tiempo para ayudarte al menos poné el código completo.
Códigos parciales no sirven de nada y menos para hacerle modificaciones.

Hola, un gusto. Ese el código que se tiene que repetir, es lo que hice. No se por donde empezar con el RTC, por eso pido ayuda. Lo que vi en el foro, son mas pensados como timer y no como lo necesito.

Muchas gracias

Ese código, entonces, está mal porque no tiene setup() y lo que iría ahí está dentro de loop().

Sobre RTC está lleno de ejemplos en internet, empieza por ahí (luego de entender lo que te digo que está mal).

Y por cierto, loop() no termina con return.

Hola, para empezar @MaximoEsfuerzo gracias por recordar que codigos incompletos no sirven.

bueno vayamos al grano; para usar RTC 3231 necesitas la libreria RTClib by Adafruit, y como todas las librerias, se declaran con un;

#include <RTClib.h> // declara la libreria usada
#include <Wire.h>  // necesario para la comunicacion I2C

despues hay que definir un objeto que sera para poder trabajar con el RTC

RTC_DS3231 nombre_del_objeto;

eso lo unico que necesitas antes del setup, y en el mismo se inicializa la comunicacion y si quieres puedes ponerle una alarma si el RTC falla;

en el setup se calibra la hora y la fecha tambien

void setup(){
  Wire.begin(); // se inicializa la comunicacion I2C

 if (! nombre_del_objeto.begin){ // en caso no se comunica
    Serial.print("No se encontro modulo RTC"); // por ejemplo solo tendrias iniciar el monitor serie
  
while(1); //Comando de bloqueo, si es 0 el codigo sigue pero si es 1 lo boquea
  }

 nombre_del_objeto.adjust(__DATE__, __TIME__); // Se calibra la hora y fecha con la de la computadora

} 

y en el loop, necesitas crear una variable para saber la hora;

void loop(){
 dateTime fecha = nombre_del_objeto.now(); //Variable fecha para saber la hora del RTC

si quieres activar algo al las 5 am (por ejemplo) con un if se puede activar;

if (fecha.hour() == 5){
  // activa todo lo que se te de la gana aqui 
  }
}

pongo doble llave aqui por que se me olvido cerrar el loop

con respecto a si se va la luz siga donde comenzo no se como se hace (por que tengo poca experiencia en el arduino y ademas tengo 13 años de edad) y bueno, esa es una guia (por no dicir que es un codigo conpleto del RTC) para agregar un rtc a tu proyecto.

buenas noches.

Hola! Muchisimas gracias, es lo que necesitaba para comenzar y desarrollar. Has sido de gran ayuda! Saludos

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.