PROJ – 09/02/2026

Esquema de ligação de uma protoboard

Esquema de pinos do Arduino UNO

Esquema de pinos do Arduino Nano

Esquema de pinos do ESP32 (Modelo com 30 pinos)

Plataforma para simulação de projetos: https://www.tinkercad.com/

Código para Arduino Nano / Uno com medidor de temperatura, pressão atmosférica, umidade e um display.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"
/*
---- DHT22 ---
ALIMENTAÇÃO: 3.3V (APESAR DE FUNCIONAR COM 5V, NO MODULO NAO FUNCIONOU) E GND
PINO NA PLACA: D4
PINO NO ARDUINO: D2

---- DHT11 ---
ALIMENTAÇÃO: 3.3V (TEORICAMENTE FUNCIONA COM 5V TAMBÉM ) E GND
PINO NA PLACA: DATA
PINO NO ARDUINO: D4

---- BMP280 ----
ALIMENTAÇÃO: 3.3V  E GND
PINO NA PLACA: SDA, SLC
PINO NO ARDUINO: A4, A5

---- DISPLAY SSD1306 128X32 ----
ALIMENTAÇÃO: 3.3V (PADRÃO SEM MÓDULO) OU 5V E GND
PINO NA PLACA: SDA, SLC
PINO NO ARDUINO: A4, A5

*/

#define DHT11_PIN 4
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32

DHT dht11(DHT11_PIN, DHT11);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_BMP280 bmp;

//variáveis que serão utilizadas
bool DISPLAY_FALHOU = false;
float bmp280_temp, bmp280_press, dth11_humi, dth11_tempC;

void setup() {
  Wire.begin();
  Serial.begin(9600);

  dht11.begin(); // initialize the DHT22 sensor

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Display não encontrado");
    DISPLAY_FALHOU = true;
  }

  if (!bmp.begin(0x76)) {
    Serial.println("BMP280 não encontrado");
    DISPLAY_FALHOU = true;
  }

  display.clearDisplay();
}

void loop() {
  bmp280_temp = bmp.readTemperature();
  bmp280_press = bmp.readPressure() / 100.0;

   // read humidity
  dth11_humi  = dht11.readHumidity();
  // read temperature as Celsius
  dth11_tempC = dht11.readTemperature();


  display.setTextColor(SSD1306_WHITE);

  //verifica se teve falha no display
  // if(DISPLAY_FALHOU == true){
  // }


  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(0, 0);
  display.print( (bmp280_temp), 1);
  display.setTextSize(1);
  display.print(" C  ");
  display.setTextSize(2);
  display.print(dth11_humi, 0);
  display.println(" %");
  display.setTextSize(2);

  display.setCursor(0, 16);
  display.print(bmp280_press, 0);
  display.println(" hPa");
  display.display();
  delay(5000);

  //// check if any reads failed
  if (isnan(dth11_humi) || isnan(dth11_tempC)) {
    display.setTextSize(2);
    display.clearDisplay();
    display.setCursor(0, 0);
    display.println("Falha ");
    display.println("DHT 11");
    display.display();
    delay(3000);
  } 
  

  // desliga
display.ssd1306_command(SSD1306_DISPLAYOFF);
delay(3000);

// liga novamente
display.ssd1306_command(SSD1306_DISPLAYON);
}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima