Pages: [1]   Go Down
Author Topic: Proyecto de Atmósfera Controlada. Sensor DHT22 + Reles  (Read 2102 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
// 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.
Logged

Onda
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
This is personal...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

El While(true) va a hacer que nunca salga de ese bucle, yo quitaría el while, las instrucciones se encuentran dentro del loop, así que harás el if siempre.
Code:
// 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");

  }
   
   

    if (t < 24.00)
    {
          digitalWrite(rele1, HIGH);
               
    }
    else digitalWrite(rele1, LOW);

}
Logged

---
Saludos,
José Chorva
www.pepechorva.com
@pepechorva on twitter

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias, efectivamente funciona, probé el if pero me fallaría algo.Era más facil de lo que yo creía.

Un saludo.
Logged

Pages: [1]   Go Up
Jump to: