Nota

Ciao, benvenuto nella Community di SunFounder per appassionati di Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti e alle anticipazioni.

  • Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Giveaway Festivi: Partecipa a giveaway e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

Ricevitore Infrarossi

Panoramica

Un ricevitore a infrarossi è un componente che riceve segnali a infrarossi e può ricevere indipendentemente il raggio infrarosso e fornire segnali compatibili con il livello TTL. È simile a un normale transistor in plastica per dimensioni ed è adatto a tutti i tipi di telecomandi e trasmissioni a infrarossi.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link seguenti.

INTRODUZIONE DEI COMPONENTI

LINK PER L’ACQUISTO

Arduino Uno R4 WiFi

-

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistenza

ACQUISTA

Ricevitore a Infrarossi

ACQUISTA

Cablaggio

../_images/22-ir_receiver_bb.png

Schema Elettrico

../_images/22_irrecv_schematic.png

Codice

Nota

  • Puoi aprire direttamente il file 22-ir_receiver.ino nel percorso elite-explorer-kit-main\basic_project\22-ir_receiver.

  • Oppure copia questo codice nell’IDE di Arduino.

  • Qui viene utilizzata la libreria IRremote, puoi installarla dal Library Manager.

    ../_images/22_irrecv_lib.png

Nota

  • C’è un pezzo di plastica trasparente sul retro del telecomando per interrompere l’alimentazione; estrailo prima di utilizzare il telecomando.

Analisi del Codice

Questo codice è progettato per funzionare con un telecomando a infrarossi (IR) utilizzando la libreria IRremote. Ecco la spiegazione:

  1. Inclusione della libreria e definizione delle costanti. Prima, viene inclusa la libreria IRremote e il numero del pin per il ricevitore IR viene definito come 2.

    #include <IRremote.h>
    const int IR_RECEIVE_PIN = 2;
    
  2. 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).

    void setup() {
        Serial.begin(9600);                                     // Avvia la comunicazione seriale a 9600 baud
        IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Avvia il ricevitore IR
    }
    
  3. Il ciclo loop viene eseguito continuamente per elaborare i segnali del telecomando IR in arrivo.

    void loop() {
      // Controlla se c'è un segnale IR in arrivo
      if (IrReceiver.decode()) {
        // IrReceiver.printIRResultShort(&Serial);                 // Stampa i dati ricevuti su una riga
        // Serial.println(IrReceiver.decodedIRData.command, HEX);  // Stampa il comando in formato esadecimale
        Serial.println(decodeKeyValue(IrReceiver.decodedIRData.command));  // Mappa e stampa il segnale IR decodificato al valore corrispondente
    
        IrReceiver.resume();  // Abilita la ricezione del prossimo valore
      }
    }
    
    • Controlla se viene ricevuto un segnale IR e se è stato decodificato correttamente.

    • Decodifica il comando IR e lo memorizza in decodedValue utilizzando una funzione personalizzata decodeKeyValue().

    • Stampa il valore IR decodificato sul monitor seriale.

    • Riprende la ricezione del segnale IR per il prossimo segnale.


  4. Funzione di supporto per mappare i segnali IR ricevuti ai tasti corrispondenti

    ../_images/22_irrecv_key.png
    // Funzione per mappare i segnali IR ricevuti ai tasti corrispondenti
    String decodeKeyValue(long result) {
      // Ogni caso corrisponde a un comando IR specifico
      switch (result) {
        case 0x16:
          return "0";
        case 0xC:
          return "1";
        case 0x18:
          return "2";
        case 0x5E:
          return "3";
        case 0x8:
          return "4";
        case 0x1C:
          return "5";
        case 0x5A:
          return "6";
        case 0x42:
          return "7";
        case 0x52:
          return "8";
        case 0x4A:
          return "9";
        case 0x9:
          return "+";
        case 0x15:
          return "-";
        case 0x7:
          return "EQ";
        case 0xD:
          return "U/SD";
        case 0x19:
          return "CYCLE";
        case 0x44:
          return "PLAY/PAUSE";
        case 0x43:
          return "FORWARD";
        case 0x40:
          return "BACKWARD";
        case 0x45:
          return "POWER";
        case 0x47:
          return "MUTE";
        case 0x46:
          return "MODE";
        case 0x0:
          return "ERROR";
        default:
          return "ERROR";
      }
    }