Go Down

Topic: Mi controlador de acuario. (Ayuda). (Read 5125 times) previous topic - next topic

martinrv84

Nuevo sketch funcionando pero esta vez para un LCD 2004 I2C. Solo tuve que cambiar la libreria y un par de detalles. Luego hay otros cambios pero para colocar cada cosa en su sitio en el LCD.

Code: [Select]


#include <DallasTemperature.h>
#include <OneWire.h>
#include <RelojDS1307.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

/*Definimos los PINS*/
#define TEMP           7
#define LUZ            8
#define LUZLUNA        4
#define CAL1           5
#define CAL2           6

LiquidCrystal_I2C lcd(0x27,20,4);
OneWire oneWire(TEMP);
DallasTemperature sensors(&oneWire);
DeviceAddress ACUARIO, GAMBARIO;
RelojDS1307Class Reloj;

void setup()
{
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
 
  pinMode(LUZ, OUTPUT);
  pinMode(LUZLUNA, OUTPUT);
  pinMode(CAL1, OUTPUT);
  pinMode(CAL2, OUTPUT);
 
  /*Cmiramos si estan todas las sondas conectadas mediante el serial monitor*/
  Serial.print("Localizando sondas de temperatura: ");
  Serial.print("Encontradas  ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" sondas.");
}

void loop()

{
  Serial.print("Recibiendo temperaturas...");
  sensors.requestTemperatures();
  Serial.println("OK");

  printData(ACUARIO);
  printData(GAMBARIO);
 
  float AGUA1 = sensors.getTempC(ACUARIO);
  float AGUA2 = sensors.getTempC(GAMBARIO);



//Configuracion de las temperaturas
  if(AGUA1 < 24)
  {
    digitalWrite (CAL1, HIGH);
  }
 
  if(AGUA1 > 25)
  {
    digitalWrite (CAL1, LOW);
  }
 
  if(AGUA2 < 24)
  {
    digitalWrite (CAL2, HIGH);
  }
 
  if(AGUA2 > 25)
  {
    digitalWrite (CAL2, LOW);
  }
 
 
  //Configuracion del encedido y apagado de las luces
  if(Reloj.IsLater(9, 59) && Reloj.IsPrevious(21, 59))
  {
    digitalWrite(LUZ, HIGH);
    digitalWrite(LUZLUNA, LOW);
  }
   
  else
  {
    digitalWrite(LUZ, LOW);
    digitalWrite(LUZLUNA, HIGH);
  }
 

/*Con esto mostraremos un error en el lcd en el lugar de la temperatura correspondiente*/
  if (!sensors.getAddress(ACUARIO, 0))
{
  Serial.println("INCAPAZ DE ENCONTRAR SONDA ACUARIO");
  lcd.setCursor(0,1);
  lcd.print("FALLO S1");

}
  if (!sensors.getAddress(GAMBARIO, 1))
  {
  Serial.println("INCAPAZ DE ENCONTRAR SONDA GAMBARIO");
  lcd.setCursor(10,1);
  lcd.print("FALLO S2");

  }
}



void printData(DeviceAddress deviceAddress)
{
  printTemperature(deviceAddress);
  Serial.println();
}


void printTemperature(DeviceAddress deviceAddress)
{
  float AGUA1 = sensors.getTempC(ACUARIO);
  float AGUA2 = sensors.getTempC(GAMBARIO);
  Serial.print("ACUARIO: ");
  Serial.print(AGUA1);
  Serial.print("  ");
  Serial.print("GAMBARIO: ");
  Serial.print(AGUA2);
  Serial.print("  ");
  lcd.setCursor(0,0);
  lcd.print(Reloj.DateTime());
  lcd.setCursor(0,2);
  lcd.print("ACUARIO:  ");
  lcd.print(AGUA1);
  lcd.setCursor(0,3);
  lcd.print("GAMBARIO: ");
  lcd.print(AGUA2);
}

jray

Pues mira, nunca he usado un LCD I2C pero en vista de lo práctico que me parece su uso y lo que me gustan los integrados I2C, me guardo tu ejemplo.

martinrv84


Pues mira, nunca he usado un LCD I2C pero en vista de lo práctico que me parece su uso y lo que me gustan los integrados I2C, me guardo tu ejemplo.


Me alegro que te sirva de ayuda.

breogan08

Hola amigos me podeis ayudar?
Yo quiero este controlador de acuario que se me adapta a la perfeccion. El problema que tengo es que no me lo compila me da errores en las librerias, entre otros
El caso es que uso practicamente lo mismo o eso creo
Arduino UNO
Lcd i2c (YwRobot Arduino LCM1602 IIC V1) 20×4
 Reloj ds1307
Sonda DS1820
Y modulo de 4 reles
 Me echariais una mano?

breogan08

Hola amigos me podeis ayudar?
Yo quiero este controlador de acuario que se me adapta a la perfeccion. El problema que tengo es que no me lo compila me da errores en las librerias, entre otros
El caso es que uso practicamente lo mismo o eso creo
Arduino UNO
Lcd i2c (YwRobot Arduino LCM1602 IIC V1) 20×4
Reloj ds1307
Sonda DS1820
Y modulo de 4 reles
Me echariais una mano?

Go Up