Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [ hier ] und treten Sie heute bei!

Infrarot-Empfänger

Überblick

Ein Infrarot-Empfänger ist eine Komponente, die Infrarotsignale empfängt und unabhängig Infrarotstrahlen empfangen und Signale ausgeben kann, die mit TTL-Pegel kompatibel sind. Er ähnelt in der Größe einem normalen, in Kunststoff verpackten Transistor und eignet sich für alle Arten von Infrarot-Fernbedienungen und Infrarot-Übertragungen.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 WiFi

-

Steckbrett

KAUFEN

Jumperkabel

KAUFEN

Widerstand

KAUFEN

Infrarotempfänger

KAUFEN

Verdrahtung

../_images/22-ir_receiver_bb.png

Schaltplan

../_images/22_irrecv_schematic.png

Code

Bemerkung

  • Sie können die Datei 22-ir_receiver.ino direkt im Pfad elite-explorer-kit-main\basic_project\22-ir_receiver öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

22-ir_receiver.ino
 1/*
 2  This Arduino receive and decode infrared (IR) signals from a remote control. It uses 
 3  the IRremote library to receive the IR signals and map them to corresponding keys like 
 4  numbers, mathematical operations, and other function keys.
 5  
 6  Board: Arduino Uno R4 
 7  Component: Infrared Receiver
 8  Library: https://github.com/Arduino-IRremote/Arduino-IRremote (IRremote by shirriff, z3t0, ArminJo)
 9*/
10
11// Include the necessary libraries
12#include <IRremote.h>
13
14// Define the pin numbers for the IR receiver
15const int IR_RECEIVE_PIN = 2;
16
17void setup() {
18  Serial.begin(9600);                                     // Start serial communication at 9600 baud rate
19  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
20}
21
22void loop() {
23  // Check if there is any incoming IR signal
24  if (IrReceiver.decode()) {
25    IrReceiver.printIRResultShort(&Serial);                 // Print the received data in one line
26    // Serial.println(IrReceiver.decodedIRData.command, HEX);  // Print the command in hexadecimal format
27    Serial.println(decodeKeyValue(IrReceiver.decodedIRData.command));  // Map and print the decoded IR signal to corresponding key value
28    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print "old" raw data
29    IrReceiver.resume();  // Enable receiving of the next value
30  }
31}
32
33// Function to map received IR signals to corresponding keys
34String decodeKeyValue(long result) {
35  // Each case corresponds to a specific IR command
36  switch (result) {
37    case 0x16:
38      return "0";
39    case 0xC:
40      return "1";
41    case 0x18:
42      return "2";
43    case 0x5E:
44      return "3";
45    case 0x8:
46      return "4";
47    case 0x1C:
48      return "5";
49    case 0x5A:
50      return "6";
51    case 0x42:
52      return "7";
53    case 0x52:
54      return "8";
55    case 0x4A:
56      return "9";
57    case 0x9:
58      return "+";
59    case 0x15:
60      return "-";
61    case 0x7:
62      return "EQ";
63    case 0xD:
64      return "U/SD";
65    case 0x19:
66      return "CYCLE";
67    case 0x44:
68      return "PLAY/PAUSE";
69    case 0x43:
70      return "FORWARD";
71    case 0x40:
72      return "BACKWARD";
73    case 0x45:
74      return "POWER";
75    case 0x47:
76      return "MUTE";
77    case 0x46:
78      return "MODE";
79    case 0x0:
80      return "ERROR";
81    default:
82      return "ERROR";
83  }
84}
  • Hier wird die IRremote Bibliothek verwendet, die Sie über den Library Manager installieren können.

    ../_images/22_irrecv_lib.png

Bemerkung

  • An der Rückseite der Fernbedienung befindet sich ein transparentes Kunststoffteil, um die Stromzufuhr zu unterbrechen. Ziehen Sie es heraus, bevor Sie die Fernbedienung benutzen.

Code-Analyse

Dieser Code ist für die Verwendung mit einer Infrarot (IR) Fernbedienung und der IRremote Bibliothek konzipiert. Hier ist die Aufschlüsselung:

  1. Einbinden der Bibliothek und Definieren von Konstanten. Zunächst wird die IRremote Bibliothek eingebunden, und die Pinnummer für den IR-Empfänger wird als 2 definiert.

    #include <IRremote.h>
    const int IR_RECEIVE_PIN = 2;
    
  2. Initialisiert die serielle Kommunikation mit einer Baudrate von 9600. Initialisiert den IR-Empfänger am angegebenen Pin (IR_RECEIVE_PIN) und aktiviert die LED-Rückmeldung (falls zutreffend).

    void setup() {
        Serial.begin(9600);                                     // Start serial communication at 9600 baud rate
        IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
    }
    
  3. Die Schleife läuft kontinuierlich, um eingehende IR-Fernbedienungssignale zu verarbeiten.

    void loop() {
      // Check if there is any incoming IR signal
      if (IrReceiver.decode()) {
        // IrReceiver.printIRResultShort(&Serial);                 // Print the received data in one line
        // Serial.println(IrReceiver.decodedIRData.command, HEX);  // Print the command in hexadecimal format
        Serial.println(decodeKeyValue(IrReceiver.decodedIRData.command));  // Map and print the decoded IR signal to corresponding key value
    
        IrReceiver.resume();  // Enable receiving of the next value
      }
    }
    
    • Überprüft, ob ein IR-Signal empfangen und erfolgreich decodiert wurde.

    • Decodiert den IR-Befehl und speichert ihn in decodedValue mit einer benutzerdefinierten Funktion decodeKeyValue().

    • Druckt den decodierten IR-Wert auf den seriellen Monitor.

    • Setzt den IR-Signalempfang für das nächste Signal fort.


  4. Hilfsfunktion, um empfangene IR-Signale den entsprechenden Tasten zuzuordnen

    ../_images/22_irrecv_key.png
    // Function to map received IR signals to corresponding keys
    String decodeKeyValue(long result) {
      // Each case corresponds to a specific IR command
      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";
      }
    }