Arduino Tutorial: Der serielle Monitor

Du weißt jetzt wie du deine LEDs mit deinem Arduino und einen Taster schalten kannst. In diesem Kapitel werden wir unser Arduino mit dem seriellen Monitor steuern. Damit hast du eine Möglichkeit deine LEDs bequem vom PC aus zu schalten.

 

 

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

Der Sketch ist nicht elegant geschrieben. Das ist aber vorerst nicht schlimm. Ich zeige dir später zwei Ansätze, mit denen es übersichtlicher und kürzer geht.

 

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

int nummer = 0;                                            // Variable zur Identifizierung

                                                           // der gewünschten 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 die eingetippte Zahl

                                                          // in die Variable "nummer"

    

 

    if(nummer == '0')                                     // Wenn der Wert der Variable

                                                          // gleich 

    {                                                     // dem ASCII- Code für "0" ist,

 

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

      {                                                   // 

                                                          //

        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.");                           //

    }

 

     else if(nummer == '1')                               // ansonsten, wenn der Wert der

                                                          // Variable 

    {                                                     // gleich dem ASCII- Code für "0"

                                                          // ist

 

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

      {                                                   //

                                                          //

        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.");                           //

    }

 

     else if(nummer == '2')                               // Und so weiter....

    {

 

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

      {

 

        digitalWrite(led[index], LOW);

        

      }

      digitalWrite(led[2],HIGH);

      Serial.print("LED ");

      Serial.print(11);

      Serial.print(" ist an.");

    }

 

     else if(nummer == '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.");

    }

 

     else if(nummer == '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.");

    }

 

     else if(nummer == '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.");

    }

 

      else if(nummer == '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.");

    }

 

      else if(nummer == '7'

    {

 

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

      {

 

        digitalWrite(led[index], LOW);

        

      }

      digitalWrite(led[7],HIGH);

      Serial.print("LED ");

      Serial.print(8);

      Serial.print(" ist an.");

    } else

    {

      Serial.println("Falsche Eingabe.");         // Wenn es keine Übereinstimmung gibt,

    }                                             // gebe "Falsche Eingabe" aus.

    

    Serial.println();

 

 

  }

}

 

 

Den Code kannst du auch hier herunterladen.

 

 

Wie öffnest du den seriellen Monitor?

Den seriellen Monitor kannst du in deiner Arduino IDE öffnen. Dazu gehst du auf Werkzeuge->Serieller Monitor

 

 

 

 

 

Code- Review

Schauen wir uns jetzt die neuen Befehle an.

 

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

                                                           // dem seriellen Monitor mit der

                                                           // Baudrate 9600

 

Der Serial.begin()- Befehl aktiviert die serielle Schnittstelle mit der wir über den Computer kommunizieren können. Der Wert "9600" ist die Übertragungsrate. Man sagt auch "9600 Baud".

 

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

                                                           // Monitor den

 

Dieser Befehl gibt einen Text auf den seriellen Monitor aus und springt direkt in die nächste Zeile. "println" ist voll ausgesprochen "print line".

 

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

                                                          // aufgerufen wird...

  { 

 

  }

 

Mit dem Befehl wird überprüft ob eine Kommunikationsschnittstelle aufgerufen wird. Wenn eine Schnittstelle erkannt wird, wird der Befehl in der if- Anweisung ausgeführt.

 

    nummer =Serial.read();                                // Speicher die eingetippte Zahl

                                                          // in die Variable "nummer"

 

Hier wartet dein Arduino auf eine Eingabe von dir. Diese Eingabe wird dann in unsere Variable "nummer" eingespeichert.

GANZ WICHTIG: Wir übergeben keine "reine" Zahl. Wir übergeben ein Zeichen oder ein Character (char). Der entsprechende Wert für dieses Zeichen wird dann in die Variable abgespeichert. Wenn du also eine 0 abschickst, wird nicht die Zahl 0 abgespeichert, sondern die Zahl für das Zeichen '0'. Wenn du mehr darüber erfahren möchtest, dann such mal nach dem Begriff "ASCII- Code"im Internet.

 

    if(nummer == '0')                                     // Wenn der Wert der Variable

                                                          // gleich 

    {                                                     // dem ASCII- Code für "0" ist,

 

        }

 

Wenn der Wert der eingetippten Zahl dem ASCII- Code für das Zeichen "0" (null) entspricht führe die if- Anweisung aus.

 

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

      Serial.print(13);                                   //

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

 

Die Serial.print()- Methode funktioniert wie die Serial.println()- Methode. Sie gibt einen Text auf den seriellen Monitor aus. Am Ende bleibt man aber in der selben Zeile. Nach den drei Methoden steht also der Text in einer Zeile: "LED 13 ist an".

 

Ich hoffe, dass der Code jetzt verständlich für dich ist.

 

 

 

 

 

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