Buscar

Arduino Sensor Ultrassônico HC SR04

Prévia do material em texto

Blog Baú da Eletrônica
http://blog.baudaeletronica.com.br
Sensor Ultrassônico HC-SR04 com Arduino Uno
Neste Tutorial Aprenda a Utilizar um Sensor Ultrassônico HC-SR04 com Arduino e Conheça
Suas Diferentes Programações. Confira!
Olá pessoal! Hoje vamos tirar do nosso baú como utilizar um Sensor Ultrassônico HC-SR04 em
um Arduino Uno.
Sensor Ultrassônico HC – SR04
Figura 1 - Sensor Ultrassônico HC - SR04
O Sensor Ultrassônico HC-SR04 tem como objetivo medir distância. Este sensor pode medir
distâncias de 2 cm à 400 cm com precisão de aproximadamente de 3mm.
Este tipo de sensor pode ser aplicado em vários casos, como: detecção de obstáculos,
verificação de presença, posicionamento de objetos, medição de altura e largura, etc. Entenda
o funcionamento:
O sensor envia sinais com um pequeno comprimento de onda, o objeto detectado retorna o
sinal, e através do tempo de retorno do sinal, a distância entre o sensor e o objeto é
determinada.
Figura 2 - Sensor Ultrassônico detectando objeto
Para iniciar a transmissão, através do pino trig é enviado um pulso de 10us e depois mais 8
pulsos com uma frequência de 40kHz. O pino echo fica em nível lógico alto até receber o sinal
que foi transmitido.
A distância é medida pela seguinte equação:
 
Fazendo as Ligações Entre o Arduino e o Sensor Ultrassônico HC-
SR04
Lista de Componentes:
1 Unidade - Protoboard 400 pontos;
1 Unidade - Arduino Uno;
1 Unidade - Sensor Ultrassônico HC- SR04;
1 Unidade - Jumper Macho Macho.
 1 / 5
Blog Baú da Eletrônica
http://blog.baudaeletronica.com.br
 
Circuito Fritzing
Figura 3 - Circuito com Arduino e Sensor Ultrassônico HC-SR04
 
O código abaixo consiste em mostrar no monitor serial a distância medida pelo sensor
ultrassônico HC – SR04:
Programação
//Projeto: Arduino com Sensor Ultrassônico HC-SR04 // Autor: Baú da E
letrônica (www.baudaeletronica.com.br) #include int trig = 3; /
/definindo os pinos trig e echo int echo = 2 Ultrasonic ultra(trig
,echo); //inicializa os pinos do sensor void setup() { Seria
l.begin(9600); //definindo a taxa de comunicação serial Serial.prin
tln("MEDIDA COM O SENSOR ULTRASSÔNICO"); //mensagem inicial } v
oid loop() { float medcm; //declarando a variável medcm long 
dist = ultra.timing(); //lendo o sensor e enviando para a variável dis
t medcm = ultra.convert(dist, Ultrasonic::CM); //converte a infor
mação lida em cm e envia para medcm Serial.print("Distancia em 
cm:"); // mensagem que aparecerá no monitor serial Serial.println(m
edcm); // enviando para o monitor serial o valor convertido em cm d
elay(1000); } 
Explicando o Programa
#include int trig = 3; //definindo os pinos trig e echo int echo 
= 2; Ultrasonic ultra(trig,echo); //inicializa os pinos do sensor 
 
O trecho acima inclui a biblioteca do sensor ultrassônico #include e ainda atribui variáveis aos
pinos 2 e 3 do Arduino. Em seguida a função Ultrasonic ultra(trig,echo) inicializa os pinos trig e
echo criando o objeto destes.
void setup() { Serial.begin(9600); //definindo a taxa de comunic
ação serial Serial.println("MEDIDA COM O SENSOR ULTRASSÔNICO"); //
mensagem inicial } void loop() { float medcm; //declarando
 a variável medcm long dist = ultra.timing(); //lendo o sensor e en
viando para a variável dist 
 2 / 5
Blog Baú da Eletrônica
http://blog.baudaeletronica.com.br
Neste trecho são configuradas as taxas de comunicação e a mensagem inicial que aparecerá
no monitor serial. Em void loop() inicia-se o programa principal, onde é declarada a variável
float medcm e em seguida é lida a informação do sensor ultrassônico HC –SR 04 e enviada
para a variável dist >>> long dist = ultra.timing().
 medcm = ultra.convert(dist, Ultrasonic::CM); //converte a informação 
lida em cm e envia para medcm Serial.print("Distancia em cm:");
 // mensagem que aparecerá no monitor serial Serial.println(medcm);
 // enviando para o monitor serial o valor convertido em cm delay(1
000); } 
Neste último trecho do programa a função medcm = ultra.convert(dist, Ultrasonic::CM) a
informação lida no sensor é convertida em centímetros e enviada para a variável medcm. A
mensagem “Distancia em cm”: é enviada para o monitor serial e ao lado aparecerá o valor de
medcm Serial.println(medcm), esse valor como já comentado, é a distância convertida em
centímetros.
Figura 4 - Monitor Serial com a Mensagem Inicial e Distâncias do Objeto
Agora iremos aplicar os conceitos de programação com o sensor ultrassônico HC-SR04 na
seguinte experiência:
- Quando o sensor detectar um objeto entre 0.00 e 5.00 cm, acenderá o LED verde e aparecerá
uma mensagem no monitor serial;
- Quando o sensor detectar um objeto entre 5.01 e 10.00 cm, acenderá o LED amarelo e
aparecerá uma mensagem no monitor serial;
- Quando o sensor detectar um objeto entre 10.01 e 15.00 cm, acenderá o LED vermelho e
aparecerá uma mensagem no monitor serial;
- Quando o sensor detectar um objeto cima de 15.01 cm, todos LEDs se apagarão.
 
Materiais Necessários para o Circuito
1 Unidade – Protoboard 400 pontos;
1 Unidade – Arduino Uno;
1 Unidade – Sensor Ultrassônico HC – SR04;
1 Unidade – Jumper Macho Macho;
1 Unidade – LED Difuso vermelho 5mm;
1 Unidade – LED Difuso amarelo 5mm;
1 Unidade – LED Difuso verde 5mm;
3 Unidades – Resistor 150R 5% (1/4W).
 3 / 5
Blog Baú da Eletrônica
http://blog.baudaeletronica.com.br
Figura 5 - Circuito Fritzing
Programação
//Projeto: Arduino com Sensor Ultrassônico HC-SR04 // Autor: Baú da E
letrônica (www.baudaeletronica.com.br) #include int trig = 3;
 //definindo os pinos trig e echo int echo = 2; int ledve
rde = 10; int ledamarelo = 11; //definindo os pinos do Arduino que 
serão conectados os LEDs. int ledvermelho = 12; Ultrasonic ultra(t
rig,echo); //inicializa os pinos do sensor void setup() { 
 Serial.begin(9600); //definindo a taxa de comunicação s
erial pinMode (ledverde,OUTPUT); //definindo os pinos dos LED
s como saída pinMode (ledamarelo,OUTPUT); pinMode (ledvermelho ,
OUTPUT); } void loop() { float medcm; 
 //declarando a variável medcm long dist = ultra.timing(); 
 //lendo o sensor e enviando para a variável dist medcm = u
ltra.convert(dist, Ultrasonic::CM); //informação convertida e enviad
a para medcm if(medcm >= 0 && medcm =5.01 && medcm =10.01 && m
edcm 15.00) //se mdcm estiver acima do valor definido exec
uta a função abaixo { digitalWrite (ledverde,LOW); //es
creve nível lógico baixo no LED verde digitalWrite (ledamarelo,LOW)
; //escreve nível lógico baixo no LED verde digitalWrite (led
vermelho,LOW); //escreve nível lógico baixo no LED vermelho Ser
ial.println(medcm); //escreve o valor da informação já con
vertida em cm. delay(1000); // atraso de 1 seg
undo antes da próxima informação } } 
Explicando o Programa
#include int trig = 3; //definindo os pinos trig e echo
 int echo = 2; int ledverde = 10; int ledamarelo = 11; //definind
o os pinos do Arduino que serão conectados os LEDs. int ledvermelho =
 12; Ultrasonic ultra(trig,echo); //inicializa os pinos do sens
or 
O trecho acima inclui a biblioteca do sensor ultrassônico #include e ainda atribui variáveis aos
pinos 2,3,10,11,12 do Arduino. Nesses pinos serão conectados os pinos do sensor HC-SR04 e
dos 3 LEDs, em seguida a função Ultrasonic ultra(trig,echo) inicializa os pinos trig e echo
criando o objeto destes.
void setup() { Serial.begin(9600); //definindo a t
axa de comunicação serialpinMode (ledverde,OUTPUT); //defini
ndo os pinos dos LEDs como saída pinMode (ledamarelo,OUTPUT); pi
nMode (ledvermelho ,OUTPUT); } 
 4 / 5
Blog Baú da Eletrônica
http://blog.baudaeletronica.com.br
Acima pode ser visto a configuração da taxa de comunicação serial (9600), e os pinos dos
LEDs como saída.
void loop() { float medcm; //declarando a 
variável medcm long dist = ultra.timing(); //lendo o sensor e
 enviando para a variável dist medcm = ultra.convert(dist, Ultr
asonic::CM); //informação convertida e enviada para medcm 
Neste trecho se inicia o programa principal. A variável medcm é declarada float medcm, a
informação do sensor é lida e enviada para a variável dist long dist = ultra.timing() essa
informação é convertida em centímetros e enviada para a variável medcm.
 if(medcm >= 0 && medcm = 0 && medcm =5.01 && medcm = 5.01 && medcm =
10.01 && medcm = 10.01 && medcm 15.00) //se mdcm estiver a
cima do valor definido executa a função abaixo { digitalWrite (l
edverde,LOW); //escreve nível lógico baixo no LED verde di
gitalWrite (ledamarelo,LOW); //escreve nível lógico baixo no LED
 verde digitalWrite (ledvermelho,LOW); //escreve nível lógico b
aixo no LED vermelho Serial.println(medcm); //escreve o
 valor da informação já convertida em cm. delay(1000); 
 // atraso de 1 segundo antes da próxima informação } } 
 
No comando if(medcm >15.00) se a variável medcm for maior que 15.00 cm as funções abaixo
são executadas. Em seguida é escrito em todos os LEDs nível lógico baixo digitalWrite
(ledverde,LOW), digitalWrite (ledamarelo,LOW), digitalWrite (ledvermelho,LOW).
Figura 6 - Monitor Serial com as Mensagens dos LEDS e as Distâncias dos Objetos
 
Esperamos que tenham gostado deste tutorial. Para tirar dúvidas e sugestões, deixe um
comentário abaixo.
Obrigado e confira outros produtos em nossa loja!
 
Powered by TCPDF (www.tcpdf.org)
 5 / 5

Continue navegando