Advertisement
scimenes

ARDUINO - SENSORE ULTRASUONI

Nov 28th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1.  
  2. /* NewPing: https://bitbucket.org/teckel12/arduino-new-ping/downloads
  3.  * NewTone: https://bitbucket.org/teckel12/arduino-new-tone/downloads
  4. */
  5.  
  6. // INCLUDIAMO LE LIBRERIE
  7. #include <NewPing.h>
  8. #include <NewTone.h>
  9.  
  10. //DEFINIAMO LE COSTANTI TRA CUI ANCHE LA DISTANZA MASSIMA
  11. #define PIN_TRIG 2
  12. #define PIN_ECHO 3
  13. #define PIN_BUZZ 8
  14. #define MAX_DIST 30
  15.  
  16. // INIZIALIZZIAMO IL SENSORE A ULTRASUONI
  17.  
  18. NewPing rilevatore(PIN_TRIG, PIN_ECHO, MAX_DIST);
  19.  
  20. // FACCIAMO IL SETUP A 115200 BAUD STANDO ATTENTI A SETTARLO ANCHE SUL MONITOR SERIALE
  21.  
  22. void setup() {
  23. Serial.begin(115200);
  24. }
  25.  
  26. // INIZIAMO IL CICLO E CONVERTIAMO IN CM IL PING
  27. void loop() {
  28.    unsigned int uS = rilevatore.ping();
  29.    int cm = rilevatore.convert_cm(uS);
  30.  
  31. // CREIAMO UN CICLO CONDIZIONALE DO - WHILE,
  32. // ESEGUI FINCHE' LA DISTANZA E' TRA 1 E LA MASSIMA DISTANZA DICHIARATA
  33.  
  34. do{
  35.  
  36.       unsigned int uS = rilevatore.ping();
  37.       int cm = rilevatore.convert_cm(uS);
  38.       int frequenza = cm * 2.20;
  39.  
  40. // SE LA DISTANZA E' TRA 1 E 5, ALLORA FAI UN BIP DI UN SECONDO
  41.      
  42.       if(cm > 0 && cm < 6){
  43.         frequenza = 1000;
  44.         Serial.print("Entro ");
  45.         Serial.print(cm);
  46.         Serial.println(" cm");
  47.         Serial.print("Frequenza: ");
  48.         Serial.println(frequenza);
  49.         NewTone(PIN_BUZZ,700,frequenza);
  50.         delay(2000);
  51.       }
  52.  
  53.  // ALTRIMENTI SE LA DISTANZA E' TRA 6 E LA MASSIMA DISTANZA DICHIARATA,
  54.  // ALLORA FAI UN BIP ALLA FREQUENZA RILEVATA PROPORZIONALE ALLA DISTANZA.
  55.  // MAGGIORE SARA' LA VICINANZA ALL'OGGETTO, MAGGIORE SARA' LA FREQUENZA,
  56.  // E IL TONO SARA' PIU' BASSO.
  57.  
  58.       else if(cm > 5 && cm < MAX_DIST + 1 ) {
  59.         Serial.print("Distante: ");
  60.         Serial.print(cm);
  61.         Serial.println(" cm");
  62.         Serial.print("Frequenza: ");
  63.         Serial.println(frequenza);
  64.  
  65.       NewTone(PIN_BUZZ,(500+(cm*10)),frequenza);
  66.       int pausa = frequenza;
  67.       delay(pausa);
  68.       noNewTone(PIN_BUZZ);
  69.         delay(frequenza);
  70.       }
  71.      
  72.      } while(cm > 0 && cm < MAX_DIST + 1);
  73.  
  74. // SE LA CONDIZIONE WHILE E' FALSA, ALLORA FERMA IL BUZZER
  75.  
  76.    
  77.        Serial.println("Superata distanza massima");
  78.         noNewTone(PIN_BUZZ);
  79.      //   delay(1000);
  80.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement