Baixe o app para aproveitar ainda mais
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
Compartilhar