Sensore ad ultrasuoni
Progetto di esempio: ultrasuoni
int pin_trig = 9; // pin TRIG (trigger)
int pin_echo = 8; // pin ECHO
void setup() {
// inizializza la seriale su cui inviare i dati
Serial.begin(9600);
// configura il pin TRIG trigger ad output
pinMode(pin_trig, OUTPUT);
// configura in pin ECHO ad input
pinMode(pin_echo, INPUT);
}
void loop() {
// impulso di 10 microsecondi sul pin TRIG
digitalWrite(pin_trig, HIGH);
delayMicroseconds(10);
digitalWrite(pin_trig, LOW);
// Quando il sensore riceve un segnale su TRIG, esegue i seguenti passi, in ordine:
// - trasmette un segnale acustico
// - imposta ECHO ad HIGH
// - attende finche' non riceve il segnale acustico riflesso
// - imposta ECHO a LOW
// La funzione pulseIn serve per misurare per quanto tempo ECHO rimane ad HIGH.
float tempo_microsecondi = pulseIn(pin_echo, HIGH);
// il tempo sara' quello di andata e poi ritorno del suono, quindi per ottenere la
// distanza basta dividere per due e moltiplicare per la velocita del suono
// (che e' di 340.19m/s = 34019cm/s = 0.034019cm/us)
float distanza_centimetri = (tempo_microsecondi / 2) * 0.034019;
// scrive il valore sul monitor seriale
Serial.println(distanza_centimetri);
// aspetta mezzo secondo, per non sparare dati a raffica
delay(500);
}
- Il sensore ad ultrasuoni in dotazione della scuola è il HC-SR04.
- Opera a 5v, pertanto si può connettere solo ad un Arduino Uno (il Nano 33 BLE opera a 3.3v, quindi richiederebbe un convertitore 3.3v-5v).
- Invia segnali acustici a 40kHz, ha un'angolo di misurazione di e ha un range di misurazione tra i e i .
- Il datasheet è accessibile qui (scaricato) o qui (fonte originale).
PIN
- VCC va connesso alla 5v
- GND va connesso alla terra
- TRIG è il pin di innesco, e va connesso ad un pin digitale, su cui poi si farà
pinMode(.., OUTPUT)
- ECHO è il pin di risposta, e va connesso ad un pin digitale, su cui poi si farà
pinMode(.., INPUT)
Tempi
Come spiegato all'interno del codice, il sensore opera così:
- aspetta di ricevere un impulso di 10 microsecondi sul pin TRIG
- emette un segnale acustico a 40kHz
- attiva il pin ECHO
- disattiva il pin ECHO non appena riceve un segnale acustico riflesso
Pertanto misurando il tempo in cui è stato acceso il pin ECHO si può ottenere il tempo trascorso da quando il suono è stato trasmesso a quando è stato ricevuto.