Buenas, soy Toribio y nuevo por estos lares, después de un par de meses encendiendo y apagando leds me he embarcado en mi primer proyecto, una atmosfera controlada, la idea es con un sensor DHT22 leer la temperatura y humedad que hay en la sala y activar reles conectados a un humificador, un extrator y una estufita para que la temperatura y la humedad queden dentro de los límites que me interesa.
Ahora el problema, estoy empezando a programar y ando un poco perdido, consigo encender el rele o apagarlo según la temperatura que haya pero es como si solo leyera una vez el sensor y se quedara en ese estado, la temperatura y la humedad no vuelve a cambiar.
Os pego el código.
Como vereís ahora mismo sale la temperatura y humedad en un lcd y en el monitor serial cuando lo consiga hacer funcionar solo lo pondré en el lcd.
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#include "DHT.h"
#include <LiquidCrystal.h>
//// CODIGO SENSOR DE HUMEDAD Y TEMPERATURA DHT22
#define DHTPIN 7 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
DHT dht(DHTPIN, DHTTYPE);
//// CODIGO LCD
// LCD RS pin to digital pin 12
// LCD Enable pin to digital pin 11
// LCD D4 pin to digital pin 5
// LCD D5 pin to digital pin 4
// LCD D6 pin to digital pin 3
// LCD D7 pin to digital pin 2
// LCD R/W pin to ground
// 10K resistor:
// ends to +5V and ground
// wiper to LCD VO pin (pin 3)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// RELE
int rele1 = 8; // PIN al que va conectado el relé
void setup() {
Serial.begin(9600);
Serial.println("DHT22 test!");
lcd.begin(16, 2);
lcd.print("DHT22 test!");
dht.begin();
pinMode(rele1, OUTPUT);
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println("Fallo al leer el sensor");
lcd.print("Fallo al leer el sensor");
}
else {
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C");
lcd.setCursor(0, 0);
lcd.print("Humedad: ");
lcd.print(h);
lcd.print(" %\t");
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" *C");
}
while (true)
{
if (t < 24.00)
{
digitalWrite(rele1, HIGH);
}
else digitalWrite(rele1, LOW);
}
}
A ver si me echáis una mano! Que estoy muy emocionado con estos primeros pinitos en la electrónica y no tengo a nadie a quien recurrir.
Daros la gracias por vuestro tiempo y espero que algún día yo pueda ayudar.
Saludos.