Go Down

Topic: Ping Sensor Tatuíno ( Paralax Genérico ) (Read 994 times) 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