2.20 IR-Empfängermodul

Überblick

In dieser Lektion lernen Sie, das IR-Empfängermodul zu verwenden. Der IR-Empfänger ist eine Komponente mit Fotozelle, die auf den Empfang von Infrarotlicht abgestimmt ist. Es wird fast immer zur Fernbedienungserkennung verwendet - jeder Fernseher und DVD-Player hat eine davon an der Vorderseite, um das IR-Signal vom Clicker zu empfangen. In der Fernbedienung befindet sich eine passende IR-LED, die IR-Impulse aussendet, um dem Fernseher mitzuteilen, dass er ein- oder ausschalten oder den Kanal wechseln soll.

Erforderliche Komponenten

../_images/Part_two_20.png

Schematische Darstellung

../_images/image182.png

Fritzing-Schaltung

In diesem Beispiel verbinden wir den linken Pin (-) des IR-Empfängermoduls mit GND, den mittleren Pin mit 5 V und den rechten Pin (S) mit Pin 11.

../_images/image183.png

Code

Bemerkung

  • Sie können die Datei 2.20_irReceiver.ino unter dem Pfad sunfounder_vincent_kit_for_arduino\code\2.20_irReceiver direkt öffnen.

  • Oder kopieren Sie diesen Code in Arduino IDE.

  • Die Bibliothek IRremote wird hier verwendet. Sie können sie über den Bibliotheksmanager installieren.

    ../_images/lib_irremote.png

Nach dem Hochladen der Codes auf die Mega2560-Platine können Sie sehen, dass der aktuelle Wert der gedrückten Taste der IR-Fernbedienung auf dem seriellen Monitor angezeigt wird.

Code-Analyse

Dieser Code ist dafür ausgelegt, mit einer Infrarot (IR) Fernbedienung unter Verwendung der IRremote Bibliothek zu arbeiten. Hier die Erklärung:

  1. Bibliotheken einbinden: Dies beinhaltet die IRremote Bibliothek, welche Funktionen für die Arbeit mit IR Fernbedienungen bereitstellt.

    #include <IRremote.h>
    
  2. Definiert den Arduino-Pin, an den der Signalpin des IR-Sensors angeschlossen ist, und deklariert eine Variable, um den zuletzt decodierten IR-Wert zu speichern.

    const int IR_RECEIVE_PIN = 11;  // Define the pin number for the IR Sensor
    String lastDecodedValue = "";  // Variable to store the last decoded value
    
  3. Initialisiert die serielle Kommunikation mit einer Baudrate von 9600. Startet 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
    }
    
  4. Die Schleife wird kontinuierlich ausgeführt, um eingehende IR-Fernbedienungssignale zu verarbeiten.

    void loop() {
        if (IrReceiver.decode()) {
            String decodedValue = decodeKeyValue(IrReceiver.decodedIRD
    
            ata.command);
            if (decodedValue != "ERROR" && decodedValue != lastDecodedValue) {
                Serial.println(decodedValue);
                lastDecodedValue = decodedValue;  // Update the last decoded 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 unter Verwendung der benutzerdefinierten Funktion decodeKeyValue().

    • Überprüft, ob der decodierte Wert kein Fehler ist und sich von dem zuletzt decodierten Wert unterscheidet.

    • Gibt den decodierten IR-Wert auf dem seriellen Monitor aus.

    • Aktualisiert lastDecodedValue mit dem neu decodierten Wert.

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

Phänomen Bild

../_images/image184.jpeg