.. note:: Ciao, benvenuto nella community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora più a fondo Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché unirsi a noi?** - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche grazie al supporto 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 a nuovi annunci di prodotto e anteprime. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e omaggi**: Partecipa a giveaway e promozioni durante le festività. 👉 Pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso! .. _ar_receive: 2.20 Modulo Ricevitore IR ============================ Panoramica ------------- In questa lezione imparerai a utilizzare il modulo ricevitore IR. Il ricevitore IR è un componente dotato di fotocellula sintonizzata per ricevere la luce a infrarossi. Viene utilizzato quasi sempre per il rilevamento dei comandi remoti: ogni televisore e lettore DVD ha un ricevitore IR nella parte anteriore per ricevere il segnale infrarosso del telecomando. All'interno del telecomando si trova un LED IR corrispondente, che emette impulsi IR per indicare alla TV di accendersi, spegnersi o cambiare canale. Componenti necessari ----------------------- .. image:: img/Part_two_20.png * :ref:`cpn_mega2560` * :ref:`cpn_wires` * :ref:`cpn_receive` Schema elettrico ------------------- .. image:: img/image182.png :align: center Circuito Fritzing -------------------- In questo esempio, colleghiamo il pin sinistro (-) del modulo ricevitore IR a GND, il pin centrale a 5V e il pin destro (S) al pin 11. .. image:: img/image183.png :align: center Codice --------- .. note:: * Puoi aprire direttamente il file ``2.20_irReceiver.ino`` nella cartella ``sunfounder_vincent_kit_for_arduino\code\2.20_irReceiver``. * Qui viene utilizzata la libreria ``IRremote``, che puoi installare tramite il **Library Manager**. .. image:: img/lib_irremote.png :align: center .. raw:: html Dopo aver caricato il codice sulla scheda Mega2560, potrai vedere sul monitor seriale il valore corrente del tasto premuto sul telecomando IR. Analisi del codice -------------------- Questo codice è progettato per funzionare con un telecomando a infrarossi (IR) utilizzando la libreria ``IRremote``. Ecco la spiegazione: #. **Inclusione delle librerie**: Include la libreria IRremote, che fornisce funzioni per lavorare con i telecomandi IR. .. code-block:: arduino #include #. **Definizione del pin e variabili**: Definisce il pin Arduino a cui è collegato il pin del segnale del sensore IR e dichiara una variabile per memorizzare l'ultimo valore IR decodificato. .. code-block:: arduino const int IR_RECEIVE_PIN = 11; // Definisce il numero del pin per il sensore IR String lastDecodedValue = ""; // Variabile per memorizzare l'ultimo valore decodificato #. **Configurazione iniziale**: Inizializza la comunicazione seriale a un baud rate di 9600. Avvia il ricevitore IR sul pin specificato (``IR_RECEIVE_PIN``) e abilita il feedback LED (se applicabile). .. code-block:: arduino void setup() { Serial.begin(9600); // Avvia la comunicazione seriale a 9600 baud IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Avvia il ricevitore IR } #. **Loop principale**: Il ciclo verifica continuamente i segnali IR in arrivo. .. code-block:: arduino void loop() { if (IrReceiver.decode()) { String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command); if (decodedValue != "ERROR" && decodedValue != lastDecodedValue) { Serial.println(decodedValue); lastDecodedValue = decodedValue; // Aggiorna l'ultimo valore decodificato } IrReceiver.resume(); // Abilita la ricezione del prossimo valore } } * Controlla se un segnale IR viene ricevuto e decodificato correttamente. * Decodifica il comando IR e lo memorizza in ``decodedValue`` utilizzando una funzione personalizzata ``decodeKeyValue()``. * Stampa il valore decodificato sul monitor seriale se è diverso dall'ultimo valore memorizzato. * Aggiorna ``lastDecodedValue`` con il nuovo valore decodificato. * Riprende la ricezione dei segnali IR per il prossimo segnale. Immagine del risultato -------------------------- .. image:: img/image184.jpeg :align: center