Go Down

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

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.


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.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy