Pular para o conteúdo principal

Como Programar o Sensor Ultrassônico no Robô Seguidor de Linha com Arduino | Parte 4

 Depois de montar o seu carrinho seguidor de linha e programar os sensores TCRT5000, chegou a hora de adicionar uma nova funcionalidade: a detecção de obstáculos utilizando o sensor ultrassônico HC-SR04.

Neste tutorial você aprenderá a integrar o ultrassônico ao código existente do carrinho, permitindo que ele pare automaticamente quando encontrar um obstáculo à frente e continue seguindo a linha quando o caminho estiver livre.

💡 Projeto da série: Este tutorial dá continuidade ao projeto do Carrinho Seguidor de Linha para OBR. Se você ainda não montou o robô, recomendamos começar pelo artigo "Como Montar um Robô Seguidor de Linha com Arduino ".

O que você vai aprender?

Ao final deste tutorial você será capaz de:

✅ Integrar o sensor HC-SR04 ao código do carrinho.
✅ Medir distâncias utilizando ondas ultrassônicas.
✅ Exibir as leituras no Monitor Serial.
✅ Fazer o robô parar automaticamente diante de um obstáculo.
✅ Entender cada parte do código comentado.

Como funciona o programa?

O código executa continuamente o seguinte fluxo:
  • Lê os sensores seguidores de linha.
  • Mede a distância com o HC-SR04.
  • Verifica se existe um obstáculo.
  • Caso exista, para o carrinho.
  • Caso contrário, continua seguindo a linha.
Início → Ler sensores de linha → Medir distância → Obstáculo? → Sim: Parar | Não: Seguir linha → Repetir

Ligações Utilizadas

Sensor Ultrassônico
HC-SR04 Arduino

VCC         5V
GND         GND
TRIG         D8
ECHO         D9

Entendendo o Código

Vamos analisar cada parte do programa.

1. Biblioteca Servo

Logo no início do código utilizamos a biblioteca responsável pelo controle dos servos.

#include <Servo.h>

Ela permite controlar facilmente os servos utilizando apenas o método write().

2. Criando os motores

Em seguida criamos dois objetos Servo.

Servo MOTOR_DIREITA;
Servo MOTOR_ESQUERDA;


Cada objeto será responsável por controlar uma das rodas do carrinho.

3. Definindo os pinos

Depois definimos todos os pinos utilizados.

#define SENSOR_ESQUERDA 7
#define SENSOR_DIREITA 6


#define TRIG 8
#define ECHO 9


Os sensores continuam ligados aos pinos digitais 6 e 7, enquanto o sensor ultrassônico utiliza os pinos 8 e 9.

4. Configurando o hardware

Dentro da função setup() inicializamos todos os componentes.

MOTOR_DIREITA.attach(11);
MOTOR_ESQUERDA.attach(10);


pinMode(SENSOR_ESQUERDA, INPUT);
pinMode(SENSOR_DIREITA, INPUT);


pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);


Serial.begin(9600);

Aqui configuramos:
  • Os dois servos;
  • Os sensores seguidores de linha;
  • O HC-SR04;
  • O Monitor Serial.

5. Lendo os sensores de linha

A cada repetição do programa, os sensores são lidos.

bool sensorEsquerda = digitalRead(SENSOR_ESQUERDA);
bool sensorDireita = digitalRead(SENSOR_DIREITA);


Cada sensor pode retornar dois valores:
  • 0 → Branco
  • 1 → Preto
Essas informações são utilizadas para manter o carrinho sobre a linha.

6. Medindo a distância

Agora entra em ação o sensor ultrassônico.
Primeiro enviamos um pequeno pulso pelo Trigger.

digitalWrite(TRIG, LOW);
delayMicroseconds(2);


digitalWrite(TRIG, HIGH);
delayMicroseconds(10);

digitalWrite(TRIG, LOW);


Esse pulso faz o HC-SR04 emitir uma onda ultrassônica.

Em seguida medimos o tempo de retorno.

duracao = pulseIn(ECHO, HIGH);

Quanto maior esse tempo, maior será a distância.

7. Calculando a distância

Depois aplicamos a fórmula.

distancia = duracao * 0.0343 / 2;


Onde:
  • 0,0343 representa a velocidade do som em centímetros por microssegundo;
  • dividimos por 2, pois a onda percorre o caminho de ida e volta.

8. Exibindo informações no Monitor Serial

Durante os testes, o Monitor Serial é um grande aliado.

Serial.print("E:");
Serial.print(sensorEsquerda);


Serial.print(" D:");
Serial.print(sensorDireita);

Serial.print(" Distancia:");
Serial.print(distancia);


Serial.println(" cm");

Assim é possível acompanhar em tempo real:
  • Litura do sensor esquerdo;
  • Leitura do sensor direito;
  • Distância detectada.
Exemplo:
E:0 D:0 Distancia:85 cm
E:1 D:0 Distancia:83 cm
E:0 D:1 Distancia:40 cm
E:0 D:0 Distancia:18 cm

9. Detectando obstáculos

Agora vem a principal novidade.

if (distancia <= 20)

Sempre que um objeto estiver a 20 centímetros ou menos, o carrinho irá parar.

MOTOR_ESQUERDA.write(90);
MOTOR_DIREITA.write(90);


Também exibimos uma mensagem.

>>> Obstáculo Detectado!

Essa lógica evita colisões e torna o robô muito mais seguro durante os testes.

10. Continuando o seguimento de linha

Caso não exista obstáculo, o programa continua exatamente como antes.

Ele verifica:

Sensor Esquerdo
Sensor Direito Movimento

Branco                 Branco                 Frente
Preto                 Branco                 Corrige para a esquerda
Branco                 Preto                 Corrige para a direita
Preto                 Preto                 Para

Essa separação entre a lógica do ultrassônico e a lógica dos sensores de linha deixa o código mais organizado e fácil de entender.

Código Completo Comentado

Todo o código comentado deste projeto está disponível no GitHub.

Lá você encontrará sempre a versão mais atualizada, além de futuras melhorias e novos recursos.

📥 Acesse o código
👉 GitHub do Projeto
▶️ Acesse nosso canal no YouTube

Gostou do projeto? Deixe uma estrela no repositório para apoiar a criação de novos conteúdos sobre Arduino, Robótica e Cultura Maker.

Acompanhe nossas publicações e continue explorando o universo da robótica com a gente!

Comentários

Postagens mais visitadas deste blog

Como Montar um Robô Seguidor de Linha com Arduino | Parte 1

Aprenda a construir um robô seguidor de linha utilizando Arduino UNO, servos motor e sensores de reflexo. Um projeto ideal para quem está começando na robótica e para quem deseja participar da Olimpíada Brasileira de Robótica (OBR). O que você vai construir? Ao final deste tutorial você terá um robô capaz de: ✅ Detectar linhas pretas sobre fundo branco. ✅ Controlar independentemente cada roda. ✅ Servir como plataforma para estudos de programação. ✅ Participar de provas da OBR. Materiais Utilizados Estrutura Chassi em MDF/Acrílico 2 Rodas 1 Roda Boba Eletrônica Arduino UNO Protoboard 2 Servos (Rotação Contínua) 2 Sensores de reflexo Jumpers Suporte para Bateria Bateria Organização dos fios Uma boa montagem começa por uma boa organização. Neste projeto utilizamos um padrão de cores para facilitar futuras manutenções. 🔴 Vermelho → Alimentação (+5V) ⚫ Preto → GND 🟢🔵🟡 Outras cores → Sinais Essa simples organização evita muitos erros durante os testes. Etapa 1 — Montando a estrutura Come...

Como Programar um Robô Seguidor de Linha com Arduino | Parte 2

Depois de montar toda a estrutura do seu carrinho seguidor de linha, chegou o momento mais esperado: dar vida ao robô através da programação. Neste tutorial você aprenderá como funciona a lógica de um carrinho seguidor de linha utilizando Arduino, dois servos de rotação contínua e dois sensores seguidores de linha. O objetivo deste artigo não é apenas copiar um código, mas entender o que acontece em cada linha do programa para que você possa evoluir o projeto futuramente. O que este código faz? O programa possui uma lógica bastante simples e eficiente: Lê continuamente os dois sensores de linha. Verifica se cada sensor está sobre uma superfície branca ou preta. Decide para qual lado o robô deve seguir. Controla independentemente cada servo para manter o carrinho sobre a linha. Esse é um dos algoritmos mais utilizados por iniciantes na robótica e serve como base para projetos mais avançados. Entendendo o Código Vamos analisar cada parte do programa. 1. Biblioteca Servo #include <Serv...