Projecto montado

Sensor de temperatura com LCD

Há uns meses apresentei um workshop sobre Arduíno e decidi construir uma estação meteorológica simples. A estação media a temperatura ambiente e a humidade, apresentado, depois, os dados num LCD e num indicador visual. Esse indicador era composto por três led’s: um azul, um verde e um vermelho.

sensor de temperatura
Projecto montado

 

Se a temperatura descesse abaixo dos 20ºC o led azul acendia; caso estivesse entre 20ºC e 30ºC acendia-se o verde e acima dos 30ºC acendia-se o led vermelho.

Material:

Os componentes necessários são os seguintes:

Código:

Em seguida, apresento o código usado.

Para utilização do DHT22 e do LCD podemos usar as bibliotecas “DHT.h” e “LiquidCrystal.h” já existentes. Na “LiquidCrystal.h” é necessário definir os pinos do Arduíno que o LCD vai usar.

Na “DHT.h”, quando a inicializamos, é necessário escolher que tipo de sensor estamos a usar. A biblioteca suporta vários sensores.

/*
* Tiago Santos
* dark_storm@groundzero.com.pt
* https://space.groundzero.com.pt
*/
#include "DHT.h"
#include "LiquidCrystal.h"
#define DHTPIN 6
#define DHTTYPE DHT22
#define blue 8
#define green 9
#define red 10

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Em seguida, iniciamos o setup, onde definimos que os pinos dos led’s são de saída, iniciamos o dht22 e definimos que o LCD tem 16 colunas por 2 linhas.

void setup() {
 Serial.begin(9600);
 pinMode(blue,OUTPUT);
 pinMode(green, OUTPUT);
 pinMode(red,OUTPUT);
 
 dht.begin();
 lcd.begin(16, 2);
}

No programa em si, conseguimos ler a humidade e a temperatura e apresentamo-las no LCD. A humidade na linha 0 e a temperatura na linha 1. De seguida, definimos que led ligamos. Se a temperatura estiver abaixo dos 20ºC ligamos o azul. Entre 20ºC e 30ºC ligamos o verde. Acima de 30ºC ligamos o vermelho.

void loop() {
 delay(2000);

 float h = dht.readHumidity();
 float t = dht.readTemperature();


 if (isnan(h) || isnan(t) ){
  Serial.println("Failed to read from DHT sensor!");
  return;
 }

 lcd.setCursor(0, 0);
 lcd.print("Humid.: ");
 lcd.print(h);
 lcd.print(" %");
 lcd.setCursor(0, 1);
 lcd.print("Temp. : ");
 lcd.print(t);
 lcd.print(" C");
 Serial.print("Humidity: ");
 Serial.print(h);
 Serial.print(" %\t");
 Serial.print("Temperature: ");
 Serial.print(t);
 Serial.println(" *C ");
 if( t < 20 )
 {
  digitalWrite(green, LOW);
  digitalWrite(red, LOW);
  digitalWrite(blue, HIGH);
 }
 else
 {
  if(t > 30)
  {
   digitalWrite(green, LOW);
   digitalWrite(blue, LOW);
   digitalWrite(red, HIGH); 
  }
  else
  {
   digitalWrite(blue, LOW);
   digitalWrite(red, LOW);
   digitalWrite(green, HIGH); 
  }
 }
}

Poderão descarregar o código fonte a partir da minha conta de GitHub em:

https://github.com/d4rks70rm/Arduino-DHT22-Sensor-with-LCD

Ligações:

sensor de temperatura
Esquema temperatura

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *