Arduino, Einsteiger, Making, Programmieren

Das erste Arduino-Programm

Hier lernst du die ersten und wichtigsten Schritte, die beim Programmieren eines Arduinos nötig sind. Gleichzeitig erfährst du, wie der Arduino „tickt“, denn viele Anfängerfehler beruhen auf falschen Vorstellungen.

Du solltest die Arduino-Software bereits installiert und deinen Arduino mit einem USB-Kabel mit dem PC verbunden haben. Falls du das noch nicht getan hast, schau dir am besten zuerst den Beitrag dazu an. Für das erste Beispiel sind noch keine externen Sensoren oder Aktoren nötig, denn jeder Arduino hat einen Aktor, eine LED, fest eingebaut.

Öffne über das Datei-Menü die Beispiele und wähle dort aus den Basics das Beispiel Blink.

Auf den ersten Blick siehst du vermutlich ganz viel grauen englischen Text. Es handelt sich hierbei um sogenannte Kommentare, die überhaupt nicht für den Arduino, sondern für den Menschen gedacht sind. Der sogenannte Compiler, der dein Programm am Ende für den Arduino übersetzt, überliest diesen Text also. Sobald im Editor die Zeichenfolge /* steht, ignoriert er alles, bis er die Zeichenfolge */ entdeckt. Eine andere Möglichkeit ist, einfach nur zwei Schrägstriche // zu schreiben. Dann wird allerdings nur der Text bis zum Zeilenende missachtet. Das eignet sich also vor allem für kurze Kommentare.

Wenn man sämtliche Kommentare entfernt, bleibt nur noch folgender Quelltext übrig.

Auf den ersten Blick sind nun zwei Blöcke erkennbar: einer beginnt mit der Zeile void setup() {, der andere mit void loop() {. Es handelt sich hier um sogenannte Methoden, oft auch Funktionen oder Operationen genannt. Das Wörtchen void bedeutet hierbei jeweils nur, dass die Methode kein Ergebnis liefert. Natürlich tut sie trotzdem etwas, sie berechnet aber keinen Wert wie z. B. eine mathematische Funktion. Sie arbeitet einfach nur die Befehle ab, die in den nachfolgenden Zeilen stehen. Und zwar bis die geschweifte Klammer, die am Ende der Zeile geöffnet wird, sich wieder schließt.

Bei den Wörtern setup() und loop() handelt es sich um die Namen der Methoden. Die leeren Klammerpaare dürfen nicht einfach weggelassen werden, sie gehören zu jeder Methode dazu. Du siehst gleich noch, dass man dort auch etwas reinschreiben kann. Das Allerwichtigste ist aber: Sobald du deinen Arduino einschaltest, führt er einmal die Methode setup() aus und wiederholt dann solange die Methode loop(), bis du ihn wieder ausschaltest (oder den Reset-Knopf drückst). Die Methode loop() ist also eine sogenannte Endlos-Schleife.

Aber was passiert nun in den beiden Methoden?

In der setup()-Methode wird hier nur ein weiterer Befehl ausgeführt. Es ist die Methode pinMode(). Sie dient dazu, dem Arduino zu sagen, ob ein Pin als Ausgang oder als Eingang genutzt werden soll. Warum genau das wichtig ist, erfährst du später noch. Diesmal steht nun etwas in den Klammern, nämliche die Wörter LED_BUILTIN und OUTPUT. Man nennt solche Wörter in den Klammern ganz allgemein Parameter. In diesem Fall wird dem Arduino gesagt, dass der Pin, an dem die eingebaute LED angeschlossen ist, als Ausgang dienen soll. Es handelt sich immer um den Pin 13, den man theoretisch auch als Eingang nutzen könnte.

in der loop()-Methode stehen vier Befehlen, ebenfalls wieder Methoden mit Parametern in Klammern. Bei digitalWrite() handelt es sich um eine Methode, die einem Pin einen digitalen Wert zuweist, also einfach nur eine 0 oder eine 1. Da es hier letztlich um eine elektrische Spannung geht, die am Pin anliegt, spricht man auch von einem niedrigen (LOW) bzw. hohen Pegel (HIGH). Hier wird also einfach nur die eingebaute LED eingeschaltet!

Anschließend folgt die Methode delay(), die den Arduino eine bestimmte Zeit warten lässt. Der Parameter gibt die Zeit in Millisekunden an. Hier wird also 1000 ms = 1 s gewartet. Die letzten beiden Zeilen solltest du nun von ganz alleine verstehen. Nach dem Einschalten ist die LED also immer abwechselnd eine Sekunden an und eine Sekunde aus. Sie blinkt!

Achtung delay!

Die delay()-Methode ist schön einfach und daher verlockend für viele andere Projekte. Du solltest aber beachten, dass der Arduino nicht einfach bloß wartet, bis er den nächsten Befehl ausführt, sondern dass er während dieser Wartezeit wirklich konsequent nichts tut! In dieser Zeit werden also z.B. auch keine Sensorwerte abgefragt. Das solltest schon einmal im Hinterkopf behalten. Für weitere Infos kannst du die Beiträge über Timer und Interrupts lesen.

Ideen zum selber Ausprobieren

  • Kompiliere das Programm und lade es auf deinen Arduino.
  • Verändere die Zahlen in der delay()-Methode. Lass die LED schneller blinken.
  • Erstelle komplexere Blink-Muster. Lass die LED z.B. Morsezeichen blinken.

Schreibe eine Antwort