Arduino sensore ultrasuoni hc-sr04 e 3 led

Ciao a tutti!
questo post vi servirà per capire come collegare un sensore ad ultrasuoni HC-SR04 ad Arduino e costruirvi un primo progetto pratico con esso.
Infatti basterà avvicinare la mano al sensore per notare che i tre led si accenderanno a tre distanze differenti!



Ecco l'occorrente per realizzare il progetto:




- Un sensore di distanza ad ultrasuoni di tipo molto economico (costo circa 1.4 euro se comprato dalla Cina)
- Un Arduino (io ho usato l'Uno ma potete usarne uno qualsiasi)
- 3 led con 3 resistenze da 330 ohm (anche valori vicini vanno bene)
- una breadboard.

Questo è il video dimostrativo: i led si accendono a tre soglie di distanza differenti, il primo fino a 30 cm, il secondo fino a 50 e il terzo da 50 in poi.



Infine caricate questo sketch, ed il gioco è fatto!:

  1. int triggerPort = 7;
  2. int echoPort = 8;
  3. int rosso = 10;
  4. int giallo = 11;
  5. int ovr = 4;
  6. void setup() {
  7. pinMode( triggerPort, OUTPUT );
  8. pinMode( echoPort, INPUT );
  9. pinMode( rosso, OUTPUT );
  10. pinMode( giallo, OUTPUT );
  11. pinMode( ovr, OUTPUT );
  12. Serial.begin( 9600 );
  13. Serial.println( "Sensore ultrasuoni: ");
  14. }
  15. void loop() {
  16. //porta bassa l'uscita del trigger
  17. digitalWrite( triggerPort, LOW );
  18. //invia un impulso di 10microsec su trigger
  19. digitalWrite( triggerPort, HIGH );
  20. delayMicroseconds( 10 );
  21. digitalWrite( triggerPort, LOW );
  22. long duration = pulseIn( echoPort, HIGH );
  23. long r = 0.034 * duration / 2;
  24. Serial.print( "durata: " );
  25. Serial.print( duration );
  26. Serial.print( " , " );
  27. Serial.print( "distanza: " );
  28. //dopo 38ms è fuori dalla portata del sensore
  29. if( duration > 38000 )  Serial.println( "fuori portata");
  30. else { Serial.print( r ); Serial.println( "cm" );}
  31. if( r > 30) digitalWrite(rosso, HIGH);
  32. else { digitalWrite(giallo, HIGH);}
  33. if( r > 50) digitalWrite(rosso, LOW), digitalWrite(ovr, HIGH);
  34. //aspetta 150 millisecondi
  35. delay( 150 );
  36. digitalWrite(rosso, LOW);
  37. digitalWrite(giallo, LOW);
  38. digitalWrite(ovr, LOW);
  39. }


Segui Daniele Alberti su Google+

11 commenti:

  1. Quale simulatore hai utilizzato per fare questo progetto?

    RispondiElimina
    Risposte
    1. Io uso Tinkercad che fa pure le simulazioni

      Elimina
  2. Ciao, non è un simulatore, è solo grafica, si chiama Fritzing.

    RispondiElimina
  3. Problema:
    Quando cerco di compilare mi dice:
    Exit status 1
    Expected ')' before ';' token
    Che devo fare? Ho scritto lo sketch perfettamente ma niente

    RispondiElimina
  4. Risposte
    1. Ciao, sei sicuro? Perché a me errori non ne da

      Elimina
    2. Si mi dava errore li, comunque ho risolto, me ne sono fatti uno sul modello tuo e me lo compila. Grazie mille

      Elimina
  5. Salve, ero interessato a dotare questo progetto di 3 display a 7 segmenti per visualizzare la distanza in cm. Grazie.

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post