Einmaleinsreihen - Anzeige mit Keyes-Fernbedienung

Lesezeit: 5 Minuten
Lösung
Seite als PDF
Navigation

Das Programm soll zu jeder Zahlentaste der Fernbedienung die dazugehörige Einmaleinsreihe anzeigen.

So soll es aussehen:

Einmaleinsreihen - Anzeige im Serieller Monitor

Benötigte Bauteile:

  • Infrarotempfänger
  • Keyes Fernbedienung
  • Leitungsdrähte

Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)

Achte auf die Pinbelegung des Infrarotempfängers.

Achte darauf, dass die Batterie richtig eingelegt wurde. Der Minus-Pol liegt oben.

Benötigte Bibliothek:

Arduino IDE 1.8x:
Sketch → Bibliothek einbinden → Bibliotheken verwalten

Suche die Bibliothek IRremote ...

… kli­cke auf Instal­lie­ren.

Arduino IDE 2x:

Die Anleitung bezieht sich auf die Version 3.x der Bibliothek IRremote.

🔗 Anpassung von der Version 2.7x zu 3.x (externer Link, abgerufen am 24.4.2022)

🔗 Umwandlung von Zahlensystem (externer Link, abgerufen am 24.4.2022)

Die Fern­be­die­nung sen­det beim Druck auf die Tas­ten einen Zah­len­code.

Die Tastencodes beziehen sich auf die Keyes-Fernbedienung und die Opensmart-Fernbedienung.

Tastencodes Keyes-Fernbedienung (hexadezimal und dezimal)

obenlinksrechtsuntenOK1234
0x46
70
0x44
68
0x43
67
0x15
21
0x40
64
0x16
22
0x19
25
0xD
13
0xC
12
56789+0#
0x18
24
0x5E
94
0x8
8
0x1C
28
0x5A
90
0x42
66
0x52
82
0x4A
74

Tastencodes Opensmart-Fernbedienung (hexadezimal und dezimal)

Ein/ausMenuTest+| ◄ ◄►►|0-
0x45
69
0x47
71
0x44
68
0x40
64
0x40
64
0x7
7
0x15
21
0x9
9
0x16
22
0x19
25
C123456789
0xD
13
0xC
12
0x18
24
0x5E
94
0x8
8
0x1C
28
0x5A
90
0x42
66
0x52
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 ange­zeigt.

# include <IRremote.h>

int EmpfaengerPin = 11;

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

  // auf serielle Verbindung warten
  while (!Serial) {;}

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

void loop()
{
  // Daten lesen
  if (IrReceiver.decode())
  {
    /*
      printIRResultMinimal zeigt die verwendete Taste
      P = Protokoll
      C = Kommando in Hex
    */

    Serial.print(F("P = Protokoll C = Taste hexadezimal: "));
    IrReceiver.printIRResultMinimal(&Serial);
    Serial.print(F(" Dezimal: "));
    Serial.println(IrReceiver.decodedIRData.command);

    delay(200);

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

Die rot umrandeten Werte werden von der Keyes-Fernbedienung ausgegeben, die blau umrandeten stammen von einer TV-Fernbedienung.

Binde die benötigte Bibliothek ein und definiere den Pin des Empfängers.

# include <IRremote.h>

int EmpfaengerPin = 11;

Im setup-Teil wird der Serielle Monitor gestartet und die Fernbedienung initialisiert.

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

  // auf serielle Verbindung warten
  while (!Serial) {;}

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

Definiere eine ➨Methode ReiheAnzeigen, der als Variable Zahl übergeben wird:

void ReiheAnzeigen(int Zahl)
{
  // \t → Tabulator
  Serial.print("Einmaleins der\t");
  Serial.println(Zahl);
  for (int i = 1; i <= 10; i ++)
  {
    Serial.print(i);
    Serial.print(" * ");
    Serial.print(Zahl);
    Serial.print(" = ");
    Serial.print(i * Zahl);
    Serial.println();
  }
  Serial.println("-----------------------");
}

Im loop-Teil musst du jede Taste mit if einzeln abfragen und die Methode ReiheAnzeigen aufrufen:

void loop()
{
  // Daten lesen
  if (IrReceiver.decode())
  {
    /*
      printIRResultMinimal zeigt die verwendete Taste
      P = Protokoll
      C = Kommando in Hex
      
      auskommentiert lassen wenn die Tastencodes bekannt sind
    
      Serial.print(F("P = Protokoll C = Taste hexadezimal: "));
      IrReceiver.printIRResultMinimal(&Serial);
      Serial.print(F(" Dezimal: "));
      Serial.println(IrReceiver.decodedIRData.command);
    */

    delay(100);

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

    // je nach Wert Zahl an die Methode ReiheAnzeigen() übergeben
    switch (IrReceiver.decodedIRData.command)
    {
      // Taste 1
      case 0x16:
        ReiheAnzeigen(1);
        break;

      // Taste 2
      case 0x19:
        ReiheAnzeigen(2);
        break;

      // Taste 3
      case 0xD:
        ReiheAnzeigen(3);
        break;

      // Taste 4
      case 0xC:
        ReiheAnzeigen(4);
        break;

      // Taste 5
      case 0x18:
        ReiheAnzeigen(5);
        break;

      // Taste 6
      case 0x5E:
        ReiheAnzeigen(6);
        break;

      // Taste 7
      case 0x8:
        ReiheAnzeigen(7);
        break;

      // Taste 8
      case 0x1C:
        ReiheAnzeigen(8);
        break;

      // Taste 9
      case 0x5A:
        ReiheAnzeigen(9);
        break;

      default:
        break;
    }
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Verwandte Aufgaben:


Letzte Aktualisierung: 30. Apr 2022 @ 17:22