problema con sensore hc sr04

Buongiorno scusate ma mi servirebbe un aiuto col sensore hc-sr04 sull'arduino, perchè l'arduino mi rileva sempre di 2 o 3 microsecondi il segnale di echo e quindi mi da 0 cm ho usato vari programmi per testarlo da vari siti e il risultato è sempre lo stesso..potreste aiutarmi per favore?
Collego il vcc al 5 volt dell arduino gnd a gnd , il trigger al pin 7 e l'echo al pin 8.
Il codice l'ho preso da qui ma ne ho provati anche molti altri

prova ad usare la libreria newPing e utilizzare l'esempio che mette a disposizione (newPing example)
purtroppo non mi ricordo più dove l'avevo scaricata quindi devi cercarla :slight_smile:

Oppure la Ultrasonic.h

a prima vista però la libreria newPing mi sembra più semplice da capire :slight_smile: quindi da una persona non molto esperta ( come me :)) è più semplice capirne il funzionamento :slight_smile:

anche io ho avuto problemi con il codice di quel sito ( se vedi sul sito c'è un mio commento che accusa gli stessi problemi) e ho risolto , grazie all' aiuto di valvale97 problema con pulseIn sensore ultrasuoni - #5 by system - Generale - Arduino Forum ,aggiungendo un delayMicroseconds (1); nella riga 17 tra
digitalWrite (trig,LOW); e digitalWrite (trig,HIGH).
se non funziona neanche questo prova a usare questo sketch

#define echo 13
#define trig 12

void setup ()
{pinMode (echo,INPUT );
pinMode (trig,OUTPUT );
Serial.begin(9600) ;}

void loop ()
{digitalWrite (trig,LOW);
delayMicroseconds (1);
digitalWrite (trig,HIGH);
delayMicroseconds (1);
digitalWrite (trig,LOW);
long time= pulseIn (echo,HIGH);
long distance=time/58;
Serial.print(distance);
Serial.print(" cm ");

delay (500);}

grazie per i consigli...ho provato a usare sia la libreria NewPing, la ultrasonic e i codici sopra ma il risultato è sempre lo stesso: mi restituisce sempre 0 cm...

è normale che il led RX sia sempre spento durante la comunicazione con il sensore?

Il delay è troppo basso

delayMicroseconds(1);

metti

delayMicroseconds(10);

Controlla inoltre che non ci siano oggetti vicino ai sensori o che non siano poggiati sul tavolo.

#define echo 13
#define trig 12

ma questi valori li cambi , visto che hai detto di averlo collegato sul 7 e 8

ho provato a cambiare il delay diverse volte...anche nella combinazione che dici tu...ho rivolto anche il sensore verso il soffitto per evitare che ci fossero oggetti vicini tipo la breadboard...ma il risultato è sempre 0 cm e come durata dell'echo 2/3 microsecondi...

sisi ho provato anche a cambiare i pin ovviamente anche nel programma

comunque lo sketch del link iniziale che avevi postato, funziona perfettamente.

Quindi o c'e' un erroe nei collegamenti o c'e' un problema con il sensore

credo che a sto punto il sensore sia rotto...probabilemente durante la spedizione...perchè non credo di aver sbagliato i collegamenti:ho seguito quelli nella figura del link che ho messo nel primo commento cambiando soli i piedi dell'eco e/o del trig...

Nel codice linkato da brunello prova ad aggiungere
delayMicroseconds( 10 );
nella linea 17, nel passaggio da LOW ad HIGH per intenderci.

La sequenza dovrebbe essere

//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
delayMicroseconds( 10 );      //<---------------------------------------Ritardo aggiunto!
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );