Arduino Tutorial: Methoden

 

 

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();

 

}

 

 

Du kannst den Sketch auch hier herunterladen.

 

 

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.

 

 

 

 

 

 

 

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