Integrando teclado matricial, DHT22 e Display LCD
Fala galera, tudo beleza? Hoje viemos apresentar um pequeno e simples projeto, com o objetivo de mostrar como estar integrando teclado matricial, DHT22 e display LCD. Além disso, vamos utilizar tópicos abordados em nossos posts antigos, tais como:
- Fritzing;
- Teclado de membrana;
- LCD 16×2;
Mas por que utilizar esses componentes?
Primeiramente, o intuito do post é mostrar que mesmo com componentes tão simples e acessíveis, dá pra se fazer bastante – desde um simples controle de temperatura e ambiente (nosso caso) à uma pequeno projeto de estação meteorológica.
Além do mais, com estes mesmos componentes abaixo utilizados, podemos integrá-los e criar projetos de sistemas de segurança, controle/automação e robótica :), incrível não?
Por fim, os posts introdutórios aos componentes LCD 16×2 e Teclado de Membrana podem ser encontrados aqui e aqui, respectivamente :).
Materiais Utilizados no Projeto
- Arduino Mega;
- Protoboard;
- LCD 16×2(Azul);
- Sensor de temperatura DHT22;
- Potenciômetro 10k;
- Resistor 4,7k;
- Teclado de membrana 1×4;
- Jumpers.
Esses itens, e mais uma outros para implementar seu projeto – você acha AQUI na nossa loja :D.
Montagem do Projeto
Além disso, temos como adicional à montagem acima, adicionar um sensor DHT22 à porta 25, e o teclado de membrana às portas 21,22.
Obs: Foi desenvolvido o código utilizando apenas 2 teclas do teclado de membrana, sendo que se necessário pode utilizar as teclas restantes, declarando-o-as conforme o código abaixo nas linhas 17 e 18 :), podendo mais sensores, fazendo parecido ao que foi feito nas linhas 6 a 13.
Código do Projeto Comentado
#include <DHT.h> #include <LiquidCrystal.h> LiquidCrystal lcd(40,41,42,43,44,45); // Porta RS, E, D4, D5, D6, D7 #define DHTTYPE DHT22 // Criando o objeto DHT, e declarando sua porta (24). #define DHTPIN 24 DHT dht(DHTPIN, DHTTYPE); #define DHTTYPO DHT22 // Criando o objeto DHT2, e declarando sua porta (25). #define DHTPINO 24 DHT dht2(DHTPINO, DHTTYPO); #define ler_delay 30000 // Criando a função print LCD, para deixar o código mais enxuto. void printLCD(){ byte leitura1 = digitalRead(21); // Porta 21 - correspondente a tecla 1. byte leitura2 = digitalRead(22); // Porta 22 - correspondente a tecla 2. if(leitura1 == 0) { //Realiza a leitura de todas as portas, se estiverem em estado baixo, imprime via serial monitor, "Tecla "X" pressionada" lcd.clear(); lcd.setCursor(0,0); // Seta o cursor do LCD na Coluna 0 e Linha 0( Visualmente a primeira linha e primeira coluna). lcd.print("Sensor1"); delay(2000); // Espera 2s para mostrar o valor lido no sensor lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(dht.readTemperature()); // Printa a leitura da temperatura lcd.print("ºC"); lcd.setCursor(0,1); // Seta o cursor do LCd na Coluna 0 e Linha 1. lcd.print("Umid: "); lcd.print(dht.readHumidity()); // Printa a umidade lcd.print("%"); delay(5000); // Aguarda 5s. } if(leitura2 == 0) { lcd.clear(); lcd.setCursor(0,0); // Seta o cursor do LCD na Coluna 0 e Linha 0( Visualmente a primeira linha e primeira coluna). lcd.print("Sensor2"); delay(2000); // Espera 2s para mostrar o valor lido no sensor, no segundo sensor. lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(dht2.readTemperature()); // Printa a leitura da temperatura lcd.print("ºC"); lcd.setCursor(0,1); // Seta o cursor do LCd na Coluna 0 e Linha 1. lcd.print("Umid: "); lcd.print(dht2.readHumidity()); // Printa a umidade lcd.print("%"); delay(5000); // Aguarda 5s. } else { lcd.clear(); lcd.setCursor(0,0); // Seta o cursor do LCD na Coluna 0 e Linha 0( Visualmente a primeira linha e primeira coluna). lcd.print("Aguardando..."); // Aguarda o estado de leitura de algum botão. } } void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP);//Declaração das portas 2, 3, como "entrada" pullup, com a finalidade de monitorar o estado da chave. digitalWrite(38, 1); pinMode(3, INPUT_PULLUP); lcd.begin(16,2); // Inicia o objeto LCD e suas 16 colunas e 2 linhas dht.begin(); // Inicia o objeto DHT(Sensor de temperatura e umidade) dht2.begin(); } void loop() { delay(ler_delay); //Aguarda 30s printLCD(); // Executa a função que printa os valores de Temp e Umi, no LCD, de acordo com a config. }
Conclusão do Projeto – Integrando teclado matricial
Então, fácil não? Espero que tenha aprendido sobre como estar integrando teclado matricial, DHT22 e Display LCD. De uma forma simples, bacana e legal de se trabalhar – e dá pra fazer um montão de coisas com esses componentes seguindo essa linha de projeto.
Portanto, deixe o seu comentário ai embaixo, vai lá no nosso Facebook e diz o que achou, e compartilha com os seus colegas se achou interessante!