Aquí os dejo el código que he usado para la programación del acuaterrario.
Consta dos circuitos electricos de voltajes distintos
A 220v hay bombilla blanca, dos luces de crecimiento de plantas(Led roja y azul), Foco Led de potencia 2000lms, calentador de acuario, bomba de agua para filtro y cascada
A 12v un sistema de lluvia por bomba a presión, tira led subacuática, y ventilador de ordandor.
Este es el código
==============================
//LIBRERIAS
//#include <Time.h>
#include <Wire.h>
#include "RTClib.h"
//---------------------->>>>>
// Declaro un RTC DS3231
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};
//---------------------->>>>>
// CONFIGURACIÓN DE DISPOSITIVOS en los pines de la placa
// van ordenados por numero de rele al que van conectados
//220v
int ledroja1 = 13;
int ledblanca = 12;
int calentador = 9;
int ledfoco = 10;
int bomba = 11;
// 12 v
//int lluvia = 8;
int ledagua = 7;
//int ventilador = 6; //vacio
/////////////////////////////////////////////////////////////////////////////////////////
void setup() {
#ifndef ESP8266
while (!Serial); //
#endif
Serial.begin(9600);
delay(3000); // esperar a la consola
if (! rtc.begin()) {
Serial.println("No se puede encontrar el RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC se desconecto, hay que ajustar la fecha y hora");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
//---------------------->>>>>
//ATENCION PONER EN HORA
// Poner en hora, solo la primera vez, luego comentar y volver a cargar.
// Ponemos en hora con los valores de la fecha y la hora en que el sketch ha sido compilado.
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//---------------------->>>>>
//220v
pinMode(ledroja1, OUTPUT);
pinMode(ledblanca, OUTPUT);
pinMode(calentador, OUTPUT);
pinMode(ledfoco, OUTPUT);
pinMode(bomba, OUTPUT);
//12v
pinMode(lluvia, OUTPUT);
pinMode(ledagua, OUTPUT);
pinMode(ventilador, OUTPUT);
/*
digitalWrite(ledroja1, HIGH); //entre las 17:00 y las 22:00
digitalWrite(ledblanca, HIGH); //entre las 18:00 y las 22:00
digitalWrite(calentador, HIGH); //entre 09:00 y 24:00
digitalWrite(ledfoco, HIGH); //entre las 15:00 y las 21:00
digitalWrite(bomba, HIGH); //entre las 8:00 y las 22:00, del minuto 0 al minuto 40
digitalWrite(lluvia, HIGH); // minuto 45 y dura 10 segundos
digitalWrite(ledagua, HIGH); // entre 21:00 y 23:00
digitalWrite(ventilador, HIGH); // entre 21:00 y 23:00
*/
}
/////////////////////////////////////////////////////////////////////////////////////////
void loop() {
DateTime now = rtc.now();
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(3000);
//220v
//---------------------->>>>>
//Bombillas rojas y azules y la blanca: Encendido entre las 15:00 y las 22:00
if (now.hour() >= 15 && now.hour() <= 22)
{
digitalWrite(ledroja1, LOW);
}
else if (now.hour() < 15 || now.hour() > 22)
{
digitalWrite(ledroja1, HIGH);
}
//Foco blanco: Encendido entre las 16:00 y las 21:00
if (now.hour() >= 16 && now.hour() <= 21)
{
digitalWrite(ledblanca, LOW);
}
else if (now.hour() < 16 || now.hour() > 21)
{
digitalWrite(ledblanca, HIGH);
}
//foco- entre las 16:00 y las 22:00
if (now.hour() >= 17 && now.hour() <= 20)
{
digitalWrite(ledfoco, LOW);
}
else if (now.hour() < 17 || now.hour() > 20)
{
digitalWrite(ledfoco, HIGH);
}
//calentador: entre las 0:00 y las 16:00
if (now.hour() >= 0 && now.hour() <= 16)
{
digitalWrite(calentador, LOW);
}
else if (now.hour() < 0 || now.hour() > 16)
{
digitalWrite(calentador, HIGH);
}
//bomba cascada entre las 9:00 y las 23:00, del minuto 0 al minuto 40
if (now.hour() >= 8 && now.hour() <= 23 )
{
digitalWrite(bomba, LOW);
}
else if (now.hour() < 8 || now.hour() > 23 )
{
digitalWrite(bomba, HIGH);
}
//12v
//---------------------->>>>>
//Bomba de lluvia
// minuto 45 y dura 10 segundos
//entre las 9:00 y las 23:00, del minuto 0 al minuto 30
if (now.hour() >= 9 && now.hour() <= 23)
{
digitalWrite(lluvia, LOW);
delay(10000);
digitalWrite(lluvia, HIGH);
delay(50000);
}
else if (now.hour() < 9 || now.hour() > 23)
{
digitalWrite(lluvia, HIGH);
}
*/
// led de agua
//entre 21:00 y 23:00
if (now.hour() >= 21 && now.hour() <= 23)
{
digitalWrite(ledagua, LOW);
}
else if (now.hour() < 21 || now.hour() > 23)
{
digitalWrite(ledagua, HIGH);
}
// codigo para activar el ventilador
// minuto 48 y dura 100 segundos
//entre las 9:00 y las 23:00, del minuto 0 al minuto 30
if (now.hour() >= 9 && now.hour() <= 23 && now.minute() == 48)
{
digitalWrite(lluvia, LOW);
delay(100000);
digitalWrite(lluvia, HIGH);
}
else if (now.hour() < 9 || now.hour() > 23 || now.minute() > 30 )
{
digitalWrite(lluvia, HIGH);
}
delay(10000); // La información se actualiza cada 10 seg.
}
No hay comentarios:
Publicar un comentario