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+ |
Puoi anche acquistarli separatamente dai link seguenti.
INTRODUZIONE DEI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
- |
|
Cablaggio
Schema Elettrico
Codice
Nota
Puoi aprire direttamente il file
22-ir_receiver.inonel percorsoelite-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.
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:
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;
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 }
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
decodedValueutilizzando una funzione personalizzatadecodeKeyValue().Stampa il valore IR decodificato sul monitor seriale.
Riprende la ricezione del segnale IR per il prossimo segnale.
Funzione di supporto per mappare i segnali IR ricevuti ai tasti corrispondenti
// 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"; } }