Por cierto, como os dije ayer os pongo el codigo.
No seáis muy malos conmigo, que es la primera vez que me veo en una de estas.
#include <RelojDS1307.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>/Definimos los PINS/
#define LUZ1 8
#define LUZ2 9
#define LUZ3 10
#define LUZLUNA 4
#define CALENTADOR 5
#define TEMP 3const int Puls1 = 2;
int estadoPuls1 =0;RelojDS1307Class Reloj;
OneWire oneWire( TEMP );
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,20,4);DeviceAddress ACUARIO;
void setup()
{
/Iniciamos los sistemas/
Serial.begin(9600);
Wire.begin();
lcd.begin(20, 4);
sensors.begin();/Definimos las entradas y salidas/
pinMode (LUZ1, OUTPUT);
pinMode (LUZ2, OUTPUT);
pinMode (LUZ3, OUTPUT);
pinMode (LUZLUNA, OUTPUT);
pinMode (Puls1, INPUT);
pinMode (TEMP, INPUT);
pinMode (CALENTADOR, OUTPUT);}
/* Iniciamos las impresiones en Pantalla*/
void printTemperature(DeviceAddress deviceAddress)
{
float AGUA1 = sensors.getTempC(ACUARIO);
float L1 = digitalRead(LUZ1);
float L2 = digitalRead(LUZ2);
float L3 = digitalRead(LUZ3);
float LL = digitalRead(LUZLUNA);
float CL = digitalRead(CALENTADOR);lcd.setCursor(0,0);
lcd.print(Reloj.Time());
lcd.setCursor(0,1);
lcd.print("ACUARIO: ");
lcd.print(AGUA1);
lcd.print(CL);
lcd.setCursor (0,2);
lcd.print ("Luces: ");
lcd.print ( L1 );
lcd.print ( L2 );
lcd.print ( L3 );
lcd.setCursor (0,3);
lcd.print ("Luz Luna: ");
lcd.print (LL);}
void printData(DeviceAddress deviceAddress)
{
printTemperature(deviceAddress);
Serial.println();
}void loop(void) {
/Iniciamos el programa para el calentador/
printData(ACUARIO);
float AGUA1 = sensors.getTempC(ACUARIO);
if(AGUA1 < 25)
{
digitalWrite (CALENTADOR, HIGH);
}if(AGUA1 > 25)
{
digitalWrite (CALENTADOR, LOW);
}/Configuración de encendido y apagado de las luces/
estadoPuls1 = digitalRead(Puls1);
if (estadoPuls1 == HIGH ) {
digitalWrite (LUZ1, HIGH);
}else
{
digitalWrite(LUZ1, LOW);
}if(Reloj.IsLater(10, 00) && Reloj.IsPrevious(22, 00))
{
digitalWrite(LUZ1, HIGH);
digitalWrite(LUZLUNA, LOW);
lcd.setBacklight(HIGH);
}else
{
digitalWrite(LUZ1, LOW);
digitalWrite(LUZLUNA, HIGH);
lcd.setBacklight(LOW);
}
if (Reloj.IsLater(10, 30) && Reloj.IsPrevious(22, 30))
{
digitalWrite(LUZ2, HIGH);
}
else
{
digitalWrite(LUZ2, LOW);
}
if (Reloj.IsLater(11, 00) && Reloj.IsPrevious(23, 00))
{
digitalWrite(LUZ3, HIGH);
}
else
{
digitalWrite(LUZ3, LOW);
}}
Supongo que se podrá mejorar, no tengo dudas, y toda ayuda será bien recibida.
Por ejemplo, cuando quiero escribir el estado de las luces ahora mismo me sale:
Luces: 1.001.00.100
Luz Luna: 0.00
Y me gustaría que simplemente saliera un uno o un cero sin decimales. Pero aún ni he buscado ni se porque salen con decimales, o como separar la información. Os pongo el código de esa parte en concreto:
/* Iniciamos las impresiones en Pantalla*/
void printTemperature(DeviceAddress deviceAddress)
{
float AGUA1 = sensors.getTempC(ACUARIO);
float L1 = digitalRead(LUZ1);
float L2 = digitalRead(LUZ2);
float L3 = digitalRead(LUZ3);
float LL = digitalRead(LUZLUNA);
float CL = digitalRead(CALENTADOR);lcd.setCursor(0,0);
lcd.print(Reloj.Time());
lcd.setCursor(0,1);
lcd.print("ACUARIO: ");
lcd.print(AGUA1);
lcd.print(CL);
lcd.setCursor (0,2);
lcd.print ("Luces: ");
lcd.print ( L1 );
lcd.print ( L2 );
lcd.print ( L3 );
lcd.setCursor (0,3);
lcd.print ("Luz Luna: ");
lcd.print (LL);
Pero bueno, con tiempo, paciencia, y algo de ayuda seguro que lo consigo.