quarta-feira, 23 de maio de 2012

Código para testar sensor ultrasônico

Olá,


Copie e cole o código abaixo no IDE do Arduino, ative o "Serial Monitor" e teste as distâncias informadas, consegui leitura de 2,5cm á 250cm com o SR04.


// programa para o sensor ultrassonico
int ledPin = 13; //configura o pino 13 da Arduino para conexão do LED
int trig = 8;    //configura o pino 8 da Arduino para conexão do Trig do sonar
int echo = 11;    //configura o pino 11 (PWM) da Arduino para conexão do Echo do sonar

void setup( ) {
    pinMode(trig, OUTPUT);   //define o pino 8 como um output (envia sinal do sensor)
    pinMode(echo, INPUT);    //define o pino 7 como um input (recebe sinal do sensor)
    pinMode(ledPin, OUTPUT); //define o pino 13 como um output (aciona o LED)
    Serial.begin(9600);    
    Serial.print("distancia");
}

void loop(){
    float tempo, cm;
    //comandos para enviar um pulso do sonar e armazenar o tempo de resposta
    digitalWrite(trig, LOW);
    delayMicroseconds(2);
    digitalWrite(trig, HIGH); //ativa o sonar por 10 microssegundos
    delayMicroseconds(10);
    digitalWrite(trig, LOW);
    delayMicroseconds(2);
    tempo = pulseIn(echo, HIGH);  // tempo, recebe o tempo de ida e volta do sinal
    cm =  tempo/29/2; //converte duration em centímetros
    Serial.println(cm);
    // Se cm menor ou igual a 30, liga o LED
    if (cm <= 30)
    {
        digitalWrite(ledPin, HIGH);
    }
    else
    {
        digitalWrite(ledPin, LOW);
    }
}

6 comentários:

  1. porque no cm em vez de fazer tempo/29/2 nao faz logo tempo/58?

    ResponderExcluir
  2. Olá Hugo, você quis dizer; tempo/58 é igual a; tempo/29/2! Veja bem, é para ficar mais didático: A velocidade do som no ar é de ~340 m/s, então em 1m, o som leva 2.941,1764us, se dividirmos por 100 (para obter em cm), teremos que para 1cm, o som leva 29,41 us para percorrer esta distância. Então, se pegarmos; TEMPO / 29 teremos a distância que a onda de som viajou, porém, como o som foi refletido pelo objeto alvo, temos que dividir por 2 para saber a que distância estava o alvo do sonar, por isso; TEMPO / 29 / 2.

    ResponderExcluir
  3. ATENÇÃO: O sensor SR04, tem 4 pinos, sendo 2 de sinal (Echo e trigger) e 2 de alimentação (GND e 5V)

    ResponderExcluir
    Respostas
    1. Muito bom, me ajudou muito!
      Fiquei perdido na conversão para centimetros, alguns usam desta forma: cm = TEMPO/34/2, posso usar assim tb?

      Excluir
    2. Olá André,
      Tem que ser "tempo/29/2" para obter a métrica em centímetros, talvez a expressão que você cita venha a expressar a distância em outra unidade de medida que não centímetros, temos que verificar. A velocidade do som no ar é de ~340 m/s, então em 1m, o som leva 2.941,1764us, se dividirmos por 100 (para obter em cm), teremos que para 1cm, o som leva 29,41 us para percorrer esta distância. Então, se pegarmos; TEMPO / 29 teremos a distância que a onda de som viajou, porém, como o som foi refletido pelo objeto alvo, temos que dividir por 2 para saber a que distância estava o alvo do sonar, por isso; TEMPO / 29 / 2. Abraço.

      Excluir
  4. Olá, usando seu exemplo, o sensor mostra 1,5 a 2 cm a mais da distância do objeto medindo pela régua, é pouca coisa, mas preciso mais preciso. Obrigado!!!

    ResponderExcluir