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
a prima vista però la libreria newPing mi sembra più semplice da capire quindi da una persona non molto esperta ( come me :)) è più semplice capirne il funzionamento
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 12void 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 );