Conteúdo sugerido

O projeto Ping aborda a utilização de sensores ultra-sônico no Arduino. Um sensor é um dispositivo que responde a um estímulo físico/químico de maneira específica e mensurável analógicamente. No nosso projeto usaremos o sensor ultra-sônico. O Ultra-som é um sensor que pode ser utilizado como medidor de distância, detecção de objetos e entre outros.


ultra_LRG.jpg

Este é o sensor ultra-sônico que vamos utilizar no projeto. Ele pode ser comprado neste link: http://www.seeedstudio.com/depot/ultra-sonic-range-measurement-module-p-626.html?cPath=144_149

Ele contêm 3 pinos:VCC: Para alimentação. (Coloque nos 5V do Arduino)GND: Ground. (Coloque no GND do Arduino)SINAL (SIG): Para saída do sinal, no caso desse projeto, coloque no pino 7.Ficando dessa forma:


ping_bb.png


Muito bem, agora vamos ao código, ao abrir a ide do arduino vamos utilizar um código já pronto para este nosso projeto.
Abra a IDE do arduino e siga este caminho File > Examples > Sensors > Ping



No começo do sketch temos um resumo do que será feito. Basicamente o sensor irá ler um sinal e retornará a distância do objeto mais próximo. Para fazer isso, é mandado um pulso para o sensor iniciar a leitura, depois espera um pulso de retorno. O tamanho do pulso que retornou é proporcional a distância do sensor ao objeto.


O código começa com a declaração de uma constante.

const int pingPin = 7;
Esta constante representa o número da porta em que o sensor está conectado ao Arduino.



void setup() {

  // initialize serial communication:

  Serial.begin(9600);

}


A função setup inicializa a comunicação serial do Arduino com o PC, para que possamos ver o resultado da leitura do sensor no Serial Monitor.


void loop()

{

  // variáveis para a duração do ping

  // e do resultado da distância em centímetros e polegadas.

  long duration, inches, cm;

          // O PING é disparado por um pulso em HIGH de 2 ou mais microssegundo. 
          
          pinMode(pingPin, OUTPUT);  
// define o pino como SAÍDA, estamos enviando o sinal.        
          digitalWrite(pingPin, LOW);    // Dá um pulso em LOW antes de enviar um HIGH para
          delayMicroseconds(2);           // garantir um pulso limpo.
          digitalWrite(pingPin, HIGH); 
          delayMicroseconds(5); 
          digitalWrite(pingPin, LOW);
         
         // O mesmo pino é usado para ler o sinal do PING.
         //Agora a porta é definida como ENTRADA
         //Usamos a função pulseIn que quando setada em HIGH, espera o pino ficar HIGH e começa a contar
         // Quando o pino ficar em LOW ele termina de contar e retorna o tamanho do pulso em microssegundos.

        pinMode(pingPin, INPUT);  //define o pino como ENTRADA, receberemos um sinal PING
        duration = pulseIn(pingPin, HIGH);     //retorna o tamanho do pulso em ms.

        // converte o tempo em distância
        inches = microsecondsToInches(duration); 
        cm = microsecondsToCentimeters(duration);

       // escreve as distâncias calculadas na serial para que possamos ler no Serial Monitor. 
       
       Serial.print(inches); 
       Serial.print("in, "); 
       Serial.print(cm); 
       Serial.print("cm"); 
       Serial.println();   
       delay(100);

       }


Agora vamos analisar as funções fora da função loop().


       // Converte microssegundos em polegadas.
       long microsecondsToInches(long microseconds){ 
            // Existem aproximadamente 74 microssegundos em uma polegada.
            // Então dividimos os microssegundos  por 74
            // Depois por 2, pois queremos saber apenas a distância do sensor ao objeto.
        
            return microseconds / 74 / 2;  
       }

       // Converte microssegundos em centímetros.
       long microsecondsToCentimeters(long microseconds)
            // Mesma coisa de polegadas mas no caso existem 29 microssegundos em 1 cm.
            return microseconds / 29 / 2;
       }



Depois que fizermos o upload do código para o Arduino, poderemos acompanhar os resultados do sensor no Serial Monitor e ver que quanto mais nos afastamos do sensor, a distância será maior. Quanto mais perto, menor. Se isso não acontecer, cheque se os pinos estão no lugar certo.




Atividades recentes

  • roboticsUltrasom - Sensor Distância
    robotics

    Sen­sor Ultra-​Som 4 Pinos

    #define echoPin 11 /​/​Pino 13 recebe o pulso do echo
    #define trig­Pin 10 /​/​Pino 12 envia o pulso para gerar o echo
    /​/​iniciando a função e pas­sando os pinos

    void setup()
    {
    Serial.begin(9600); /​/​inicia a porta ser­ial
    pinMode(echoPin, INPUT); /​/​define o pino 13 como entrada (recebe)
    pinMode(trigPin, OUT­PUT); /​/​define o pino 12 como saida (envia)
    }

    void loop()
    {
    long dura­tion;
    /​/​seta o pino 12 com um pulso baixo “LOW” ou desli­gado ou ainda 0
    digitalWrite(trigPin, LOW);
    /​/​delay de 2 microsse­gun­dos
    delayMicroseconds(2);
    /​/​seta o pino 12 com pulso alto “HIGH” ou lig­ado ou ainda 1
    digitalWrite(trigPin, HIGH);
    /​/​delay de 10 microsse­gun­dos
    delayMicroseconds(10);
    /​/​seta o pino 12 com pulso baixo nova­mente
    digitalWrite(trigPin, LOW);
    /​/​função Rang­ing, faz a con­ver­são do tempo de
    /​/​resposta do echo em cen­timet­ros, e armazena
    /​/​na vari­avel dis­tan­cia
    dura­tion = pulseIn(echoPin,HIGH);
    int dis­tan­cia = dura­tion /​29 /​2 ;

    Serial.print(“Distancia em CM: ”);
    Serial.println(distancia);
    delay(1000); /​/​espera 1 segundo para fazer a leitura nova­mente
    }