LED mit einer Fern­be­die­nung schalten

Lese­zeit: 5 Minu­ten

Lösung
Seite als PDF

Mit den Tas­ten einer Fern­be­die­nung soll eine LED ein- und wie­der aus­ge­schal­tet werden.

So sieht es aus:

Benö­tig­te Bauteile:

  • LED
  • Infra­rot-Emp­fän­ger
  • Fern­be­die­nung
  • Wider­stand > 100 Ω
  • Lei­tungs­dräh­te

Baue die Schal­tung auf:
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Ach­te auf die Pin­be­le­gung des Infrarotempfängers.

Ach­te dar­auf, dass die Bat­te­rie rich­tig ein­ge­legt wur­de. Der Minus-Pol liegt oben.

Benö­tig­te Bibliothek:

Suche die Biblio­thek IRremote ...

… kli­cke auf Instal­lie­ren.

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

Die Fern­be­die­nung sen­det beim Druck auf die Tas­ten einen Zahlencode.

Die Tas­ten­codes bezie­hen sich auf die Keyes-Fern­be­die­nung und die Open-Smart-Fern­be­die­nung.

Tas­ten­codes Keyes-Fern­be­die­nung (hexa­de­zi­mal und dezimal)

obenlinksrechtsuntenOK1234
0×46
70
0×44
68
0×43
67
0×15
21
0×40
64
0×16
22
0×19
25
0xD
13
0xC
12
56789+0#
0×18
24
0x5E
94
0×8
8
0x1C
28
0x5A
90
0×42
66
0×52
82
0x4A
74
Ein/ausMenuTest+| ◄ ◄►►|0-
0×45
69
0×47
71
0×44
68
0×40
64
0×40
64
0×7
7
0×15
21
0×9
9
0×16
22
0×19
25
C123456789
0xD
13
0xC
12
0×18
24
0x5E
94
0×8
8
0x1C
28
0x5A
90
0×42
66
0×52
82
0x4A
74

Die Tas­ten­codes kannst du mit fol­gen­dem Pro­gramm her­aus­fin­den. Sie wer­den im Seri­el­len Moni­tor angezeigt. 

// 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 == 22) Serial.println("Taste 1");
      if (IrReceiver.decodedIRData.command == 25) Serial.println("Taste 2");
      if (IrReceiver.decodedIRData.command == 13) Serial.println("Taste 3");
      if (IrReceiver.decodedIRData.command == 12) Serial.println("Taste 4");
      if (IrReceiver.decodedIRData.command == 24) Serial.println("Taste 5");
      if (IrReceiver.decodedIRData.command == 94) Serial.println("Taste 6");
      if (IrReceiver.decodedIRData.command == 8) Serial.println("Taste 7");
      if (IrReceiver.decodedIRData.command == 28) Serial.println("Taste 8");
      if (IrReceiver.decodedIRData.command == 90) Serial.println("Taste 9");
      if (IrReceiver.decodedIRData.command == 82) Serial.println("Taste 0");
      if (IrReceiver.decodedIRData.command == 66) Serial.println("Taste *");
      if (IrReceiver.decodedIRData.command == 74) Serial.println("Taste #");
      if (IrReceiver.decodedIRData.command == 68) Serial.println("Pfeil links");
      if (IrReceiver.decodedIRData.command == 67) Serial.println("Pfeil rechts");
      if (IrReceiver.decodedIRData.command == 70) Serial.println("Pfeil oben");
      if (IrReceiver.decodedIRData.command == 21) Serial.println("Pfeil unten");
      if (IrReceiver.decodedIRData.command == 64) Serial.println("OK");
    }
  }
}

Bin­de die benö­tig­te Biblio­thek ein und defi­nie­re den Pin des Emp­fän­gers und der LED.

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

Im set­up-Teil wird die LED als OUTPUT defi­niert und die Infra­rot-Emp­fän­ger initialisiert.

void setup() 
{
  Serial.begin(9600);

  // Empfänger starten
  IrReceiver.begin(EmpfaengerPin);
}

Im loop-Teil musst du die Tas­ten 1 und 2 mit if abfragen.

if

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);
    }
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 14. Jul 2023 @ 7:30