[risolto]Problema Sensore ultrasuoni

ciao a tutti , domani ho le mie gare di robotica con Arduino e il sensore di ultrasuoni ancora si lamenta un po , in pratica , io gli dico che se un ogetto è piu vicino di 3 cm deve fare qualcosa ( sotto metterò il codice ) ma lui lo vede già a 10 cm
utilizzo un sensore SCH o qualcosa di simile ora non posso vederlo , con un solo piedino che funziona sia da trigger che da echo
ecco il codice :

void loop()
  { 
    pinMode(ultrasuoni, OUTPUT);                      
    digitalWrite(ultrasuoni, LOW);                           // il sensore non manda nessun segnale per 2 microsecondi
    delayMicroseconds(2);
    digitalWrite(ultrasuoni, HIGH);                          // il sensore manda un segnale di onda quadra per 10 sec
    delayMicroseconds(10);
    digitalWrite(ultrasuoni, LOW);                          // il sensore torna a non emmettere niente
    pinMode(ultrasuoni, INPUT);
    durata = pulseIn(ultrasuoni, HIGH);       // qui dico che la durata è uguale al tempo che ci mette il segnale a tornare al ricevitore
    distanza = durata/58;                       /* ecco questo è il passaggio che mi è meno chiaro  XD perchè lo ha fatto un mio amico
    if (distanza<= 3)                                  perchè non dividere per due la moltiplicazione tra la velocita del suono e la durata ? */
    {
      Serial.println (distanza );
      right();
      delay(700);
      avanti();
    }

Grazie a tutti per l 'aiuto

È un sensore SRF05

distanza = durata/58;
/* ecco questo è il passaggio che mi è meno chiaro XD perchè lo ha fatto un mio amico perchè non dividere per due la moltiplicazione tra la velocita del suono e la durata ? */

perché se fai i calcoli arrivi a questo fattore per la conversione µS a cm.

Non ha senso far fare a Arduino il calcolo di quel fattore ogni volta che calcola la distanza.

Ciao Uwe

quindi la distanza la metto in microsecondi dell if ? tipo 3000000 e chiaramente tolgo quel /58 provo subito grazie

Perchè non provi:
distanza = durata/58;
Serial.print ("durata "+durata ); //<<--- aggiunta
Serial.println (" distanza "+distanza ); //<<--- aggiunta
if (distanza<= 3)
{ Serial.println ("!!!!okay "+distanza );

e poi fai un pò di prove con gli oggetti?
secondo me uwe non diceva di togliere il /58 ma che non ottieni 3 cm (forse mi sbaglio)

probabile perche non funziona :grin:

aaaaa mi vengono stringhe in codice ascii o almeno credo una roba immensa , Uwe che intendi non ha senso far fare il calcolo ad arduino ogni volta , glie lo devo far fare per convertire i microsecondi in cm , ho provato anche a togliere il /58 e vedere il valore della durata in microsecondi per poi mettere if durata< 100 fai questo ma niente , la distanza non è cambiata quasi di nulla

risolto tutto magicamente , grazie ragazzi qualsiasi stregoneria abbiate fatto XD metto risolto

Com'è che hai risolto (per i posteri)?