Zum Inhalt springen
Arduino digitalWrite

Lektion 7 – Digital Out: Endlich geht es los!

    Hast du die Schaltung aus Lektion 6 aufgebaut? Sehr gut! Wenn du das Arduino-Board schon mit deinem Computer verbunden hast, dann ziehe es noch einmal heraus. Öffne die Arduino-Software auf deinem Computer und lass uns zwei kleine Einstellungen machen.

    1

    Klicke im Menü auf Tools > Board und wähle »Arduino/Genuino UNO« aus.

    Arduino Board auswählen

    2

    Nun klicke auf Tools und dann auf Port. Merke dir die Informationen zu den Ports. Du kannst sie dir auch auf einen Zettel schreiben. Jetzt schließe das Arduino-Board an und klicke in der Software noch einmal auf Tools > Port. Mindestens ein Port ist jetzt neu dazu gekommen (Auf dem Mac ist es »/dev/tty.usbmodem….«, unter Windows meistens »COM…«). Wähle den neuen Eintrag aus. Fertig.

    Arduino Port auswählen

    Jetzt weiß die Arduino-Software, was für ein Arduino-Board wir haben und wo es angeschlossen ist.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Programmieren

    Der weiße Bereich der Arduino-Software ist das Programmierfenster. Hier schreiben wir alles hinein. Schreiben? Ja, Programmieren ist nichts weiter, als Befehle hintereinander zu schreiben.

    Arduino Software

    Auch beim Programmieren gibt es Regeln für Rechtschreibung und Grammatik. Diese Regeln nennt man Syntax. Das lernst du aber ganz schnell.

    Wenn man ein Arduino-Board programmieren möchte, muss man erst einmal Folgendes in das Programmfenster schreiben. Es ist die Grundkonstruktion eines jeden Arduino-Programms:

    void setup(){
      
    }
    
    void loop(){
    
    }

    Sieht komisch aus? Also das hier sind zwei Methodenblöcke. In eine Methode kann man Befehle reinschreiben, die das Programm dann ausführt. Ein Befehl könnte sein: Schalte eine LED an!

    Die geschweiften Klammern öffnen und schließen den Methodenblock. Alles, was zwischen den Klammern steht, gehört zur Methode. Das Wort void sagt dem Arduino-Board, dass nun eine Methode folgt. Nach dem Wort void kommt der Methodenname. In diesem Fall sind es setup und loop. Hinter dem Methodennamen schreibt man Klammer auf und Klammer zu.

    Aber mach dir um die Schreibweise keine Sorgen. Das lernst du automatisch und außerdem zeige ich dir hier, wie es richtig geschrieben wird.

    Auf der Tastatur findest du die geschweiften Klammern beim PC mit Alt-Gr + 7 und Alt-Gr + 0, am Mac mit Alt + 8 und Alt + 9.

    Setup und Loop

    Stell dir vor, du bekommst ein neues Fahrrad. Als Erstes stellst du den Sattel und vielleicht den Lenker auf deine Größe ein. Du machst also die Einstellungen. Auf Englisch heißt das Setup. Das machst du nur einmal. Und dann? Na dann setzt du dich auf den Sattel und trittst in die Pedale. Und das wiederholst du immer und immer wieder. Wiederholung nennt man in der Programmierung Schleife und im Englischen heißt Schleife loop.

    void setup(){
    
    }

    Dieser Teil wird nur einmal ausgeführt, so wie das Einstellen der Sattelhöhe auch nur einmal gemacht wird. Es ist die Setup-Methode.

    void loop(){
    
    }

    Dieser Teil wird ständig wiederholt, so wie das Treten in die Pedale. Es handelt sich um eine Endlosschleife. Das ist die Loop-Methode.

    Befehle

    Na gut. Und wie hilft uns das jetzt weiter? Reden wir kurz darüber, was unser Programm tun soll. Es soll die LED einschalten.

    Dazu müssen wir dem Arduino-Board sagen, dass wir einen digitalen Pin benutzen wollen, um etwas zu schalten, nämlich unsere LED. Das macht den digitalen Pin zu einem Ausgabe-Pin, englisch: Output. Das müssen wir nur einmal machen. Demnach können wir das in der Setup-Methode erledigen. Wir benutzen dafür einen Befehl, der dem Arduino-Board sagt, was es machen soll:

    pinMode(9, OUTPUT);

    Das ist ein schöner Befehl. Er besteht aus dem Schlüsselwort pinMode gefolgt von zwei runden Klammern, in denen wir sogenannte Parameter übergeben. Der erste Parameter ist die Nummer des Pins. Wir haben das Kabel in Pin 9 gesteckt, also muss hier auch eine 9 stehen. Der zweite Parameter ist die Funktion unseres Pins: OUTPUT – das bedeutet Ausgabe. Jede Befehlszeile muss mit einem Semikolon (;) beendet werden.

    Also: Befehlsname, runde Klammer auf, Pinnummer, Funktion, runde Klammer zu, Semikolon → fertig ist der Befehl.

    Jetzt weiß das Arduino-Board also, dass wir einen Pin als Output verwenden wollen. Nun müssen wir ihm noch sagen, dass es den Pin auch einschalten soll.

    digitalWrite(9, HIGH);

    Na der sieht doch dem anderen Befehl sehr ähnlich, oder? Der Befehl heißt digitalWrite. Auch dieser Befehl bekommt Parameter übergeben. Es handelt sich wieder um die Pin-Nummer (9) und die Information, was damit passieren soll. HIGH bedeutet, schalte den Kanal an. LOW würde bedeuten, schalte ihn aus. Wir wollen das jetzt nur einmal machen und somit kannst du diesen Befehl auch ins Setup schreiben.

    Das Programm sollte jetzt so aussehen:

    void setup(){
      pinMode(9, OUTPUT);
      digitalWrite(9, HIGH);
    }
    
    void loop(){
    
    }

    Wenn du vor den Befehlen einmal auf die Tabulatortaste drückst, rücken die Zeilen etwas nach rechts. Dann ist das Programm einfacher zu lesen. Alternativ kannst du im Menü einfach auf Tools > Automatisch Formatieren klicken. Dann erledigt die Arduino-Software das für dich.

     

    Übertragen

    Jetzt hast du schon ein schönes Programm, aber die LED leuchtet immer noch nicht, oder? Dazu müssen wir es nämlich noch auf das Arduino-Board übertragen. Klicke dazu im Menü auf Datei > Upload. Jetzt blinken ein paar LEDs auf dem Arduino-Board selbst und nach einigen Sekunden geht die LED an.

    Leuchtet die LED nicht? Prüfe noch einmal, ob alle Kabel richtig angeschlossen sind. Manchmal hat man auch einen Schreibfehler im Programm und es zeigt in dem schwarzen Bereich unter dem Programmfenster rote Schrift.

    Leuchtet die LED? Herzlichen Glückwunsch!!! Du hast dein erstes Programm geschrieben.

    31 Gedanken zu „Lektion 7 – Digital Out: Endlich geht es los!“

    1. Hi
      Habe ein ATmega328P Unter Arduino Uno registriert an Port com4
      Die Software geschrieben und kann sie aber nicht hochladen
      Habe unter Datei keinen Upload Button
      Über Hilfe würde ich mich freuen
      Gruß Michael

    2. Habe die SW unter MAC geladen. Die Einstellung des Boards hat eine andere Auswahl, auch der PORT ist kein usb sondern Bluetooth,
      was soll ich machen?
      Habe als Board auch nur einen “UNO”

    3. Habe die SW unter MAC geladen. Die Einstellung des Boards hat eine andere Auswahl, auch der PORT ist kein usb sondern Bluetooth,
      was soll ich machen?

    4. sorry, aber bei mir ist (unter Windows XP professional) das Feld “serial ports” nicht schwarz, sondern nur grau, d.h. ich kann diesen Menüpunkt nicht öffnen. Nun steht zwar auf der Arduino-Seite unten “Arduino Uno an COM1”, aber wenn ich das Programm hochlade, meldet er, daß er nicht mit dem Arduino kommunizieren kann (was kein Wunder ist, wenn ich den Port nicht auswählen kann, oderrrr?)
      Also: wie kriege ich den Port aktiviert?

      alternativ habe ich es unter Ubuntu-Linux probiert, Arduino-software runtergeladen und entpackt, kriege sie aber nicht installiert / aktiviert. Wie gehts?

      Vielen Dank für einen oder zwei Tipps!
      Und schöne Ostern!
      E. Blaum

      1. Hallo Eberhard,

        hm, das klingt komisch. Probier mal einen anderen USB Anschluss. Die meisten Rechner haben ja mehrere. Guck mal, ob sich die COM Nummer ändert. Du musst, wenn Du das Arduino neu angesteckt hast, das Tools-Menü noch mal neu öffnen, da es sich sonst nicht updated.
        Ist es ein Arduino UNO? Bei der Vorgängerversion muss man nämlich noch Treiber installieren. Hoffentlich klappt es jetzt.

        Mit Linux habe ich leider zu wenig Erfahrung, um Dir da richtig weiterzuhelfen.

        Liebe Grüße und frohe Weihnachten.

        Stefan”

        1. Hurra, I´ve got it!

          also, das mit den anderen USB/Anschlüssen hatte ich auch schon probiert, war es leider nicht.
          Nach längerem Suchen habe ich die Arduino/software nochmal runtergeladen, diesmal NICHT die Version “Windows ZIP file”, sondern die Version “Windows installer”.
          Und das wars, jetzt gehts prima und über ewihnachten kann ich dann anfangen, meine Heizungsregelung (mit Solaranlage) dem kleinen Wunder beizubringen.
          Hurra!
          Und vielen Dank und schöne Weihnachten und einen guten Rutsch!

      2. Unter Ubuntu und Linux Mint war bei mir auch das Item Port grau, also nicht wählbar.

        Lösung: mit Administrator-Rechten im Terminal starten, also zuerst ins Verzeichnis, in dem arduino gespeichert ist, wechseln, dann Befehl

        sudo sh arduino

        eingeben, dann klappt’s.

        bac

        1. Auch wenn der letzte Kommentar hier schon älter ist, aus gegebenem Anlass …

          Unter Ubuntu haben nicht-root user per default oft nicht die Rechte um auf entsprechende USB Geräte (devices) zuzugreifen. Sollte das der Fall sein bekommt man beim “Hochladen” des Programms aber eine “Permission denied” Fehlermeldung.

          Die Lösung dafür ist, den jeweiligen Nutzer in die Gruppe “dialout” hinzuzufügen, z.B. folgenden Befehl in einem Terminal Fenster ausführen:
          $ sudo adduser USERNAME dialout
          Danach ist ein logout/login erforderlich für den USER.

          Die Installation der Arduino Software und das starten des Programms erfordern keine root-Rechte!
          D.h. nach dem herunterladen der .tar.xz Datei, diese entpacken und als normaler user das ./install.sh script (im Terminal) aufrufen. Damit sollten dann auch Desktop und Startmenu Einträge generiert werden.

          p/s: zumindest unter Ubuntu hatte das gerade erst sehr gut funktioniert.
          pp/s: Vielen Dank fuer die tolle Seite starthardware.org

    5. Bei mir kommt beim Upload immer dieser Fehler
      This report would have more information with
      “Show verbose output during compilation”
      enabled in File > Preferences.
      Arduino: 1.0.6 (Windows NT (unknown)), Board: “Arduino Uno”
      sketch_dec06a.ino: In function ‘void setup()’:
      sketch_dec06a:4: error: a function-definition is not allowed here before ‘{‘ token
      sketch_dec06a:4: error: expected `}’ at end of input

        1. Hallo David,

          hast Du die Einstellungen gemacht, wie hier in Punkt 1 und 2 beschrieben? Der Port muss auf jeden Fall richtig gewählt werden. Wenn das nicht klappt, dann probier mal den Sketch unter Datei>Beispiele>01.Basics>Blink auf das Arduino zu übertragen, um zu sehen, ob das mit dem Port klappt.

          Hast Du ein Arduino UNO? Bei den Vorgängermodellen muss man nämlich noch einen Treiber installieren.

          Liebe Grüße

          Stefan

        2. Klingt aber danach, dass die Klammern falsch gesetzt sind.
          Das Programm erwartet in „void setup“ eine „{„ , bevor eine Funktion definiert wird.
          Also steht der Befehl evtl. Nicht sauber in den { }.
          Vielleicht hast Du auch Ausversehen vorher oder nachher eine Klammer Zuviel gesetzt. Von den offenen und geschlossenen muss immer die selbe Anzahl vorhanden sein.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.