Go Down

Topic: Ping Sensor Tatuíno ( Paralax Genérico ) (Read 1 time) previous topic - next topic

dexter_ubm_Brasil

Ajudem-me por favor.

Preciso de ajuda com o sensor tatuíno ping.
Infelizmente comprei esse sensor no Brasil , pois nem imaginava a existência do Ping Paralax, mas agora nem consigo obter valores do mesmo.
Peguei os exemplos e testo, mas nada funciona.
Tenho
Gnd ( ligado )
5v (ligado)
out ( pra onde vai isso ? )
int ( pra onde vai isso ? )

Queria pelo menos obter resultados no processing, se conseguir atingir esse objetivo o resto eu me viro.


Celso Fraga

Dexter, você deve ligar os pinos IN e OUT a dois I/Os do Arduino, o pino IN controla a leitura e o pino OUT gera um pulso proporcional à distância lida pelo sensor.

Por exemplo, ligando o pino IN ao pino 4 do Arduino e o pino OUT ao pino 5 do Arduino, seu código deve ficar mais ou menos assim:

Code: [Select]

//codigo baseado em um projeto do fundo do bau
//do tempo que eu usava os BS1 da Tato...

//inicializa I/Os
byte pinoInSensor = 4; //pino 4, IN do sensor
byte pinoOutSensor = 5; //pino5, OUT do sensor

//variaveis globais
byte distanciaEmCm = 0; //usa variavel byte por 2 motivos, o sensor nao le direito acima de +-220cm, e fica mais facil mandar pela serial
unsigned long duracaoDoPulso = 0;

void setup()
{
   pinMode(pinoInSensor, OUTPUT); //seta pino como saida
   digitalWrite(pinoInSensor, HIGH); //seta nivel alto na saida, estado de repouso do sensor
   pinMode(pinoOutSensor, INPUT); //seta pino como entrada
   digitalWrite(pinoOutSensor, HIGH); //habilita pull-up interno, so pra garantir...
   Serial.begin(9600);
}

//programa princpal
void loop()
{
   //gera pulso de 50uS no pino IN do sensor para iniciar uma leitura
   digitalWrite(pinoInSensor, LOW);
   delayMicroseconds(50);
   digitalWrite(pinoInSensor, HIGH);

   //deixa pino 5 esperando o pulso de leitura do sensor, que ocorre em nivel alto
   duracaoDoPulso = pulseIn(pinoOutSensor, HIGH);

   //converte a leitura de microsegundos para centimetros
   duracaoDoPulso *= 34; //multiplica pela velocidade do som
   duracaoDoPulso /= 2; //divide por 2, pois a leitura = tempo de ida + volta
   duracaoDoPulso /= 1000; //acerta a escala para centimetros
   if(duracaoDoPulso > 220) //overflow, erro na leitura do sensor...
   {
       duracaoDoPulso = 255; //valor 255 indica overflow, use como referencia no processing...
   }

   //passa valor para variavel byte e manda pela serial
   distanciaEmCm = duracaoDoPulso;
   Serial.print(distanciaEmCm, BYTE);

   //espera 1 segundo até a próxima leitura
   delay(1000);
}
www.arduinors.net

dexter_ubm_Brasil

Continua o problema.
Bem desta vez, não obtive resposta alguma.
Poderia o sensor estar com problemas.

Obs.: Insiro um led na saída OUT do mesmo + um GND e ele pulsa, ou seja vejo que o mesmo está dando resposta.
Mas o pulso do led só funciona fortemente quando posiciono o dedo nele.

Alguém dá mais alguma dica ?

Otavio

tem dois sensores ping no site da tato, qual vc comprou?

ou se vc tiver o datasheet dele, melhor ainda

dexter_ubm_Brasil

Bem pessoal esse problema eu resolvi.
Quero agradecer ao pessoal do pdcon2009 em São Paulo, que me deram a maior força.

Consegui implementar com o mesmo código do ping parallax o, tudo funcionando perfeito. As distâncias do ping da tato são até maiores que o da Ping parallax.

Até consigo escutar as dist[ch7847]ncias em processing, mas ainda tenho problemas.

Desde já agradeço

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy