.. 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_remote: 9. Telecomando ================== Questo kit include un ricevitore IR che ti permette di utilizzare un telecomando a infrarossi per controllare il movimento dell'auto. **Componenti necessari** Per questo progetto, avremo bisogno dei seguenti componenti. È sicuramente conveniente acquistare un kit completo, 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` - \- * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_receiver` - \- **Collegamenti** .. raw:: html Ora costruisci il circuito seguendo lo schema qui sotto. .. list-table:: :header-rows: 1 * - Ricevitore IR - Scheda R3 * - OUT - 12 * - GND - GND * - VCC - 5V .. image:: img/car_9.png :width: 800 **Codice** .. note:: * Apri il file ``9.remote_control.ino`` nel percorso ``3in1-kit\car_project\9.remote_control``. * Oppure copia questo codice nell'**IDE di Arduino**. * Qui viene utilizzata la libreria ``IRremote``, puoi installarla dal **Library Manager**. .. image:: ../img/lib_irremote.png .. raw:: html Dopo che il codice è stato caricato con successo, premi il pulsante sul telecomando e il LED lampeggerà una volta per indicare che il segnale è stato ricevuto, e l'auto si muoverà in base al pulsante premuto. Puoi premere i seguenti tasti per controllare l'auto. * **+**: Aumenta la velocità * **-**: Riduci la velocità * **1**: Avanti a sinistra * **2**: Avanti * **3**: Avanti a destra * **4**: Gira a sinistra * **6**: Gira a destra * **7**: Indietro a sinistra * **8**: Indietro * **9**: Indietro a destra **Come funziona?** L'effetto di questo progetto è far muovere l'auto leggendo il valore del tasto del telecomando a infrarossi. Inoltre, il LED sul pin 13 lampeggerà per indicare la ricezione corretta del segnale IR. #. Importa la libreria ``IRremote``, che puoi installare dal **Library Manager**. .. code-block:: arduino #include const int IR_RECEIVE_PIN = 12; // Definisce il numero di pin per il sensore IR #. Inizializza la comunicazione seriale a un baud rate di 9600. Inizializza il ricevitore IR sul pin specificato (``IR_RECEIVE_PIN``) e abilita il feedback LED (se applicabile). .. code-block:: arduino ... void setup() { ... // Telecomando IR IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Avvia il ricevitore Serial.println("TELECOMANDO AVVIATO"); } #. Quando premi i tasti sul telecomando, il ricevitore infrarossi rileverà quale tasto è stato premuto, e l'auto si muoverà secondo il valore corrispondente. .. code-block:: arduino void loop() { if (IrReceiver.decode()) { // Serial.println(results.value,HEX); String key = decodeKeyValue(IrReceiver.decodedIRData.command); if (key != "ERROR") { Serial.println(key); if (key == "+") { speed += 50; } else if (key == "-") { speed -= 50; } else if (key == "2") { moveForward(speed); delay(1000); ... } IrReceiver.resume(); // Abilita la ricezione del prossimo segnale } } * Verifica se un segnale IR è stato ricevuto e decodificato correttamente. * Decodifica il comando IR e lo memorizza in ``key`` utilizzando una funzione personalizzata ``decodeKeyValue()``. * Verifica se il valore decodificato non è un errore. * Stampa il valore IR decodificato nel monitor seriale. * Riprende la ricezione del segnale IR per il prossimo segnale.