Falla en código de una incubadora

hola, a ver si me pueden ayudar, hice una incubadora con arduino uno y aún no me funciona 100% el servomotor arranca y para constantemente a pesar de estar configurado para que lo haga cada 2 horas, la temperatura la voy monitoreando con el monitor serie ya que no tengo el lcd y muy seguido tira una temperatura de -127º. Voy a poner el código tal vez haya un error.
Gracias


#include <LiquidCrystal_I2C.h>

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h> 

#include <Servo.h>

#define tROTARHUEVOS 7200000 //(rotar huevos cada 2 horas)
#define tOBJETIVO 37 //(temperatura de incubación 37ºC)
#define pSERVO 9 //(servo conectado al pin 9)
#define pVENTILADOR 12 //(ventilador conectado al pin 12)
#define SERVOa1 45
#define SERVOa2 135
#define pRELE 7 //(relé con calefactor conectado al pin 7)
#define pONEWIRE 3 //(sonda DS18b20 conectada al pin 3)

boolean statusServo = false;
unsigned long time, previoTime = 0;
float temp;

Servo servo;
LiquidCrystal_I2C lcd(0x3F, 16, 2);
OneWire oneWireBus(pONEWIRE);
DallasTemperature sensor(&oneWireBus);

void setup() {
pinMode(pRELE,OUTPUT);
pinMode(pVENTILADOR,OUTPUT);
Serial.begin(9600);
sensor.begin();
lcd.init(); 
lcd.backlight();
servo.attach(pSERVO);
servo.write(SERVOa1);
}

void termostato(){

if (temp<tOBJETIVO){
digitalWrite (pRELE,HIGH);
digitalWrite (pVENTILADOR,HIGH);
}
else{
digitalWrite (pRELE,LOW);
digitalWrite (pVENTILADOR,LOW);
}
}

void rotacion () {
time = millis();

if( time - previoTime > tROTARHUEVOS ) {
previoTime = time;
Serial.println(statusServo ? SERVOa1 : SERVOa2);
servo.write(statusServo ? SERVOa1 : SERVOa2);
statusServo = !statusServo;
}
}

void loop() {
sensor.requestTemperatures();
temp=sensor.getTempCByIndex(0);
Serial.print("Temperatura en sensor: ");
Serial.print(temp);
Serial.println(" ºC");
termostato ();
rotacion ();
delay (3000);
}

Moderador
Por favor edita tu post usando etiquetas de código.
Normas del foro