O sensor ultrassônico é capaz de detectar objetos e medir suas proximidades com precisão. Isso é possível graças a um receptor e um emissor de ondas sonoras que o compõem. Ambos trabalham com ondas de alta frequência (faixa de 40.000 Hz), as quais os ouvidos humanos não são capazes de detectar.
Após a colisão do sinal emitido ao alvo, o mesmo é refletido de volta na direção do sensor, o tempo levado durante este processo é marcado pelo cronômetro embutido no próprio sensor e dessa forma é possível saber quanto tempo o sinal levou desde a sua emissão até o seu retorno.
A partir disso, é possível descobrir a distância entre o sensor e o obstáculo, tendo em vista que tempo é igual à distância dividida pela velocidade: d = ( V * t ) / 2. A divisão por dois existe pois o tempo medido pelo sensor é na realidade o tempo para ir e voltar, ou seja, duas vezes a distância que desejamos descobrir. O sensor possui quatro pinos, sendo dois deles utilizados para alimentação do sensor (VDD e GND), outro utilizado para disparar o sinal ultrassônico (TRIG) e outro para medir o tempo que ele leva para retornar ao sensor (ECHO).
O sensor ultrassônico HC-SR04 consegue detectar a distancia entre um alvo, que esteja acima de 2cm, e abaixo de 4m. Ele deve estar na linha de visão direta da superfície do objeto para receber um eco sonoro adequado.
// baixar biblioteca ‘Ultrassonic’ #include "Ultrasonic.h" //inclusão da biblioteca necessária const int echoPin = 13; //pino digital utilizado pelo echo(recebe) const int trigPin = 12; //pino digital utilizado pelo trig(envia) Ultrasonic ultrasonic(trigPin,echoPin); //inicializando os pinos do arduino int distancia; //variável inteira String result; //variável string void setup(){ pinMode(echoPin, INPUT); //define o echoPin como entrada pinMode(trigPin, OUTPUT); //define o trigPin como saida Serial.begin(9600); //inicia a transmissao para monitor serial } void loop(){ hcsr04(); // faz a chamada do método "hcsr04()" //imprime a distancia no monitor serial Serial.print("Distancia= "); Serial.print(result); Serial.println("cm"); } //método responsável por calcular a distância void hcsr04(){ digitalWrite(trigPin, LOW); //seta o pino 12 com um pulso baixo "low" delayMicroseconds(2); //intervalo de 2 microssegundos digitalWrite(trigPin, HIGH); //seta o pino 12 com pulso alto "high" delayMicroseconds(10); //intervalo de 10 microssegundos digitalWrite(trigPin, LOW); //seta o pino 12 com pulso baixo "low" novamente distancia = (ultrasonic.Ranging(CM)); //função ranging, faz a conversão para centimetros, e armazena na variavel "distancia" result = String(distancia); //variável result recebe a distância convertido de inteiro para string delay(500); //intervalo de 500 milissegundos }