
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?

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();
}
}
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 den Inhalt der 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.
Kommentar schreiben
joel abraham (Montag, 24 Februar 2020 12:32)
find ich cool