Programacion del acuaterrario by arduino

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