🇬🇧 English | 🇧🇷 Português Brasileiro
Biblioteca minimalista para módulos de ultrassom para Arduino
Trabalhar com módulos de ultrassom relativamente simples, mas pode ser ainda mais prático se você abstrair o controle de alguns recursos. Essa biblioteca visa a eficiência dos recursos e o simples acesso de dados.
Quando precisar usar um módulo de ultrassom HC-SR04 (um dos mais comuns no mercado), Ping))) e/ou Seed SEN136B5B (da Seed Studios), existem centenas de bibliotecas com a proposta de fornecer as mais diversas funções para o usuário, entretanto, na maior parte do tempo, nós precisamos apenas encontrar a distância e é exatamente isso que essa biblioteca faz.
Essa biblioteca é minimalista, reduz a execução do código, validação e uso desnecessário de variáveis globais, priorizando tipos de dados menores.
É muito fácil conectar o módulo de ultrassom ao Arduino. Por exemplo, se você estiver usando HC-SR04, conecte o pino trigger
e echo
do módulo nos pinos 12
e 13
do Arduino, respectivamente. Como na imagem:
Se você estiver usando um módulo com três pino (como Ping))) ou Seed SEN136B5B), você pode conectar o módulo de pino sig
ao pino 13
do Arduino.
Você pode usar os arquivos Fritzing(.fzz) dentro de extras para desenhar seus protótipos.
A ideia é proporcionar um ambiente mais simples possível. Para fazer isso, basta seguir as etapas:
-
Intalando
Primeiro você precisa importar a biblioteca para que a IDE o reconheça. A forma mais simples é importar pela própria IDE. -Clique em
Sketch > Incluir Biblioteca > Gerenciar Bibliotecas...
;- No campo de pesquisa digite
ultrasonic
; - Na lista, procure por
Ultrasonic by Erick Simões
; - Clique em
Instalar
.
Alternativamente, você pode baixar a biblioteca aqui e importar o arquivo
.zip
na IDE (veja como importar a biblioteca aqui). - No campo de pesquisa digite
-
Importando o código
Para importar a biblioteca dentro do seu código, basta escrever no início do código
#include <Ultrasonic.h>
ou, na IDE do Arduino, clique emSketch > Incluir Biblioteca > Ultrasonic
(você vai obter o mesmo resultado). -
Iniciando (a melhor parte)
Agora é simplesmente criar uma variável do tipo Ultrasonic passando como parâmetros dois valores representando, respectivamente, os pinos Trig (emissor) e Echo (receptor). Assim:
Ultrasonic ultrasonic(12, 13);
Se você estiver usando o módulo com três pinos (como o Ping))) ou Seeed SEN136B5B), passe como parâmetro apenas o pino de sinal. Assim:
Ultrasonic ultrasonic(13);
-
Descobrindo a distância
Tendo inicializado uma variável, você pode executar ela a partir do método que retorna a distância lida pelo módulo Ultrasonic:
read()
:ultrasonic.read();
-
Apenas isso?
Sim. É isso. Por padrão, o valor retornado pela função
read()
é a distância em centímetros. Veja um código completo de exemplo aqui. -
Sério?
Você ainda pode ser um pouco mais específico, determinando qual a unidade de medida que será retornada (centímetro(
CM
) ou polegada(INC
)).ultrasonic.read() // distância em CM ultrasonic.read(CM) // distância em CM ultrasonic.read(INC) // distância em INC
Você também pode usar mais um módulo de ultrassom:
Ultrasonic ultrasound1(12, 13); Ultrasonic ultrasound2(10, 11); Ultrasonic ultrasound3(5);
-
Tempo de Espera
Se não houver nenhum objeto ao alcance, a biblioteca vai "travar" enquanto aguarda o pulso de retorno. Você pode alterar o tempo de espera definindo um tempo limite (em microssegundos) no construtor:
Ultrasonic ultrasonic(12, 13, 40000UL);
Ou durante o tempo de execução:
ultrasonic.setTimeout(40000UL);
O valor padrão é de
20000UL
(Unsigned Long).Usando um tempo de limite de 40ms deve dar a você um alcande máximo de aproximadamente 6,8m. Você pode precisar ajustar este parâmetro.
Veja mais exemplos aqui.
Ultrasonic feito por Erick Simões é licenciado sob uma Licença MIT. Baseado no trabalho de Carl John Nobile disponível aqui. Sinta-se à vontade para entrar em contato com o autor pelo Twitter: @AloErickSimoes
Veja mais detalhes sobre a Licença.