
Índice:
Neste projeto, vamos criar uma trena digital usando Arduino. A ideia é medir a distância de um objeto utilizando um sensor ultrassônico HC-SR04 e mostrar o valor em tempo real em um display OLED.
Esse é um projeto simples, visual e muito didático para aprender conceitos importantes como:
- leitura de sensores
- cálculo de distância
- uso de display OLED
- comunicação I2C
- programação com Arduino
Materiais necessários
Para montar o projeto, você vai precisar de:
- 1 Arduino Uno ou Arduino Nano
- 1 sensor ultrassônico HC-SR04
- 1 display OLED I2C 128×64
- jumpers
- protoboard
- cabo USB
Como funciona o sensor HC-SR04
O sensor HC-SR04 mede distância usando ondas ultrassônicas. Ele possui dois transdutores principais:
- TRIG: envia o pulso ultrassônico
- ECHO: recebe o retorno do sinal
O Arduino envia um pulso pelo pino TRIG. O sensor emite uma onda sonora. Quando essa onda bate em um objeto, ela retorna ao sensor. O tempo que ela leva para voltar é medido no pino ECHO.
Com esse tempo, calculamos a distância usando a fórmula: distância = tempo × velocidade do som / 2.
Dividimos por 2 porque o som vai até o objeto e volta.
No código, usamos: distancia = duracao * 0.0343 / 2.
O valor 0.0343 representa aproximadamente a velocidade do som em centímetros por microssegundo.
Pinagem do projeto
Sensor HC-SR04 no Arduino
HC-SR04 Arduino Uno/Nano
VCC 5V
GND GND
TRIG D9
ECHO D8
Display OLED I2C no Arduino
OLED I2C Arduino Uno/Nano
VCC 5V
GND GND
SDA A4
SCL A5
No Arduino Uno e Nano, os pinos I2C padrão são:
SDA = A4
SCL = A5
Bibliotecas necessárias
No Arduino IDE, instale as seguintes bibliotecas:
- Adafruit SSD1306
- Adafruit GFX Library
Para instalar: - Abra a Arduino IDE.
- Vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
- Pesquise por Adafruit SSD1306 e instale.
- Pesquise por Adafruit GFX Library e instale.
Código completo do projeto
Copie e cole o código abaixo na Arduino IDE:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define TRIG_PIN 9
#define ECHO_PIN 8
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED nao encontrado!");
while (true);
}
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Trena Digital");
display.println("com Arduino");
display.display();
delay(1500);
}
void loop() {
long duracao;
float distancia;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duracao = pulseIn(ECHO_PIN, HIGH);
distancia = duracao * 0.0343 / 2;
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Distancia:");
display.setTextSize(2);
display.setCursor(0, 25);
display.print(distancia, 1);
display.println(" cm");
display.display();
delay(500);
}
Inclusão das bibliotecas
include <Wire.h>
include <Adafruit_GFX.h>
include <Adafruit_SSD1306.h>
A biblioteca Wire.h faz a comunicação I2C com o display OLED. As bibliotecas da Adafruit controlam o display e permitem escrever textos, números e gráficos.
Configuração do display
define SCREEN_WIDTH 128
define SCREEN_HEIGHT 64
define OLED_RESET -1
Aqui definimos o tamanho do display OLED, que neste projeto é de 128×64 pixels.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Esse comando cria o objeto responsável por controlar o display.
Definição dos pinos do sensor
define TRIG_PIN 9
define ECHO_PIN 8
O pino TRIG está ligado no pino digital 9 do Arduino.
O pino ECHO está ligado no pino digital 8.
Inicialização
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
O pino TRIG é saída, pois envia o pulso para o sensor.
O pino ECHO é entrada, pois recebe o retorno do sinal.
Leitura da distância
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
Esse trecho envia um pulso curto ao sensor.
Depois usamos:
duracao = pulseIn(ECHO_PIN, HIGH);
Essa função mede o tempo que o pino ECHO ficou em nível alto.
Por fim:
distancia = duracao * 0.0343 / 2;
Esse cálculo converte o tempo em distância em centímetros.
Resultado esperado
Ao aproximar ou afastar um objeto do sensor, o display OLED mostrará a distância em
tempo real:
Distancia:
24.5 cm
Também é possível acompanhar o valor pelo Serial Monitor da Arduino IDE.
Possíveis problemas e soluções
O OLED não aparece
Teste trocar o endereço: 0x3C
por: 0x3D
A distância aparece zerada
Verifique:
se o TRIG está no pino D9;
se o ECHO está no pino D8;
se o sensor está alimentado com 5V;
se o GND está conectado corretamente.
A distância fica instável
Tente:
manter o objeto em uma superfície plana;
evitar medir tecidos ou superfícies irregulares;
aumentar o delay entre leituras;
fazer uma média de várias medições.
Melhorias para o projeto
Você pode evoluir essa trena digital adicionando:
- barra gráfica no OLED;
- buzzer de proximidade;
- botão para congelar a medição;
- conversão para metros;
- interface mais bonita;
- medição máxima e mínima;
- indicador visual de distância segura;
- caixa impressa em 3D.
Conclusão
Neste projeto, criamos uma trena digital com Arduino, utilizando um sensor ultrassônico HC-SR04 e um display OLED. Esse projeto é uma ótima forma de aprender como sensores funcionam na prática e como
podemos transformar leituras físicas em informações visuais no display. Com poucos componentes, é possível criar uma aplicação útil, didática e com grande impacto visual.
Saiba mais sobre a parceria Saravati e Sara Educação
Este “Guia de Montagem” é uma colaboração especial entre a Saravati e a Sara Educação, criado pelo Professor Felipe Rosa. Nosso objetivo é enriquecer a comunidade de entusiastas da eletrônica, IoT e automação com recursos educacionais de alta qualidade. Através dessa parceria, buscamos inspirar e capacitar criadores em seus projetos, disponibilizando esses guias em nosso blog e nas redes sociais.
