Neste tutorial vamos te ensinar como fazer um sensor ultrassônico Arduino acender LED, onde usaremos este sensor para detectar a distância de um objeto, e assim acionar cada LED correspondente a sua distância.
Com este projeto de base você pode fazer algumas variações, como por exemplo:
Deixar os LEDs piscando de acordo com a distância ou ligar um buzzer em paralelo com o LED vermelho, com o intuito de que quando o objeto estiver muito próximo além de ligar o LED, ligar também o buzzer emitindo um som.
O que você vai aprender:
-
- Como funciona o sensor ultrassônico Arduino;
- Como conectar o sensor ultrassônico ao Arduino;
- Adicionar as bibliotecas em sua programação;
- Códigos necessário para acionar os LEDs ;
Sumário
Sensor de distância Arduino
O Sensor Ultrassônico HC-SR04 é um componente muito utilizado em projetos, visto que se trata de um sensor de distância que trabalha dentro da faixa de 2 cm a 4 metros, tendo uma ótima precisão de 3mm.
Pode ser usado em Alarmes, automações, robôs que desviam de objetos… entre outros
Tenho um artigo que ensina como fazer um robô que desvia de obstáculos clique aqui para ver.
Funcionamento:
Para realizar a medição é necessário que a placa esteja alimentada, logo após colocar o pino Trigger em nível alto por um tempo maior que 10us. Dessa maneira, o sensor irá emitir uma onda sonora ,que quando encontrar um objeto, irá rebater e voltar em direção ao módulo.
Durante o tempo de emissão e recebimento do sinal, o pino ECHO fica em nível alto. Portanto, o cálculo é feito baseado no tempo que o pino ECHO ficou em nível alto, após o pino Trigger ter sido colocado em nível alto.
Ou seja, Distância =[Tempo ECHO em nível alto * Velocidade do Som] / 2
Para fins de cálculo a velocidade do som é considerada ideal o valor de 340m/s, assim o resultado será em metros por segundo, o número 2 na fórmula é devido a onda sonora ter que encontrar algum objeto e voltar, ou seja, ela percorreu a distância 2 vezes.
Especificações:
Alimentação: 5V DC
Corrente de Operação: 2mA
Ângulo de efeito: 15°
Alcance: 2cm ~ 4m
Precisão: 3mm
Vamos ao projeto?
Lista de materiais:
- Arduino, pode ser qualquer um, eu utilizei o Arduino UNO;
- Sensor de distância Arduino HC-SRO4;
- protoboard;
- Jumpers;
- 3x LEDs de cores diferentes;
- 3x Resistores de 220 ohms.
Conectando o Sensor ultrassônico ao Arduino
A ligação será feita nas portas digitais 3 para o Trigger, e 2 para o Echo, além de VCC para alimentação e GND para terra.
Os LEDs vão ser conectados nas portas digitais 4, 5 e 6 junto com seus respectivos resistores.
Segue Imagem do esquema:
Programação sensor ultrassônico Arduino
Para a utilização do sensor ultrassônico será necessário baixar a biblioteca e incluir na IDE do Arduino Clique aqui para download
Para incluir a biblioteca basta com a IDE do arduino aberta ir em Sketch> Incluir biblioteca> Adicionar biblioteca .ZIP e selecionar o arquivo que você acabou de baixar.
Após feito estes pré-requisitos vamos a programação..
Segue o código:
//Programa: Sensor ultrassônico Arduino acender LED
//Autor: Luan Alves - www.guiarobotica.com
#include "Ultrasonic.h"
Ultrasonic ultrasonic(3, 2); // Trigger na porta 3 e Echo na porta 2
//Declarando os LED como constantes em seus respectivos pinos
const int ledVerde = 4;
const int ledAmarelo = 5;
const int ledVermelho = 6;
long microsec = 0; // variaveis de controle
float distanciaCM = 0;
void setup() {
Serial.begin(9600); //Inicializando o serial monitor
pinMode(ledVerde, OUTPUT); //declarando os LEDs como saida
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVermelho, OUTPUT);
}
void loop() {
//Lendo o valor do sensor
microsec = ultrasonic.timing();
//Convertendo a distância em CM
distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);
ledDistancia();
Serial.print(distanciaCM);// mostrar a distancia na porta serial
Serial.println(" cm");// colocar unidade de medida
delay(500);// espera de 500 milissegundos
}
void ledDistancia() {
//Desliga todos os LEDs
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, LOW);
// criando as condicoes se a distancia for entre 30 cm e 20 cm
if (distanciaCM <= 30 and distanciaCM >= 20) {
digitalWrite(ledVerde, HIGH); //liga o LED verde
}
// se a distancia for 10 cm e 20 cm
if (distanciaCM <= 20 and distanciaCM >= 10) {
digitalWrite(ledAmarelo, HIGH); //liga LED amarelo
}
if (distanciaCM < 10) { // se a distancia for menor que 10 cm
digitalWrite(ledVermelho, HIGH); // liga LED vermelho
}
}
Assim chegamos ao fim de mais um tutorial, e você aprendeu como fazer um Sensor ultrassônico Arduino acender LED.
Gostou do Artigo?
Curta, compartilhe, comente..
Link permanente
Boa tarde, já fiz este projeto a algum tempo atrás com esta montagem e código proposto, mas acabei deixando de lado, pois o sensor ultrassonico “desregulava” e acendei o led com outra medida detectada. Será que o projeto teria que ter mais componentes para que o sensor trabalhe corretamente? como por exemplo op amp comparador? Agradeço a resposta.
Link permanente
Opa tudo joia?
O sensor ultrassônico às vezes pode pegar valores flutuantes dependendo do ângulo do objeto na frente dele.
Quanto maior e mais alinhado o objeto estiver na frente dele, melhor vai ser a captação.
Um exemplo, quinas de paredes sempre mostram valores errados ou se colocar apenas a mão em uma distância razoável do sensor.
Ele capta muito bem se o objeto for maior e plano, assim o emissor e receptor ficam alinhados.
Link permanente
Obrigado Luan pelo código que nos cedeu. Quero também elogiar a sua maneira didática com que apresenta as suas “aulas”. é de uma clareza muito especial que tudo parece fácil. Obrigado também por isso.
Sou um amante e curioso principiante sobre electrónica com 84 anos de idade e nunca me canso de aprender. Relativamente ao código sobre o sensor SR04 que nos apresentou, ao testá-lo para o arduino uno deu-me aquela “maldita” sarjeta laranja que não faz outra coisa senão me aparecer: erro
‘convert’ não é nome da classe Ultrasonic .Não entendo o porquê; por favor me ajude Luan.
Urbano
Link permanente
Provavelmente o problema está relacionado à versão da biblioteca. Experimente excluir a biblioteca atual e adicionar esta:
https://guiarobotica.com/wp-content/uploads/2020/04/Ultrasonic-master.zip
Geralmente, Isso ocorre porque os comandos podem variar de acordo com a versão da biblioteca.
Link permanente
Fiz alguns ajustes:
#include //Inclui a biblioteca do ultrassônico
Ultrasonic ultrassom(5, 4); //Cria o objeto ultrassom, do tipo Ultrassonic
//define os pinos onde está ligado o TRIG(pino 5) e o ECHO(pino 4) respectivamente
long distancia; //cria a variável distancia do tipo long
const int ledVerde = 8;
const int ledAmarelo = 9;
const int ledVermelho = 10;
void setup() {
Serial.begin(9600); //Inicializa a comunicação serial, com velocidade de comunicação de 9600
pinMode(ledVerde, OUTPUT); //declarando os LEDs como saida
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVermelho, OUTPUT);
}
void loop(){
distancia = ultrassom.Ranging(CM); //ultrassom.Ranging(CM) retorna a distancia em centímetros(CM)
Serial.print(“Distância = “); //Imprime na serial o texto “Distância = ”
Serial.print(distancia); //Imprime na serial o valor da variável distancia
Serial.println(“cm”); //Imprime na serial o texto “cm”
delay(50); //Intervalo
//Desliga todos os LEDs
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, LOW);
if (distancia = 20) {
digitalWrite(ledVerde, HIGH); //liga o LED verde
}
// se a distancia for 10 cm e 20 cm
if (distancia = 10) {
digitalWrite(ledAmarelo, HIGH); //liga LED amarelo
}
if (distancia < 10) { // se a distancia for menor que 10 cm
digitalWrite(ledVermelho, HIGH); // liga LED vermelho
}
}
Link permanente
Olá
Obrigado por dividir conosco seus conhecimentos sua maneira de explicar é execenle, clara, dá para entender perfeitamente, tudo parece fácil. Não é minha paixão, mas goistei, parabens!
Link permanente
Obrigado pela aula,por dividir seus conhecimentos.
não é minha paixão mas, gostei parabéns!