Usando Sensor Sonar com Pisca LED | ArduinoMS

Recentemente tivemos algumas dificuldades, no grupo ArduinoMS para usar um sensor sonar. Após algumas pesquisas encontre o blog Brasil Robotics onde tem um artigo traduzido do Arduino.cc conseguimos executar os procedimentos desejados.

Em resumo estávamos com a ideia de que o sonar funcionaria mais ou menos igual ao sensor de luz (LDR), como um potenciômetro, porém o Sensor Ultra-Sônico funciona com pulsos digitais, ou seja, ele manda um sinal e fica aguardando a resposta do sinal refletido de algum lugar. Quando o sinal é recebido o sensor apresenta na porta saída (out) o sinal digital positivo ou negativo (depende do sensor sonar). Com isso temos que fazer a leitura deste pulso de sinal, calculando o tempo de resposta. Segue alguns links interessantes para leitura: Medindo Distâncias por Ultrasom e Medindo distâncias com O Basic Step.

Sensor Sonar TATO V9
Sensor Sonar TATO V9

No código exemplo foi ligado o out no pino 7 digital do Arduino Brasileirino, o pino IN deste sensor fica sem ligações.

Ligação do Sensor Sonar no Arduino Brasileirino
Ligação do Sensor Sonar no Arduino Brasileirino

Para fazer a leitura do sinal digital neste caso, faz-se necessário a utilização do comando pulseIn() que lê um pulso (HIGH ou LOW) em um pino. Por exemplo, se o valor é HIGH, pulseIn () espera para o pino para ir HIGH , inicia a contagem, em seguida, aguarda o pino para ir LOW parando a cronometragem. Retorna o comprimento do pulso em microssegundos. Se nenhum pulso começa dentro de um limite de tempo especificado ele retorna 0.

Fiz um código de Acende e Pisca LED com Sensor Sonar, a ideia é simples, dependendo da distância do sensor a um determinado objeto o LED acende e apaga com velocidade diferentes.

Segue o código comentado;

//— Confirações —

const int pingPin = 7;

//define o pino 7 como entrada do sonar, este é o pino que deve estar conctado ao Output do Sonar

void setup() {

pinMode(13, OUTPUT); //porta 13 em output

Serial.begin(9600); // Inicializa a comunicação serial

}

//— Fim Confirações —

//— Programa Principal —

/*O programa fará a verificação do tempo que leva a resposta do sonar, e converte esse

valor para centimetros cm.

*/

void loop() {

int tempo, cm;

pinMode(pingPin, INPUT); //definindo o pino7 como entrada.

tempo = pulseIn(pingPin, HIGH); //esta é a função que calcula o tempo de resposta do pulso.

cm = tempo / 29 / 2; //calculo para converter o tempo de espera em Centimetros.

Serial.print(tempo);

Serial.print(” valor, “);

Serial.print(cm);

Serial.print(“cm”);

Serial.println();

piscaled(cm); //chamada da funçao pisca led

}

//— Fim Programa Principal —

//— Função pisca Led —

/*Essa função é só para brincar um pouco com um led, para mostrar as posibilidades

se a distancia for menor do que 50cm o led pisca 5 vezes e devagar.

se for mairo pisca 10 vezes rapidamente.

*/

void piscaled (int distancia){

if(distancia<50){

for(int x=0;x<5;x++) {

digitalWrite(13, HIGH); //HIGH = 1 = TRUE

delay(500);

digitalWrite(13, LOW); //LOW = 0 = FALSE

delay(500);

}

}

if(distancia>50){

for (int x=0; x<10;x++) {

digitalWrite(13, HIGH); //HIGH = 1 = TRUE

delay(100);

digitalWrite(13, LOW); //LOW = 0 = FALSE

delay(100);

}

delay(300);

}

}

//— Fim Função pisca Led —

Espero que tenha gostado do post. Se precisar de ajuda estamos a disposição no grupo ArduinoMS ou se eu puder ajudar samuelmbc@gmail.com

Twitter: @samuelmbc

Abraços

Samuel Cavalcante

7 thoughts on “Usando Sensor Sonar com Pisca LED | ArduinoMS

  1. Grande Diemesleno. Que bom que gostou do post, estou a disposição para ajudar…

    Uma coisa que achei legal no Arduino para esse projeto, foi o comando pulseIn (), cara fazer isso em Assembly não deve ser muito fácil…

    Abraços.

  2. Ow cara vlw muitão!!
    me ajudou com um trampo da faculdade (uma instalação)
    estou usando o Maxsonar ez1 e tem vários tutoriais ensinando a usar o pino analógico dele (voltagem*x=distância), mas como estou na protoboard saía tudo errado.
    sou artista, então nunca descobriria essa função q está me salvando (pulseIn)
    achei muito mais fácil de usar e medições mais precisas.
    só não entendi pq
    tempo/29/2=cm .. 29 da velocidade do som e 2 de polegada pra cm?

    bom.. vlw!!

  3. E ai Bruno, que bom que o post esta sendo útil.

    Cara a conta certa seria cm = tempo / 34 / 2

    Tempo = tempo de espera do sistema para receber a informação.
    34 = velocidade do som 340m/s
    2 = tempo medido é de ida e volta ou distancia esta duplicada.

    Porem existem variações que atrapalha a precisão: Ângulo de incidência; Cristal utilizado no Sistema; Material em que o som ira bater; tipo de sensor.

    Abraços.
    Samuel Cavalcante

  4. Olá Samuel!
    Estou com um projeto em vista, vou fazer uma torneira automática em casa, comprei o sensor ultrasom, tenho o Arduíno Uno, relé e a válvula solenóide que vai controlar a saída de água. Estou pesquisando um circuito e o sketch para o Arduino. Tem alguma dica pra me ajudar? Já vou agradecendo. Rene Aviles

  5. Olá, estou com dois sensores do tipo Tato SonarV9 e não consigo achar muitas informações sobre o mesmo na internet devido ao fato desse ser um sensor mais antigo e já terem versões mais novas dele.. Alguém teria algum material sobre este sensor, ou saberia me informar a função do pino IN? Todos os projetos que eu encontrei com esse sensor não utilizaram esse pino para nada… Obrigada!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *