Hola a todos.
Soy nuevo en los foros y no se si estoy escribiendo en el sitio adecuado.
Estoy realizando un proyecto con arduino uno donde le he añadido un sensor de luz, temperatura, humedad, humedad del plato y volumen de agua de una garrafa de agua. Todo esto para controlar las condiciones de riego de mis plantas. Uso un sensor de humedad de la tierra, de luz para regar de noche, de temperatura, para no regar con altas temperaturas, ya que en verano es mejor regar de noche pero justo antes de amanecer ya que hace menos calor. Un sensor digital para saber si el plato de las plantas ya tiene agua y otro para que la bomba de agua no se queme cuando se vacie la garrafa de agua. Esta bomba de agua se controlara con un rele compatible con arduino.
Creo que os he explicado todo, ahora os pongo el codigo y os digo mi problema.
const int bombadeaguaPin = 9;
const int sensorluzPin = A4;
const int sensortemperaturaPin = A3;
const int sensorhumedadPin= A2;
int valorluz;
int valortemperatura;
int valorhumedad;
int valorplato;
int valorvolumenagua;
int valorsensorluz;
int valorsensortemperatura;
int valorsensorhumedad;
int sensorplato;
int sensorvolumenagua;
void setup() {
Serial.begin(9600);
pinMode(bombadeaguaPin, OUTPUT);
pinMode(8,INPUT);
pinMode(12,INPUT);
digitalWrite(9,HIGH);
}
void loop(){
valorsensorluz = analogRead(sensorluzPin);
delay(5000);
valorsensortemperatura = analogRead(sensortemperaturaPin);
delay(5);
valorsensorhumedad = analogRead(sensorhumedadPin);
delay(5);
sensorplato = digitalRead(8);
delay(5);
sensorvolumenagua = digitalRead(12);
delay(5);
valorluz =((5*valorsensorluz/1024)*100);
Serial.print(valorluz);
valortemperatura = (((5.0 * valorsensortemperatura/1024)-0.5) * 100.0);
Serial.print(valortemperatura);
valorhumedad =((5*valorsensorhumedad/1024)*100);
Serial.print(valorhumedad);
if (valortemperatura<=35 && valorluz<=20 && valorhumedad<30 && sensorvolumenagua==LOW && sensorplato==LOW){ // enciende la bomba de agua:
digitalWrite(bombadeaguaPin, LOW);
delay(30000);
digitalWrite(bombadeaguaPin,HIGH);
delay(60000);
}
else{
digitalWrite(bombadeaguaPin, HIGH);
}
}
Pues bien, todo funciona a la perfección, salvo que los tiempos de 30 segundos de riego y 60 segundos de no riego, para que de tiempo a llegar el agua al plato en caso de exceso, pues no se cumplen. Unas veces hace 30 otras 5 y va un poco al azar.
Alguien puede decirme porque se produce esto.
Un saludo y gracias