Avería en Arduino Serial IIC/I2C/TWI 2004 (Solucionado)

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 3

const 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. :grin: