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);
}