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+

3 in 1 Starter Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda SunFounder R3

ACQUISTA

Modulo Driver Motore L9110

-

Motore TT

-

Modulo di Evitamento Ostacoli

ACQUISTA

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

../_images/car_5.png

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.

../_images/ir_obs_cali.jpg

Codice

Nota

  • Apri il file 5.obstacle_avoidance_module.ino nel percorso 3in1-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.

  1. 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);
    }
    
  2. 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.

  3. 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);
    }
    
  4. 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);
    }
    
  • &&: Logical AND results in true only if both operands are true.

  • !: Logical NOT results in a true if the operand is false and vice versa.