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 i problemi post-vendita e le 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!
5. Gioca con il Modulo di Evitamento degli Ostacoli¶
Due moduli di evitamento ostacoli a infrarossi sono montati sulla parte anteriore dell’auto, che possono essere utilizzati per rilevare ostacoli ravvicinati.
In questo progetto, l’auto si muove liberamente in avanti e, quando incontra un ostacolo, lo evita e continua a muoversi in altre direzioni.
Componenti necessari
Per questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un intero kit, 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
Il modulo di evitamento ostacoli è un sensore di prossimità a infrarossi con distanza regolabile, il cui output è normalmente alto e diventa basso quando rileva un ostacolo.
Ora costruisci il circuito seguendo lo schema qui sotto.
Modulo IR Sinistro |
Scheda R3 |
|---|---|
OUT |
8 |
GND |
GND |
VCC |
5V |
Modulo IR Destro |
Scheda R3 |
|---|---|
OUT |
7 |
GND |
GND |
VCC |
5V |
Regolazione del Modulo
Prima di iniziare il progetto, devi regolare la distanza di rilevamento del modulo.
Collega i cavi come mostrato nello schema sopra, alimenta la scheda R3 (collegando direttamente il cavo USB o utilizzando il cavo della batteria da 9V), senza caricare il codice.
Posiziona un quaderno o un altro oggetto piatto a circa 5 cm di fronte al modulo di evitamento ostacoli IR.
Poi, utilizza un cacciavite per ruotare il potenziometro sul modulo fino a quando l’indicatore di segnale non si accende, così da regolare la distanza massima di rilevamento a 5 cm.
Ripeti lo stesso metodo per regolare l’altro modulo a infrarossi.
Codice
Nota
Apri il file
5.obstacle_avoidance_module.inonel percorso3in1-kit\car_project\5.obstacle_avoidance_module.Oppure copia questo codice nell”IDE di Arduino.
O carica il codice tramite l”Arduino Web Editor.
L’auto si muoverà in avanti una volta che il codice sarà stato caricato correttamente. Quando il modulo a infrarossi sinistro rileva un ostacolo, l’auto andrà indietro verso sinistra; quando il modulo a infrarossi destro rileva un ostacolo, andrà indietro verso destra; se entrambi i lati rilevano un ostacolo, andrà indietro in linea retta.
Come funziona?
Questo progetto si basa sui valori dei moduli di evitamento ostacoli a infrarossi sinistro e destro per far compiere all’auto l’azione appropriata.
Aggiungi la definizione del pin per i 2 moduli di evitamento ostacoli, impostati qui come
INPUT.... const int rightIR = 7; const int leftIR = 8; void setup() { ... // IR ostacoli pinMode(leftIR, INPUT); pinMode(rightIR, INPUT); }
Leggi i valori dei moduli a infrarossi sinistro e destro e fai compiere all’auto l’azione corrispondente.
void loop() { int left = digitalRead(leftIR); // 0: Obstructed 1: Empty int right = digitalRead(rightIR); int speed = 150; if (!left && right) { backLeft(speed); } else if (left && !right) { backRight(speed); } else if (!left && !right) { moveBackward(speed); } else { moveForward(speed); } }
Se il modulo IR sinistro è 0 (ostacolo rilevato) e quello destro è 1, l’auto andrà indietro a sinistra.
Se il modulo IR destro è 0 (ostacolo rilevato), l’auto andrà indietro a destra.
Se entrambi i moduli IR rilevano l’ostacolo contemporaneamente, l’auto andrà indietro.
Altrimenti, l’auto continuerà ad andare avanti.
Informazioni sulla funzione
backLeft().Quando il motore destro gira in senso antiorario e il motore sinistro è fermo, l’auto andrà indietro a sinistra.
void backLeft(int speed) { analogWrite(A_1B, speed); analogWrite(A_1A, 0); analogWrite(B_1B, 0); analogWrite(B_1A, 0); }
Informazioni sulla funzione
backRight().Quando il motore sinistro gira in senso orario e il motore destro è fermo, l’auto andrà indietro a destra.
void backRight(int speed) { analogWrite(A_1B, 0); analogWrite(A_1A, 0); analogWrite(B_1B, 0); analogWrite(B_1A, speed); }