Arduino UNO R4 - DHT22 - OLED
Neste guia, vamos aprender a verificar e mostrar a temperatura e a umidade usando o módulo DHT22 em uma tela OLED.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Buy Note: If you want a bigger OLED display, use the 2.42 inch OLED Display 128x64 .
Sobre a Tela OLED e o Sensor de Temperatura e Umidade DHT22
Conheça a tela OLED e o sensor de temperatura e umidade DHT22, incluindo a pinagem, o funcionamento e como programá-los, nos tutoriais abaixo.
- Tutorial Arduino UNO R4 - OLED
- Tutorial Arduino UNO R4 - DHT22
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
Código Arduino UNO R4 - Sensor DHT22 - OLED
/*
* Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com
* Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-dht22-temperature-humidity-sensor-oled
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define DHT22_PIN 2 // The Arduino UNO R4 pin connected to DHT22 sensor
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C
DHT dht22(DHT22_PIN, DHT22);
String temperature;
String humidity;
void setup() {
Serial.begin(9600);
// initialize OLED display with address 0x3C for 128x64
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
while (true);
}
delay(2000); // wait for initializing
oled.clearDisplay(); // clear display
oled.setTextSize(3); // text size
oled.setTextColor(WHITE); // text color
oled.setCursor(0, 10); // position to display
dht22.begin(); // initialize DHT22 the temperature and humidity sensor
temperature.reserve(10); // to avoid fragmenting memory when using String
humidity.reserve(10); // to avoid fragmenting memory when using String
}
void loop() {
float humi = dht22.readHumidity(); // read humidity
float tempC = dht22.readTemperature(); // read temperature
// check if any reads failed
if (isnan(humi) || isnan(tempC)) {
temperature = "Failed";
humidity = "Failed";
} else {
temperature = String(tempC, 1); // one decimal places
temperature += char (247); // degree character
temperature += "C";
humidity = String(humi, 1); // one decimal places
humidity += "%";
Serial.print(tempC); // print to Serial Monitor
Serial.print("°C | " ); // print to Serial Monitor
Serial.print(humi); // print to Serial Monitor
Serial.println("%"); // print to Serial Monitor
}
oledDisplayCenter(temperature, humidity); // display temperature and humidity on OLED
}
void oledDisplayCenter(String temperature, String humidity) {
int16_t x1;
int16_t y1;
uint16_t width_T;
uint16_t height_T;
uint16_t width_H;
uint16_t height_H;
oled.getTextBounds(temperature, 0, 0, &x1, &y1, &width_T, &height_T);
oled.getTextBounds(temperature, 0, 0, &x1, &y1, &width_H, &height_H);
// display on horizontal and vertical center
oled.clearDisplay(); // clear display
oled.setCursor((SCREEN_WIDTH - width_T) / 2, SCREEN_HEIGHT/2 - height_T - 5);
oled.println(temperature); // text to display
oled.setCursor((SCREEN_WIDTH - width_H) / 2, SCREEN_HEIGHT/2 + 5);
oled.println(humidity); // text to display
oled.display();
}
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima na Arduino IDE.
- Conecte a placa Arduino Uno R4 ao módulo DHT22 e à tela OLED conforme o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 correta (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Vá até o ícone Libraries no lado esquerdo da Arduino IDE.
- Pesquise por "SSD1306" e localize a biblioteca SSD13011406 da Adafruit.
- Pressione o botão Install para instalar a biblioteca.

- Você precisa instalar dependências adicionais da biblioteca.
- Clique no botão Install All para instalar todas as bibliotecas necessárias.

- Pesquise por "DHT" e procure a biblioteca DHT sensor library da Adafruit.
- Clique no botão Install para instalar a biblioteca.

- Você precisará instalar dependências adicionais da biblioteca.
- Clique no botão Install All para instalar todas as dependências da biblioteca.

- Copie o código e abra-o na Arduino IDE.
- Pressione o botão Upload na Arduino IDE para enviar o código ao seu Arduino UNO R4.
- Coloque o sensor em água quente e fria, ou segure-o na mão.
- Confira os resultados na tela OLED e no Serial Monitor.
※ Nota:
O código centraliza o texto automaticamente, na horizontal e na vertical, na tela OLED.