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.

Timing