Mi controlador de acuario. (Ayuda).

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 :stuck_out_tongue: XD :blush:.... 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);
  }

}