Nota
Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati.
Perché unirsi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime.
Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e concorsi: Partecipa a concorsi e promozioni speciali durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
6. Gioca con il Modulo Ultrasonico¶
Nel progetto 5. Gioca con il Modulo di Evitamento degli Ostacoli, i 2 moduli a infrarossi vengono utilizzati per l’evitamento degli ostacoli, ma la distanza di rilevamento del modulo IR è corta, il che potrebbe far sì che l’auto reagisca troppo tardi agli ostacoli.
In questo progetto, utilizziamo il modulo ultrasonico per eseguire un rilevamento a lunga distanza, in modo che l’auto possa percepire gli ostacoli da una distanza maggiore e prendere decisioni di conseguenza.
Componenti necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit Starter 3 in 1 |
380+ |
Puoi anche acquistarli separatamente dai link qui sotto.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
- |
|
- |
|
Collegamenti
Un modulo sensore ultrasonico è uno strumento che misura la distanza di un oggetto utilizzando onde sonore ultrasoniche. Ha due sonde. Una invia onde ultrasoniche e l’altra riceve le onde, trasformando il tempo di invio e ricezione in una distanza, rilevando così la distanza tra il dispositivo e un ostacolo.
Ora costruisci il circuito secondo il seguente schema.
Modulo Ultrasonico |
Scheda R3 |
|---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Codice
Nota
Apri il file
6.ultrasonic_module.inonel percorso3in1-kit\car_project\6.ultrasonic_module.Oppure copia questo codice nell”IDE di Arduino.
Oppure carica il codice tramite Arduino Web Editor.
Dopo che il codice sarà caricato con successo, gira l’auto verso il muro. Se la distanza è troppo grande, l’auto avanzerà; se è troppo vicina, arretrerà; se si trova a una distanza di sicurezza, si fermerà.
Come funziona?
Questo progetto si basa sulla distanza letta dal modulo ultrasonico per far muovere l’auto di conseguenza.
Aggiungi la definizione dei pin per il modulo ultrasonico,
trigPinviene utilizzato per trasmettere l’onda ultrasonica, quindi impostalo suOUTPUT;echoPinè impostato suINPUTper ricevere l’onda ultrasonica.... const int trigPin = 3; const int echoPin = 4; void setup() { ... //ultrasonic pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); }
Leggi il valore della distanza ottenuto dal modulo ultrasonico: se la distanza è maggiore di 25, fai avanzare l’auto; se la distanza è compresa tra 2 e 10 cm, fai arretrare l’auto; altrimenti (tra 10 e 25) fermati.
void loop() { float distance = readSensorData(); if (distance > 25) { moveForward(200); } else if (distance < 10 && distance > 2) { moveBackward(200); } else { stopMove(); } }
A proposito della funzione
readSensorData().Il trasmettitore del modulo ultrasonico trasmette un segnale a onda quadra da 10us ogni 2us, e il ricevitore riceve un segnale di livello alto se c’è un ostacolo entro il raggio di rilevamento. Utilizza la funzione
pulseIn()per registrare il tempo dall’invio alla ricezione, dividi per la velocità del suono 340m/s, e poi dividi per 2; il risultato è la distanza tra il modulo e l’ostacolo in cm.float readSensorData() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); float distance = pulseIn(echoPin, HIGH) / 58.00; //Equivalent to (340m/s*1us)/2 return distance; }
-
pin: il numero del pin di Arduino da cui vuoi leggere l’impulso. Tipi di dati ammessi: int.value: tipo di impulso da leggere: HIGH o LOW. Tipi di dati ammessi: int.
Legge un impulso (HIGH o LOW) su un pin. Ad esempio, se il valore è HIGH,
pulseIn()attende che il pin passi da LOW a HIGH, avvia il conteggio del tempo, poi attende che il pin torni a LOW e ferma il conteggio.