verfasst, am 14. Mai 2019 von Jonathan

Einführung Arduino mit PlatformIO

Dieser Artikel ist die Aufzeichnung eines Arduino-Einführungsworkshop inkl. aller Beispielprogramme und einiger kurzer Erklärungen. Der Workshop findet regelmäßig Samstag Vormittag statt. Termine sind am besten im Maker Space zu erfragen, da sie aktuell noch nach Bedarf gemacht werden.

Im Maker Space haben wir verschiedene Bauformen von Microcontrollern vorrätig. Jeder hat seine eigenen Besonderheiten und Einsatzgebiete.

  • Arduino Uno – Einsteigermodel, Relativ viele Pins
  • Arduino Mega – Sehr viele Pins, sehr große Bauform
  • Lillipad – Wasserfest, für den Einsatz in Textilien
  • Arduino Nano – klein und günstig
  • ESP32 – WLAN und Bluetooth

Für den Workshop wird der Arduino Nano eingesetzt. Grund dafür ist, dass dieser Microcontroller verhältnissmäßig günstig ist (China ca 1€, Deutschland cs 10€).

Als Entwicklungsumgebung wird im Workshop Visual Studio Code (Download) mit dem Plugin PlatformIO (Dokumentation) verwendet. Gegenüber der Arduino IDE (Download) bieten sich verschiedene Vorteile. Zum einen ist die Unterstützung inklusive Treiber auch für günstige Boards direkt mitgeliefert. Autokorrektur und übliche IDE-Features wie Code-Verfolständigung, Syntax-Highlighting, markieren von Syntaxfehlern werden direkt von VSCode übernommen. Einfaches uploaden und automatische Portauswahl bringt PlatformIO mit

Installation und Einrichtung

Die Installation von Visual Studio Code ist über den Installer von der Website und wird hier nicht groß erklärt.

PlatformIO ist ein Plugin für VSCode und wird innerhalb des Editors installiert. Dazu muss zuerst Visual Studio Code gestartet werden.

Visual Studio Code Startbildschirm

Danach muss zuerst das Plugin installiert werden. Dazu öffnen wir links im Menü den Bereich Extensions.

Reiter für Plugins öffnen

Danach müssen wir das Plugin suchen und installieren. Dazu oben in die Suche den Begriff “PlatformIO” eingeben und beim Plugin “PlatformIO IDE” auf install klicken.

Plugin suchen und installieren

Jetzt müssen wir warten, bis das Plugin fertig installiert ist. Anschließend Visual Studio Code neu starten. Nach dem Neustart werden noch einige Dinge installiert. Sobald alles abgeschlossen ist und der PlatformIO Startbildschirm angezeigt wird können wir loslegen.

Wenn die Installation erfolgreich war, wird in der unteren linken Ecke ein kleines Haus-Symbol angezeigt. Dieses Symbol öffnet auch den PlatformIO-Startbildschirm

Projekt anlegen

In dem PlatformIO Startbildschirm haben wir unterschiedliche Werkzeuge zur Auswahl. Wir können zuerst ein neues Projekt anlegen. Dazu klicken wir auf “New Project”. Im folgenden müssen wir einen Projektname festlegen, unser Board und das Framework auswählen und den Speicherort bestimmen. Für den Workshop ist das Board der “Arduino Nano ATmega328” und als Framework setzen wir Arduino ein. Das Projekt wird standardmäßig im Benutzerverzeichnis unter Dokuments/PlatformIO/Projects gespeichert.

Neues Projekt anlegen

Sobald das erledigt ist und der Projektwizard das Projekt fertig initialisiert hat können wir uns im Explorer das Projekt ansehen. Der Explorer ist im linksn Menü zu finden und zeigt alle Dateien des Projekts in einer Baumstruktur an. Für den Einstieg interessiert uns der Ordner “src” in dem wir die Datei “main.cpp” finden. Diese Datei können wir durch Doppelklick öffnen.

Explorer und main.js

Beispielprogramme

In die main.cpp kommt unser Programmcode. Im Folgenden sind die drei Beispielprogramme aus dem Workshop. Jedes Arduino-Programm beginnt mit zwei Funktionen.

Die Setup-Funktion wird beim starten des Arduino ausgeführt. In dieser Funktion werden alle Definitionen und Initialisierungen ausgeführt. Viele Bibliotheken bringen Setupfunktionen mit, die hier aufgerufen werden müssen z.B. FastLed mit FastLED.addLeds<NEOPIXEL, 6>(leds, 1);

Die Loop-Funktion wird endlos lange immer wieder nacheinander aufgerufen. Immer wenn die Loop beendet wurde beginnt ein neuer Aufruf. Alle Logik, die wir von unserem Microcontroller ausgeführt haben wollen werden wir in diese Funktion implementieren.

Blinkende LED

Auf dem Arduino Nano ist eine LED direkt auf dem Board verbaut. Diese kann für einfache Funktionstests und kleine Beispiele verwendet werden. Die Konstante LED_BUILTIN enthält den Pin dieser LED. Das Programm setzt im Setup diesen Pin als output um dann in der Loop den Pin abwechselnd auf High und Low, also an und aus, zu setzen.

#include <Arduino.h>

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
}

Debug mit Serial

Um zu überwachen, was unser Arduino tut gibt es verschiedene Optionen. Eine sehr einfache ist die Ausgabe von Daten über den Serial-Port. Diese Daten können wir am Computer über den Serial Monitor anzeigen. Der Serial Monitor wird mit dem Stecker-Icon unten links gestartet.

Der folgende Sketch zählt in der Loop immer weiter nach oben und gibt den Wert über Serial aus. Dazu wird zuerst eine Variable vom Typ “int” mit dem Name “tick” definiert. Im Setup wird die Geschwindigkeit der Serial-Kommunikation auf 9600 Baud festgelegt. In der Loop wird dann tick immer weiter hochgezählt und über Serial an den Computer gesendet.

#include <Arduino.h>

int tick = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.println(tick);
    tick++;    
}

Ampel

Als drittes Beispiel programmieren wir eine kleine Ampel. Neben der Programmierung kommen hier noch einige elektronische Komponenten ins Spiel. Für das Beispiel werden Vorwiderstände und LEDs in drei Farben benötigt. Aufgebaut wird alles auf einem Breadboard.

Der Code ist eine sehr einfache Variante einer Ampel. Mithilfe des Befehl “delay” wird die Ausführung pausiert und die Ampelphasen nach einer kurzen Wartezeit umgeschaltet.

#include <Arduino.h>

#define D3  3
#define D4  4
#define D5  5

void setup() {
    Serial.begin(9600);

    pinMode( D3, OUTPUT);
    pinMode( D4, OUTPUT);
    pinMode( D5, OUTPUT);
}

void loop() {

    digitalWrite( D3, HIGH);
    digitalWrite( D4, LOW);
    digitalWrite( D5, LOW);

    delay(5000);

    digitalWrite( D3, HIGH);
    digitalWrite( D4, HIGH);
    digitalWrite( D5, LOW);

    delay(2000);

    digitalWrite( D3, LOW);
    digitalWrite( D4, LOW);
    digitalWrite( D5, HIGH);

    delay(10000);

    digitalWrite( D3, LOW);
    digitalWrite( D4, HIGH);
    digitalWrite( D5, LOW);

    delay(2000);

    digitalWrite( D3, HIGH);
    digitalWrite( D4, LOW);
    digitalWrite( D5, LOW);

    delay(10000);
}

Über den Autor

Jonathan

Ich bin joni - Festangestellt im Maker Space - kümmere mich um alle Fragen, vor allem aber Programmierung, Technik, 3D Druck, Rapid Prototyping - außerdem noch gerne in der Holzwerkstatt unterwegs. Im Maker Space findest du mich überall und nirgends. Wenn ich privat da bin sitze ich meistens an einem der Projekttische am Laptop.

© experimenta gGmbH – Das Science Center. Alle Rechte vorbehalten.

Experimenta-Platz, 74072 Heilbronn, Tel.: +49 (0) 7131 88795 - 0,
info@experimenta.science


Bildnachweise