Olá pessoal,

Sou novato por aqui, e também novato em prog C Arduino.

Preciso fazer um programa em que o Arduino leia 3 sensores DHT22 e escreva a Umidade em 3 saídas PWM distintas.

Minha dificuldade está nas definições dos pinos de entrada, pois visitei vários fóruns e não há exemplos com mais de um sensor.

Utilizei um exemplo do LdG e está funcionando, mas não estou conseguindo definir as entradas no programa.

Abaixo está o Sketch que está rodando agora com pequenas mudanças(gambiarras) que fiz tentando por acerto e erro ler duas entradas.

Por favor, verifiquem o que há de errado ou faltando para que eu consiga ler mais de um sensor DHT22.

Vejam que como teste, no último loop eu incluí uma linha com: analogWrite(9,temp1) e está funcionando.

 

Obrigado,

 

O Sketch:

Obs: Neste caso estou utilizando o DHT11 para os testes práticos.

 

// Example de Alarme por temperatura e umidade

// Lab. de Garagem

 

#include "DHT.h"

 

#define DHTPIN 7    // O pino onde o DHT vai esta conectado

// Descomente linha com o sensor que vai utilizar

#define DHTTYPE DHT11   // DHT 11

//#define DHTTYPE DHT22   // DHT 22 - RHT03 - AM2302

//#define DHTTYPE DHT21   // DHT 21 - AM2301

 

//DHT dht(DHTPIN,DHTTYPE);

 

 

//#define DHTPIN 6

 

// Descomente linha com o sensor que vai utilizar

#define DHTTYPE DHT11   // DHT 11

//#define DHTTYPE DHT22   // DHT 22 - RHT03 - AM2302

//#define DHTTYPE DHT21   // DHT 21 - AM2301

 

DHT dht(DHTPIN,DHTTYPE);

 

#define ALARME 3 // pino onde o Alto-falante esta conectado

 

float tmax=50,tmin=0,temp1,temp2, umid1,umid2;

 

void setup()

{

  Serial.begin(9600);

  Serial.println("Alarme por temperatura e umidade");

  Serial.print("Digite a temperatura maxima: ");

  while(tmax == 50)

  {

    if (Serial.available() > 0)

    { 

      tmax= Serial.parseFloat();

    }

  } 

  Serial.println (tmax);

  Serial.print("Digite a temperatura minima: ");

  while(tmin == 0)

  {

    if (Serial.available() > 0)

    { 

      tmin= Serial.parseFloat();

    }

  }

  Serial.println (tmin);

  dht.begin();

}

 

void loop()

{

  delay(2000); // delay para garantir no minimo 2s entre cada uma das leituras

  umid1 = dht.readHumidity(); // leitura de umidade

  temp1 = dht.readTemperature(); // leitura da temperatura

 

  umid2 = dht.readHumidity(); // leitura de umidade

  temp2 = dht.readTemperature(); // leitura da temperatura

 

  if (isnan(temp1) || isnan(umid1)); //Verifica se é um valor válido

  if (isnan(temp2) || isnan(umid2))

  {

    Serial.println("\nFalha ao ler o Sensor DHT\n");

    tone (ALARME,440,1000);

  }

  else

  {

    if (temp1 > tmin && temp1 < tmax);

    if (temp2 > tmin && temp2 < tmax)

    {

      noTone(ALARME);

      leituraSerial();

    }

    else

    {

      tone (ALARME,440,1000);

      Serial.println("PERIGO!!! TEMPERATURA FORA DO ESPERADO");

      Serial.print("Temperatura deve estar entre ");

      Serial.print(tmin);

      Serial.print(" e ");

      Serial.println(tmax);

      leituraSerial();

    }

  }

}

 

void leituraSerial()

{

      Serial.print("Umidade relativa 1: ");

      Serial.print(umid1);

      Serial.print(" %\t");

      Serial.print("Temperature 1: ");

      Serial.print(temp1);

      Serial.println(" *C\n");

analogWrite(9,temp1);

      Serial.print("Umidade relativa 2: ");

      Serial.print(umid2);

      Serial.print(" %\t");

      Serial.print("Temperature 2: ");

      Serial.print(temp2);

      Serial.println(" *C\n");

}

Exibições: 1996

Responder esta

Respostas a este tópico

Olá Pessoal,

Este caso está resolvido, pois pesquisando um pouco mais encontrei uns exemplos que serviram para que eu conseguisse resolver o problema.

Créditos: Acessei o site do Arduino Link-  http://forum.arduino.cc/index.php?PHPSESSID=52l0nq9scp63cj6qi9t8aij...

Abaixo o código que completei:

// Examplo de Alarme por temperatura e umidade utilizando 3 sensores
// Lab. de Garagem

#include "DHT.h"

#define DHTPIN 7 // Define que o DHT está conectado no pino 7 do Arduino
#define DHTPIN1 8 // Define que o DHT está conectado no pino 8 do Arduino
//#define DHTPIN2 9 // Define que o DHT está conectado no pino 9 do Arduino

//Neste exemplo estão sendo habilitados 2 sensores
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define DHTTYPE1 DHT22 // DHT 22 (AM2302)
//#define DHTTYPE2 DHT11 // DHT 11 (AM2301)

DHT dht(DHTPIN, DHTTYPE);
DHT dht1(DHTPIN1, DHTTYPE);
//DHT dht2(DHTPIN2, DHTTYPE2);

#define ALARME 3 // pino onde o Alto-falante está conectado

float tmax=50,tmin=0, umid, temp, umid1, temp1/*, umid2, temp2*/;

void setup()
{
  Serial.begin(9600);
  Serial.println("Alarme por temperatura e umidade");
  Serial.print("Digite a temperatura maxima: ");
  while(tmax == 50)
  {
    if (Serial.available() > 0)
    {  
      tmax= Serial.parseFloat();
    }
  }  
  Serial.println (tmax);
  Serial.print("Digite a temperatura minima: ");
  while(tmin == 0)
  {
    if (Serial.available() > 0)
    {  
      tmin= Serial.parseFloat();
    }
  }
  Serial.println (tmin);
  dht.begin();
  dht1.begin();
//  dht2.begin();
}

void loop()
{
  delay(2000); // delay para garantir no mínimo 2s entre cada uma das leituras
 
  umid = dht.readHumidity(); // leitura da Umidade - sensor 1
  temp = dht.readTemperature(); // letura da Temperatura - sensor 1
  umid1 = dht1.readHumidity(); // leitura da Umidade - sensor 2
  temp1 = dht1.readTemperature(); // letura da Temperatura - sensor 2
//  umid2 = dht2.readHumidity(); // leitura da Umidade - sensor 3
//  temp2 = dht2.readTemperature(); // letura da Temperatura - sensor 3
 
  if ((isnan(temp) || isnan(umid)) || (isnan(temp1) || isnan(umid1))) //Verifica se é um valor válido dos sensores
  {
    Serial.println("\nFalha ao ler o Sensor DHT\n");
    tone (ALARME,440,1000);
  }
  else
  {
    if (temp > tmin && temp < tmax)
    {
      noTone(ALARME);
     // leituraSerial();
    }
    else
    {
      tone (ALARME,440,1000);
      Serial.println("PERIGO!!! TEMPERATURA 1 FORA DO ESPERADO");
      Serial.print("Temperatura deve estar entre ");
      Serial.print(tmin);
      Serial.print(" e ");
      Serial.println(tmax);
      leituraSerial();
    }
  }
  {
    if (temp1 > tmin && temp1 < tmax)
    {
      noTone(ALARME);
      leituraSerial();
    }
    else
    {
      tone (ALARME,440,1000);
      Serial.println("PERIGO!!! TEMPERATURA 2 FORA DO ESPERADO");
      Serial.print("Temperatura deve estar entre ");
      Serial.print(tmin);
      Serial.print(" e ");
      Serial.println(tmax);
      leituraSerial();
    }
  }
}

void leituraSerial()
{
      Serial.print("Umidade Relativa 1: ");
      Serial.print(umid);
      Serial.print(" %\t");
      Serial.print("Temperatura 1: ");
      Serial.print(temp);
      Serial.println(" *C\n");

      Serial.print("Umidade Relativa 2: ");
      Serial.print(umid1);
      Serial.print(" %\t");
      Serial.print("Temperatura 2: ");
      Serial.print(temp1);
      Serial.println(" *C\n");
      
   /*   Serial.print("Umidade Relativa 3: ");
      Serial.print(umid2);
      Serial.print(" %\t");
      Serial.print("Temperatura 3: ");
      Serial.print(temp2);
      Serial.println(" *C\n");*/
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço