Ein­mal­eins­rei­hen - Anzei­ge mit Keyes-Fernbedienung

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Das Pro­gramm soll zu jeder Zah­len­tas­te der Fern­be­die­nung die dazu­ge­hö­ri­ge Ein­mal­eins­rei­he anzei­gen.

So soll es aus­se­hen:

Benö­tig­te Bau­tei­le:

  • Infra­rotem­pfän­ger
  • Keyes Fern­be­die­nung
  • 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 Infra­rotem­pfän­gers.

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

Benö­tig­te Biblio­thek:
Sketch → Biblio­thek ein­bin­den → Biblio­the­ken ver­wal­ten

Suche die Biblio­thek IRre­mo­te ...

… kli­cke auf Instal­lie­ren.

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

Die Tas­ten­codes bezie­hen sich auf die Keyes-Fernbedienung. Die Tas­ten­codes ande­rer Fern­be­die­nun­gen kannst du mit Hil­fe des Seri­el­len Moni­tors her­aus­fin­den. Außer­dem wer­den die Codes nicht immer zuver­läs­sig gele­sen, des­halb musst du manch­mal die Tas­te mehr­mals drü­cken.

Tas­ten­codes Keyes-Fernbedienung

obenlinksrechtsuntenOK1234
167369251672060516761405167547751671244516738455167506951675681516724175
56789+0#
1671805516743045167160151672621516734885167287651673080516732845

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.

// Bibliothek einbinden 
# include <IRremote.h>

// der Empfänger ist an Pin 13 angeschlossen 
int IREmpfaenger = 13; 

// EmpfaengerLesen liest den Wert der gedrückten Taste  
IRrecv EmpfaengerLesen(IREmpfaenger); 

// der empfangene Code wird unter Ergebnis abgespeichert 
decode_results Ergebnis; 

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

 // der IR-Empfänger wird gestartet  
  EmpfaengerLesen.enableIRIn(); 
} 

void loop()  
{  
  // wenn Daten empfangen werden   
  // -> werden sie als Dezimalzahl(DEC) gespeichert  
  if (EmpfaengerLesen.decode(&Ergebnis))   
  {  
    Serial.println(Ergebnis.value, DEC);     
    EmpfaengerLesen.resume();   
  }
}

abge­wan­del­tes Bei­spiel aus: ➨http://​www​.righ​to​.com/​2​0​0​9​/​0​8​/​m​u​l​t​i​-​p​r​o​t​o​c​o​l​-​i​n​f​r​a​r​e​d​-​r​e​m​o​t​e​-​l​i​b​r​a​r​y​.​h​tml

Bin­de die benö­tig­te Biblio­thek ein und defi­nie­re die Varia­blen.

# include <IRremote.h>

// der Empfänger ist an Pin 13 angeschlossen
int IREmpfaenger = 13;

// EmpfaengerLesen liest den Wert 
IRrecv EmpfaengerLesen(IREmpfaenger);

// der empfangene Code wird unter Ergebnis abgespeichert
decode_results Ergebnis;

int Zahl;

Im setup-Teil wird der Seri­el­le Moni­tor gestar­tet und die Fern­be­die­nung initia­li­siert.

void setup()
{
  Serial.begin(9600);
  EmpfaengerLesen.enableIRIn();
}

Defi­nie­re eine Metho­de Rei­he­An­zei­gen, der als Varia­ble Zahl über­ge­ben wird:

void ReiheAnzeigen(int Zahl) 
{ 
  // \t → Tabulatorsetzen  
  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.print("\n");   
  }     
  Serial.print("-----------------------\n"); 
}

Im loop-Teil musst du jede Tas­te mit if (oder mit ➨switch ein­zeln abfra­gen und die Metho­de Rei­he­An­zei­gen auf­ru­fen:

void loop()  
{  
  if (EmpfaengerLesen.decode(&Ergebnis)) 
  { 
    // Taste 1   
    if (Ergebnis.value == 16738455)   
    {  
      Zahl = 1;   
      ReiheAnzeigen(Zahl); 
    }  

    // Taste 2   
    if (Ergebnis.value == 1086210239)    
    {    
      Zahl = 2;   
      ReiheAnzeigen(Zahl);    
    }   

    // Taste 3   
    . . .     
    . . .  
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 21. Mrz 2020 @ 19:30