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");
}
Tags:
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");*/
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por