#include <Servo.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define TempPino A3
#define Tipo DHT22
#define led_Janela 2
Servo janela;
DHT sensor(TempPino, Tipo);
//configura o display no endeereço 0x27 com 16 caracteres e 2 linhas
LiquidCrystal_I2C tela (0x27,20,4);
void setup() {
janela.attach(3);
janela.write(0);
sensor.begin();
for(int i=0; i<3;i++){ //faz piscar a tela ao iniciar
tela.noBacklight();
delay(500);
tela.backlight();
delay(500);
}
tela.begin(16,2);
tela.clear();
tela.setCursor(2,0);
tela.print("Termometro");
tela.setCursor(4,1);
tela.print("Digital");
delay(1500);
for (int scrool = 0; scrool < 16; scrool++) { // faz relar os caracteres para a esquerda
tela.scrollDisplayLeft();
//tela.scroolDisplayRight(); //para a direita
delay(175);
}
delay(1000);
tela.clear();
}
void loop() {
float h = sensor.readHumidity();
float t = sensor.readTemperature();
String H = String(h,0); //caso queira mostrar decimais substituia o 0(zero)
String T = String(t,1);
delay(300);
// Verificação de faixas de temperatura substituindo o switch
if (t <= 0) {
janela.write(0);
digitalWrite(led_Janela, LOW); // Garante o LED desligado se não for o default
}
else if (t > 0 && t <= 10) {
janela.write(45);
digitalWrite(led_Janela, LOW);
}
else if (t > 10 && t <= 20) {
janela.write(90);
digitalWrite(led_Janela, LOW);
}
else if (t > 20 && t <= 30) {
janela.write(135);
digitalWrite(led_Janela, LOW);
}
else if (t > 30 && t <= 40) {
janela.write(90);
digitalWrite(led_Janela, LOW);
}
else {
digitalWrite(led_Janela, HIGH); // Liga o LED se temperatura for maior que 40
}
tela.setCursor(2,0);
tela.print("Temperatura");
tela.setCursor(5,1);
tela.print(T);
tela.setCursor(9,1);
tela.write(223); //código para escrever o símbolo de graus
//em alguns projetos também encontrei o código 247 para graus
delay(1500);
tela.clear();
delay(300); // atraso para deixar as trocas mais suaves
tela.setCursor(4,0);
tela.print("Umidade");
tela.setCursor(6,1);
//para não precisar contar as coordenadas somente concatenei o % junto com o valor do sensor
tela.println(H + "%");
// tela.setCursor(8,1); // substituido pela linha acima
// tela.print("%");
delay(1500);
tela.clear();
}