Arduino Tutorial: Der switch- Befehl

Der letzte Code ist mit den ganzen if- Anweisungen sehr unübersichtlich. Man kann aber die ganzen if- Anweisungen durch einen switch- Befehl ersetzen. Der Code wird dann zwar nicht kürzer, meiner Meinung nach, aber übersichtlicher.

 

 

Was benötigst du?

  • 1 x Arduino Uno

 

  • 1 x USB Kabel

 

  • 1 x Steckbrett

 

  • 8 x LED

 

  • 8 x Ohmscher Widerstand (220 Ohm)

 

  •  Jump Wire (Männlich)

 

 

Wie sieht der Schaltplan aus?

Wir übernehmen einfach die Schaltung aus Kapitel 13.

 

 

 

 

 

Der Code

int led[] = {13,12,11,10,9,8,7,6};                         // definiere Variable für LEDs

int nummer = 0;                                            // Variable zur Identifizierung

                                                           // der getippten LED

 

void setup()

{

  Serial.begin(9600);                                      // Starte die Kommunikation mit

                                                           // dem

                                                           // seriellen Monitor mit der

                                                           // Baudrate 9600

                                                           

  Serial.println("Das ist der serielle Monitor");          // Der Arduino schreibt in den

                                                           // Monitor den

  Serial.println("");                                      // hier angezeigten Text und

                                                           // fängt jeweils 

  Serial.println();                                        // in einer neuen Zeile an

  Serial.println("Tippe ein, welche LED leuchten soll.");  //

  

  for (int index=0; index<=7; index++)                     //

  {                                                        // definiere LEDs als Ausgang

     pinMode(led[index], OUTPUT);                          //

  }                                                        // 

  

}

 

 

void loop()  

{  

  if (Serial.available() > 0)                              // Wenn der serielle Monitor

                                                           // aufgerufen wird...

  { 

    

    nummer = Serial.read();                                // Speicher es in die

                                                           // Variable "nummer"

    

 

    switch (nummer)                                        // der switch- Befehl mit

                                                           // dem Parameter "nummer"

    {

 

       case '0' : for (int index;index<=7;index++)         // wenn nummer = '0'

                                                           // (ASCII- Code)

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        // Schalte alle LEDs...

                                                           //aus...

                                                           //

                  }                                        //

      

                     digitalWrite(led[0],HIGH);            // und mache die

                                                           // gewünschte LED an...

      

                     Serial.print("LED ");                 // Schreibe den Text in

                                                           // den Monitor...

                     Serial.print(13);                     //

                     Serial.print(" ist an.");             //

                     break;                                // breche den switch-

                                                           // Befehl ab

 

       case '1' : for (int index;index<=7;index++)         // wenn nummer = '1'

                  {                                        // (ASCII- Code)

                                                           //

                     digitalWrite(led[index], LOW);        // Schalte alle LEDs

                                                           // aus...

                                                           //

                  }                                        //

      

                     digitalWrite(led[1],HIGH);            // und mache die

                                                           // gewünschte LED an...

      

                     Serial.print("LED ");                 // Schreibe den Text in

                                                           // den Monitor...

                     Serial.print(12);                     //

                     Serial.print(" ist an.");             //

                     break;                                // breche den switch-

                                                           // Befehl ab

 

       case '2' : for (int index;index<=7;index++)         // Und so weiter...

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        //

                                                           //

                  }                                        //

      

                     digitalWrite(led[2],HIGH);            //

      

                     Serial.print("LED ");                 //

                     Serial.print(11);                     //

                     Serial.print(" ist an.");             //

                     break;                                //

 

       case '3' : for (int index;index<=7;index++)         //

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        //

                                                           //

                  }                                        //

      

                     digitalWrite(led[3],HIGH);            // 

      

                     Serial.print("LED ");                 //

                     Serial.print(10);                     //

                     Serial.print(" ist an.");             //

                     break;                                //

 

       case '4' : for (int index;index<=7;index++)         //

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        // 

                                                           //

                  }                                        //

      

                     digitalWrite(led[4],HIGH);            //

      

                     Serial.print("LED ");                 //

                     Serial.print(9);                      //

                     Serial.print(" ist an.");             //

                     break;                                //

 

       case '5' : for (int index;index<=7;index++)         //

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        //

                                                           //

                  }                                        //

      

                     digitalWrite(led[5],HIGH);            //

      

                     Serial.print("LED ");                 //

                     Serial.print(8);                      //

                     Serial.print(" ist an.");             //

                     break;                                //

 

       case '6' : for (int index;index<=7;index++)         //

                  {                                        // 

                                                           //

                     digitalWrite(led[index], LOW);        //

                                                           //

                  }                                        //

      

                     digitalWrite(led[6],HIGH);            //

      

                     Serial.print("LED ");                 //

                     Serial.print(7);                      //

                     Serial.print(" ist an.");             //

                     break;                                //

 

       case '7' : for (int index;index<=7;index++)         // wenn nummer = '1'

                  {                                        // (ASCII- Code)

                                                           //

                     digitalWrite(led[index], LOW);        // Schalte alle LEDs

                                                           // aus...

                                                           //

                  }                                        //

      

                     digitalWrite(led[7],HIGH);            // und mache die

                                                           //gewünschte LED an...

      

                     Serial.print("LED ");                 // Schreibe den Text

                                                           // in den Monitor...

                     Serial.print(6);                      //

                     Serial.print(" ist an.");             //

                     break;                                // breche den switch-

                                                           // Befehl ab

 

        default:  Serial.println("Falsche Eingabe.");      // Wenn es keine

                                                           // Übereinstimmung

                                                           // gibt,

                                                           // gebe "Falsche

                                                           // Eingabe" aus.

      

    }

 

    Serial.println();

 

  }                                             

 

 

 

}

 

 

Du kannst den Code auch hier herunterladen.

 

 

Code- Review

Wie funktioniert jetzt der switch- Befehl?

 

    switch (nummer)                                       // der switch- Befehl mit

                                                          // dem Parameter "nummer"

    {

 

       case '0' : Anweisung1

                  break;

 

       case '1' : Anweisung2

                  break;

   

    }

 

Der switch- Befehl gleicht die übergeben Variable ( hier Variable "nummer") mit den von dir angegebenen Bedingungen ab. Wenn eine Bedingung zutrifft wird die Anweisung, die mit der Bedingung zusammenhängt, ausgeführt. Die Bedingung oder der jeweilige Fall (case) besteht aus:

 

 

       case WERT : Anweisung1

                   break;

 

Wenn "WERT" mit der übergebenen Variable (hier "nummer") übereinstimmt, wird Anweisung1 ausgeführt. am Ende der Anweisung steht ein break- Befehl, damit der switch- Befehl unterbrochen wird. Falls "WERT" nicht mit der Variable übereinstimmt wird der nächste Fall (case) überprüft. Das war alles zum Thema switch- Befehl.

 

 

 

 

 

 

Wenn du hier irgendetwas vermisst, bessere Ansätze hast oder dir etwas nicht klar ist, zögere nicht einen Kommentar zu hinterlassen.

Kommentar schreiben

Kommentare: 0