Infrarot-Fernbedienung

Inhalt

Infrarot-Fernbedienung und Empfänger

Infrarotes Licht und Fernbedienungen

Infrarot-Fernbedienungen senden ein für uns unsichtbares Licht „durch die Luft“. Der Empfänger nimmt die Lichtsignale auf und wandelt sie in einen Zahlencode um. Dieser Zahlencode kann viele Geräte steuern.

Beispiele für die Verwendung von Infrarot-Fernbedienungen

Infrarotempfänger und Fernbedienung

Der Schaltplan für den Infrarot-Empfänger

Pinbelegung des Empfängers VS1838B

Auswertung der Zahlencodes des Infrarot-Empfängers VS1838B

Das infrarote Licht wird vom Empfänger erkannt. Der Empfänger enthält eine Fotodiode, das aufgefangene Licht wird in einen Zahlencode umgewandelt.

Dieser Zahlencode wird abgefragt und kann dann anschließend eine Aktion auslösen.

Das Programm

Bibliothek IRremote installieren

Bevor du mit der eigentlichen Programmierung beginnen kannst, musst du eine Bibliothek installieren.

Für die Programmierung wird die Bibliothek IRremote verwendet.Sie muss über den Bibliotheksverwalter installiert werden:

Sketch -> Biblio­thek ein­bin­den -> Biblio­the­ken verwalten

Tastencodes abfragen und im Seriellen Monitor anzeigen

Wird eine Taste auf der Fernbedienung gedrückt, zeigt der Seriellen Monitor den Tastencode an.

Vorher musst du den Seriellen Monitor starten:
Entweder über das Menü …

… oder über das Icon in der oberen Leiste:

Ausgabe im Seriellen Monitor

Das Programm für die Abfrage der Tastencodes

				
					// benötigte Bibliothek einbinden
# include <IRremote.h>

// der Pin, an dem der Infrarot-Empfänger angeschlossen ist
int EmpfaengerPin = 11;

void setup() 
{
  // Seriellen Monitor starten
  Serial.begin(9600);
  
  // Infrarot-Empfänger starten
  IrReceiver.begin(EmpfaengerPin);
}

void loop() 
{
  // decode() -> Daten lesen
  if (IrReceiver.decode()) 
  {
    // kurzes delay, damit nur ein Tastendruck gelesen wird
    delay(200);

    // resume -> nächsten Wert lesen
    IrReceiver.resume();

    /*
      der Empfänger empfängt zwischendurch Signale, 
      die nicht ausgewertet werden können
      es sollen dehalb nur die korrekt erkannten Tasten ausgewertet werden
      die Dezimalwerte der korrekten erkannten Tasten liegen zwischen > 0 und < 95
      es wird abgefragt, ob das empfangene Kommando decodedIRData.command
      zwischen 0 und (&&) 95 liegt
    */
    if (IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command < 95) 
    {
      Serial.print("Dezimalwert: ");

      // IrReceiver.decodedIRData.command = Wert der gedrückten Taste
      Serial.print(IrReceiver.decodedIRData.command);
      Serial.print(" -> ");

      // Werte abfragen und anzeigen
      if (IrReceiver.decodedIRData.command == 69) Serial.println("A");
      if (IrReceiver.decodedIRData.command == 70) Serial.println("Pfeil oben");
      if (IrReceiver.decodedIRData.command == 71) Serial.println("B");
      if (IrReceiver.decodedIRData.command == 68) Serial.println("Pfeil links");
      if (IrReceiver.decodedIRData.command == 64) Serial.println("X");
      if (IrReceiver.decodedIRData.command == 67) Serial.println("Pfeil rechts");
      if (IrReceiver.decodedIRData.command == 7) Serial.println("0");
      if (IrReceiver.decodedIRData.command == 21) Serial.println("Pfeil unten");
      if (IrReceiver.decodedIRData.command == 9) Serial.println("C");
      if (IrReceiver.decodedIRData.command == 22) Serial.println("1");
      if (IrReceiver.decodedIRData.command == 25) Serial.println("2");
      if (IrReceiver.decodedIRData.command == 13) Serial.println("3");
      if (IrReceiver.decodedIRData.command == 12) Serial.println("4");
      if (IrReceiver.decodedIRData.command == 24) Serial.println("5");
      if (IrReceiver.decodedIRData.command == 94) Serial.println("6");
      if (IrReceiver.decodedIRData.command == 8) Serial.println("7");
      if (IrReceiver.decodedIRData.command == 28) Serial.println("8");
      if (IrReceiver.decodedIRData.command == 90) Serial.println("9");
    }
  }
}
				
			

LED mit der Fernbedienung steuern

Die Schaltung wird mit einer LED an Pin 7 erweitert.
Die LED wird eingeschaltet, wenn die Taste 1 der Fernbedienung gedrückt wird, Taste 2 schaltet die LED wieder aus.

Der Schaltplan

Das Programm im Film

Der Programmcode

				
					# include <IRremote.h>
    
int EmpfaengerPin = 11;

// Pin der LED
int LED = 7;

void setup() {
  IrReceiver.begin(EmpfaengerPin);
  pinMode(LED, OUTPUT);
}

void loop() 
{
  // Daten lesen
  if (IrReceiver.decode()) 
  {
    // nächsten Wert lesen
    IrReceiver.resume();

    if (IrReceiver.decodedIRData.address == 0) 
    {
      // Taste 1 -> gelesener Deizimalwert 22 -> LED einschalten
      if (IrReceiver.decodedIRData.command == 22) digitalWrite(LED, HIGH);

      // Taste 2 -> gelesener Deizimalwert 25 -> LED ausschalten
      if (IrReceiver.decodedIRData.command == 25) digitalWrite(LED, LOW);
    }
  }
}
				
			

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE