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+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung¶
Schaltplan¶
Code¶
Bemerkung
Sie können die Datei
22-ir_receiver.ino
direkt im Pfadelite-explorer-kit-main\basic_project\22-ir_receiver
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die
IRremote
Bibliothek verwendet, die Sie über den Library Manager installieren können.
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:
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;
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 }
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 FunktiondecodeKeyValue()
.Druckt den decodierten IR-Wert auf den seriellen Monitor.
Setzt den IR-Signalempfang für das nächste Signal fort.
Hilfsfunktion, um empfangene IR-Signale den entsprechenden Tasten zuzuordnen
// 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"; } }