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);
}