PROJ – 09/02/2026

Esquema de ligação de uma protoboard

Esquema de pinos do Arduino UNO

PDF: https://ciro.dev.br/tmp_material/pinos_arduino_UNO.pdf

Esquema de pinos do Arduino Nano

PDF: https://ciro.dev.br/tmp_material/pinod_arduino_NANO.pdf

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);
}
Rolar para cima