
Nachdem du eine Alternative für die if- Bedingung kennengelernt hast, zeige ich dir nun wie du mit einer selbst definierten Methode den Code noch kürzer gestalten kannst. Du hast in den vergangenen Sketches fertig definierte Methoden benutzt. Du kannst aber auch selber Methoden definieren. Es ist sinnvoll sie bei wiederholten Befehlen anzuwenden. Diese Lösung bietet sich daher super für dich an!
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 benutzen wieder den vorherigen Schaltplan.

Der Code
int led[] = {13,12,11,10,9,8,7,6}; // definiere Variable für LEDs
int nummer; // 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() -48; // Speicher es in die
// Variable "nummer" und
// subtrahiere den Wert mit 48,
// da der ASCII- Code für '0' = 48;
schalteLED(nummer);
}
}
void schalteLED(int ledZiffer)
{
for (int index;index<=7;index++) //
{ //
//
digitalWrite(led[index], LOW); // Schalte alle LEDs aus...
//
}
digitalWrite(led[ledZiffer],HIGH); // und mache die
// gewünschte LED an...
Serial.print("LED "); // Schreibe den Text in
// den Monitor...
Serial.print(ledZiffer); //
Serial.print(" ist an."); //
Serial.println();
}
Code- Review
Wie funktioniert nun deine Methode?
Fangen wir mit der Methodendefinition an.
void schalteLED(int ledZiffer)
{
for (int index;index<=7;index++) //
{ //
//
digitalWrite(led[index], LOW); // Schalte alle LEDs aus...
//
}
digitalWrite(led[ledZiffer],HIGH); // und mache die
// gewünschte LED an...
Serial.print("LED "); // Schreibe den Text in
// den Monitor...
Serial.print(ledZiffer); //
Serial.print(" ist an."); //
Serial.println();
}
Die Definition fängt mit dem Typ der Rückgabe, mit dem Namen und der Parameterübergabe an. Die Anweisung mit der die Methode ausgeführt wird steht in den geschweiften Klammern.
Typ Name(Parameter)
{
Anweisung;
}
Die Methodendefinition findet außerhalb der setup- und der loop- Methode statt. Am besten schreibst du die Definition ganz unten unter der loop- Methode.
Diese Methode gibt am Ende nichts zurück. Deshalb lautet der Typ "void". Man kann z.B eine Methode schreiben, die Variablen zusammenaddieren soll. Diese Methode soll danach das Ergebnis wieder zurückgeben. Diese Methode muss deswegen den Rückgabetyp "int" haben, da am Ende eine Zahl zurückgegeben wird.
Die Methode soll nun für die if- Anweisungen bzw. für den switch- Befehl aus den letzten zwei Kapitel ersetzt werden. Mit der Methodendefinition wird die Methode aber noch nicht ausgeführt. Sie muss noch in der loop- Methode aufgerufen werden.
void loop()
{
if (Serial.available() > 0) // Wenn der serielle Monitor
// aufgerufen wird...
{
nummer =Serial.read() -48; // Speicher es in die
// Variable "nummer" und
// subtrahiere den Wert mit 48,
// da der ASCII- Code für '0' = 48;
schalteLED(nummer);
}
}
Nachdem du eine Zahl in die Variable "nummer" gespeichert hast, rufen wir unsere Methode mit dem Namen "schalteLED" auf. Als Parameter übergeben wir den Wert der Variable "nummer". Dieser Wert wird nun in der Methode verarbeitet. Wenn du in die Methodendefinition schaust, wird jetzt der Wert in die Variable "ledZiffer" gespeichert.
void schalteLED(int ledZiffer)
{
for (int index;index<=7;index++) //
{ //
//
digitalWrite(led[index], LOW); // Schalte alle LEDs aus...
//
}
digitalWrite(led[ledZiffer],HIGH); // und mache die
// gewünschte LED an...
Serial.print("LED "); // Schreibe den Text in
// den Monitor...
Serial.print(ledZiffer); //
Serial.print(" ist an."); //
Serial.println();
}
Die Variable "ledZiffer" wird nach dem Beenden der Methode wieder gelöscht.
Jetzt weißt du auch wie man eigene Methoden benutzt.
Kommentar schreiben
wasti20 (Sonntag, 28 Oktober 2018 17:26)
Mir ist nicht klar woher die Variable "ledZiffer" versorgt wird, wie kommt hier die eingegebene Zahl vom Seriellen Monitor hin?