Ein­mal­eins­rei­hen anzeigen

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF
Navi­ga­ti­on

In die­sem Pro­gramm soll die Ein­ga­be im Seri­el­len Moni­tor dazu ver­wen­det wer­den, belie­bi­ge Ein­mal­eins­rei­hen anzuzeigen. 

Für die­se Anlei­tung musst du den Ardui­no nur über USB verbinden. 

So sieht es aus:

Anzeige Serieller Monitor

Defi­nie­re Ein­ga­be als String und als glo­ba­le Variable.

String Eingabe = "";

Im setup-Teil musst du den Seri­el­len Moni­tor starten:

void setup() 
{ 
  Serial.begin(9600);
 
  // auf serielle Verbindung warten
  while (!Serial) {;}
}

Die seri­el­le Ein­ga­be wird mit einer ➨while-Schlei­fe und ➨Serial.available() abgefragt …

while (Serial.available() > 0)  
{
  // Eingabe lesen
  char Zahl = Serial.read();
  
  // dem String Eingabe wird der gelesene Wert hinzugefügt:
  Eingabe = Eingabe + Zahl;

Mit ...

    if (Zahl == '\n')      
    {

… wird der Druck auf die Enter-Taste abge­fragt.
Jetzt musst du noch den String Ein­ga­be in eine Integer-Variable umwan­deln. In die­sem Fall wird der Gel­tungs­be­reich mit unsi­gned long (bis 4.294.967.295) erwei­tert. Dann wird der Wert der ➨Funk­ti­on Rei­he­An­zei­gen über­ge­ben.
Zum Schluss musst du noch den String Ein­ga­be lee­ren, damit Platz für eine neue Zahl ist:

     unsigned long Reihe = Eingabe.toInt();  
     ReiheAnzeigen(Reihe);   
     Eingabe = "";  
  } 
}

Der voll­stän­di­ge loop-Teil:

void loop()
{
  while (Serial.available() > 0)
  {
    char Zahl = Serial.read();
    Eingabe = Eingabe + Zahl;
    if (Zahl == '\n')
    {
      unsigned long Reihe = Eingabe.toInt();
      ReiheAnzeigen(Reihe);
      Eingabe = "";
    }
  }
}

Die Funk­ti­on Rei­he­An­zei­gen ver­wen­det eine ➨for-Schlei­fe. Hier wird der ein­ge­ge­be­ne Wert (unsi­gned long) übergeben.

void ReiheAnzeigen(unsigned long Reihe)
{
  Serial.print("Einmaleins der ");
  Serial.println(Reihe);
  for (int i = 1; i <= 10; i ++)
  {
    Serial.print(i);
    Serial.print(" * ");
    Serial.print(Reihe);
    Serial.print(" = ");
    Serial.print(i * Reihe);
    Serial.println();
  }
  Serial.println("-------------------------------");
}

Erwei­te­rung des Programms

Es soll ver­hin­dert wer­den, dass Buch­sta­ben der Ein­mal­eins­rei­he hin­zu­ge­fügt wer­den.
Mit der Funk­ti­on isDi­git() wird geprüft, ob das ein­ge­ge­be­ne Zei­chen eine Zahl ist. Wenn das der Fall ist, wird das ein­ge­ge­be­ne Zei­chen hinzugefügt

Ergän­ze den loop-Teil:

 while (Serial.available() > 0)    
 {   
   // Eingabe im Seriellen Monitor lesen   
   char Zahl = Serial.read();   
   if (isDigit(Zahl))    
   {   
    Eingabe = Eingabe + Zahl;
   } 

Im nächs­ten Schritt soll geprüft wer­den, ob der String nicht leer ist. Das ist der Fall, wenn die Län­ge des Strings grö­ßer als 0 ist.

Die Funk­ti­on length() über­prüft die Län­ge eines Strings.

   if (Zahl == '\n')     
   {     
     if (Eingabe.length() > 0)   
     {     
       unsigned long Reihe = Eingabe.toInt();   
       ReiheAnzeigen(Reihe);     
     }  
     Eingabe = ""; 
   }

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 29. Nov 2022 @ 11:35