.. note:: 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 [|link_sf_facebook|] e unisciti oggi stesso! .. _car_move_code: 2. Movimento tramite codice ============================== Nel progetto precedente, abbiamo controllato il funzionamento del motore utilizzando diversi segnali di livello per l'input del modulo L9110. Se modifichiamo i segnali di livello attraverso il programma, possiamo controllare il movimento dell'auto in modo più flessibile. **Componenti necessari** Per questo progetto, abbiamo bisogno dei seguenti componenti. È sicuramente conveniente acquistare un intero kit, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Starter 3 in 1 - 380+ - |link_3IN1_kit| Puoi anche acquistarli separatamente dai link qui sotto. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_uno` - |link_Uno_R3_buy| * - :ref:`cpn_l9110` - \- * - :ref:`cpn_tt_motor` - \- **Collegamenti** .. raw:: html Collega i fili tra il modulo L9110 e la scheda R3 seguendo lo schema qui sotto. .. list-table:: :widths: 25 25 50 :header-rows: 1 * - Modulo L9110 - Scheda R3 - Motore * - A-1B - 5 - * - A-1A - 6 - * - B-1B(B-2A) - 9 - * - B-1A - 10 - * - OB(B) - - Filo nero del motore destro * - OA(B) - - Filo rosso del motore destro * - OB(A) - - Filo nero del motore sinistro * - OA(A) - - Filo rosso del motore sinistro .. image:: img/car_2.png :width: 800 **Codice** .. note:: * Apri il file ``2.move.ino`` nel percorso ``3in1-kit\car_project\2.move``. * Oppure copia questo codice nell'**IDE di Arduino**. .. raw:: html Dopo il caricamento del codice, l'auto si muoverà avanti, indietro, a sinistra e a destra per due secondi rispettivamente. **Come funziona?** Questo progetto è essenzialmente lo stesso del precedente, e consiste nel far muovere l'auto in avanti, indietro, a sinistra e a destra, nonché fermarsi, fornendo diversi segnali di livello ai pin di input del modulo L9110. #. Inizializza i pin del modulo L9110. .. code-block:: arduino const int A_1B = 5; const int A_1A = 6; const int B_1B = 9; const int B_1A = 10; void setup() { pinMode(A_1B, OUTPUT); pinMode(A_1A, OUTPUT); pinMode(B_1B, OUTPUT); pinMode(B_1A, OUTPUT); } #. Imposta i pin di input su diversi livelli alti o bassi per controllare la rotazione dei motori sinistro e destro, quindi incapsulali in singole funzioni. .. code-block:: arduino void moveForward() { digitalWrite(A_1B, LOW); digitalWrite(A_1A, HIGH); digitalWrite(B_1B, HIGH); digitalWrite(B_1A, LOW); } void moveBackward() { digitalWrite(A_1B, HIGH); digitalWrite(A_1A, LOW); digitalWrite(B_1B, LOW); digitalWrite(B_1A, HIGH); } ... #. Chiama queste funzioni in ``loop()``. .. code-block:: arduino void loop() { moveForward(); delay(2000); stopMove(); delay(500); moveBackward(); delay(2000); stopMove(); delay(500); ... * `digitalWrite(pin, value) `_ * ``pin``: il numero del pin di Arduino. * ``value``: HIGH o LOW. Scrive un valore HIGH o LOW su un pin digitale. Se il pin è stato configurato come ``OUTPUT`` con ``pinMode()``, la sua tensione verrà impostata sul valore corrispondente: 5V (o 3.3V su schede a 3.3V) per HIGH, 0V (massa) per LOW. * `pinMode(pin, mode) `_ * ``pin``: il numero del pin di Arduino da impostare. * ``mode``: INPUT, OUTPUT o INPUT_PULLUP. Configura il pin specificato per comportarsi come input o output. * `delay(ms) `_ * ``ms``: il numero di millisecondi di pausa. Tipi di dati consentiti: unsigned long. Mette in pausa il programma per il tempo specificato (in millisecondi) come parametro. (Ci sono 1000 millisecondi in un secondo.)