//pinos em que está ligado o sensor int pinoTrigger = 3; //vai ligar no pino trigger do sensor, utilizado para enviar um pulso ultrassônico int pinoEcho = 4; //vai ligar no pino echo do sensor, utilizado para ler a reflexão do pulso enviado void setup() { Serial.begin(9600); // para usar o monitor serial //configurar os pinos para ligação do sensor pinMode(pinoTrigger, OUTPUT); //liga o pino do trigger como saída, para enviar um sinal pinMode(pinoEcho, INPUT); //liga o pindo do echo como entrada, para receber o sinal refletido } //a função ‘mede’ aciona o sensor e mede o tempo de resposta, retornando a medida em centímetros float mede() { //primeiramente, desliga a emissão de ultrassom digitalWrite(pinoTrigger,LOW); //aguarda 0,000003 segundos (3 microssengundos) delayMicroseconds(3); //coloca em alto o pino trigger, o que faz com que o sensor emita ultrassom digitalWrite(pinoTrigger,HIGH); //aguarda 0,000010 segundos (10 microssegundos), conforme o datasheet delayMicroseconds(10); //desliga a emissão de ultrassom digitalWrite(pinoTrigger,LOW); // aguarda pelo echo; tempoUs corresponde ao tempo em microssegundos que demorou para o sinal voltar float tempoUs = pulseIn(pinoEcho, HIGH); // microseconds //conforme o datasheet consultado, divide o tempo por 58 para saber a distância em centímetros - se dividir por 148 dá a distância em polegadas //retorna o resultado da divisão return (tempoUs / 58); // assume velocidade do som no ar de 340 m/s = 2.9ms/mm } void loop() { //chama a função de medição de distância e armazena o valor em centímetros que a função retornou na variável distancia float distancia = mede(); Serial.print("Distancia medida: "); Serial.print(distancia); //imprime valor decimal Serial.println(" centimetros"); //aguarda 0,5 segundo antes de medir novamente delay(500); // 500 ms; o datasheet recomenda aguardar pelo menos 60ms antes de efetuar nova medição }