Hola de nuevo.
Hoy os traigo buenas noticias... ya se me ven las temperaturas de 2 ds18b20 en el lcd pero con esto me asalta otra dudilla XD .... Como puedo hacer para que solo se me vean en la pantalla las temperaturas con 1 decimal?
El codigo es casi todo nuevo al menos en lo que se refiere a las sondas de temperatura.
Otra cosa que tampoco soy capaz de hacer funcionar son los reles de la iluminacion (LUZ y LUZLUNA), van condicionados por la hora pero no se encienden nunca, mientras que los de calefaccion van perfectos pues se encienden y apagan al calentar o enfriar las sondas.
#include <LiquidCrystal.h>
#include <RelojDS1307.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define TEMPÂ Â Â Â Â 7
#define LUZÂ Â Â Â Â Â 8
#define LUZLUNAÂ Â Â Â 4
#define CAL1Â Â Â Â Â 5
#define CAL2Â Â Â Â Â 6
#define PRECISIONÂ Â Â 9
OneWire oneWire(TEMP);
DallasTemperature sensors(&oneWire);
DeviceAddress ACUARIO, GAMBARIO;
LiquidCrystal lcd(0);
RelojDS1307Class Reloj;
void setup(void)
{
 Serial.begin(9600);
Â
 //Reloj.SetDateTime( 30, 01, 13, 00, 31, 20 );
 sensors.begin();
 lcd.begin(16, 2);
 lcd.setBacklight(HIGH);
Â
 pinMode(LUZ, OUTPUT);
 pinMode(LUZLUNA, OUTPUT);
 pinMode(CAL1, OUTPUT);
 pinMode(CAL2, OUTPUT);
 Serial.print("Localizando sondas de temperatura: ");
 Serial.print("Encontradas ");
 Serial.print(sensors.getDeviceCount(), DEC);
 Serial.println(" sondas.");
 if (!sensors.getAddress(ACUARIO, 0)) Serial.println("INCAPAZ DE ENCONTRAR SONDA ACUARIO");
 if (!sensors.getAddress(GAMBARIO, 1)) Serial.println("INCAPAZ DE ENCONTRAR SONDA GAMBARIO");
}
Â
void printTemperature(DeviceAddress deviceAddress)
{
 float AGUA1 = sensors.getTempC(ACUARIO);
 float AGUA2 = sensors.getTempC(GAMBARIO);
 Serial.print("A: ");
 Serial.print(AGUA1);
 Serial.print(" ");
 Serial.print("G: ");
 Serial.print(AGUA2);
 Serial.print(" ");
 lcd.setCursor(4,0);
 lcd.print(Reloj.Time());
 lcd.setCursor(0,1);
 lcd.setCursor(0,1);
 lcd.print("A:");
 lcd.print(AGUA1);
 lcd.setCursor(9,1);
 lcd.print("G:");
 lcd.print(AGUA2);
}
void printData(DeviceAddress deviceAddress)
{
 printTemperature(deviceAddress);
 Serial.println();
}
void loop(void)
{
 Serial.print("Recibiendo temperaturas...");
 sensors.requestTemperatures();
 Serial.println("OK");
 printData(ACUARIO);
 printData(GAMBARIO);
Â
 float AGUA1 = sensors.getTempC(ACUARIO);
 float AGUA2 = sensors.getTempC(GAMBARIO);
 if(AGUA1 < 25)
 {
  digitalWrite (CAL1, HIGH);
 }
Â
 if(AGUA1 > 25)
 {
  digitalWrite (CAL1, LOW);
 }
Â
 if(AGUA2 < 25)
 {
  digitalWrite (CAL2, HIGH);
 }
Â
 if(AGUA2 > 25)
 {
  digitalWrite (CAL2, LOW);
 }
Â
Â
 if(Reloj.IsLater(10, 00) && Reloj.IsPrevious(20, 00))
 {
  digitalWrite(LUZ, HIGH);
  digitalWrite(LUZLUNA, LOW);
 }
Â
Â
 if(Reloj.IsLater(20, 00) && Reloj.IsPrevious(10, 00))
 {
  digitalWrite(LUZ, LOW);
  digitalWrite(LUZLUNA, HIGH);
 }
}