Tanto a parte do leitor DHT quanto do Display não funcionaram corretamente, precisei fazer alguns ajustes para conseguir fazer funcionar, segue o código abaixo:
/* Leitor de Temperatura e Umidade utilizando um sensor DHT 11 e com o valor impresso em um Display I2C de 128 x 64 */
// Leitor de Temperatura DHT 11
#include <DHT.h>
#define DHTPIN D3
#define DHTTYPE DHT11 // Mudar caso seja outro sensor DHT
DHT dht(DHTPIN, DHTTYPE);
float h;
float t;
float hic;
// Display
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largura do display OLED, em pixels
#define SCREEN_HEIGHT 64 // Altura do display OLED, em pixels
#define OLED_RESET LED_BUILTIN
#define SCREEN_ADDRESS 0x3D
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Setup
void setup() {
Serial.begin(115200);
dht.begin();
configurarDisplay();
}
// Loop
void loop() {
medirTemperaturaUmidade();
mostrarTemperaturaUmidade();
}
// Funções auxiliares
void medirTemperaturaUmidade(){
delay(2000);
h = dht.readHumidity(); // Lendo a Umidade
t = dht.readTemperature(); // Lendo a Temperatura em Celsius
hic = dht.computeHeatIndex(t, h, false); // Computando a Temperatura em Celsius
}
// Configuração do Display
void configurarDisplay(){
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
display.clearDisplay();
}
// Mostra a Temperatura e Umidade no Display
void mostrarTemperaturaUmidade(){
mostrarMensagemNoDisplay("Temperatura", (t), " C");
mostrarMensagemNoDisplay("Umidade", (h), " %");
}
// Configura os parâmetros do display para exibir a Temperatura em Celsius (C) e Umidade em Porcentagem (%)
void mostrarMensagemNoDisplay(const char* texto1, int medicao, const char* texto2){
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.print(texto1);
display.setTextSize(5);
display.setCursor(20,20);
display.print(medicao);
display.setTextSize(2);
display.print(texto2);
display.display();
delay(2000);
}