Der Arduino-Plattform wird nachgesagt, besonders gut für dein Einstieg in die Welt der Mikrocontroller zu sein. Glaubt man den Werbeversprechen diverser Kits, Bausätze und Anleitungen, klingt es geradezu danach, als würde sich der Arduino praktisch selbst programmieren. Doch ist dem wirklich so? Ich habe es ausprobiert – mit Schülerinnen und Schülern (SuS) der 5. bis 9. Jahrgangsstufe, vielfach ohne Erfahrung der Programmierung und in gerade einmal fünf Tagen. Ob das Erfolg haben kann?
Wie es dazu kam
Zunächst einen Schritt zurück. Am Gymnasium, das ich „damals“ besucht habe, findet vor den Sommerferien meist eine sogenannte Projektwoche statt. Lehrkräfte, Eltern und Externe (in diesem Jahr hat neben mir unter anderem auch die Wolfsburger Berufsfeuerwehr ein Projekt angeboten) bieten Seminare an, auf die sich die SuS bewerben können. Je nach Nachfrage finden die Projekte dann unter Umständen nicht statt, oder die Teilnehmer müssen sogar ausgelost werden. Ich wollte meiner Schule etwas Gutes tun und zugleich Wissen und Freude an der Software-Entwicklung weitergeben. Grundsätzlich bestand Interesse, ein Projekt konnte also angeboten werden. Nur, was sollte der Inhalt sein? Ich wollte auf jeden Fall ein Verständnis für die Welt um uns herum vermitteln, also am Besten etwas zum Anfassen. Hier fallen in der Regel drei Namen: Arduino, Calliope und Mindstorms. Für die letzten beiden wurden bereits Projekte angeboten, wobei hier in einer grafischen Oberfläche zusammengetragen wurde. Die Hardware spielt hier nur eine untergeordnete Rolle, denn sie wird, wenn überhaupt, nur angesteckt. Es verblieb nur ein Kandidat: Arduino.
Programmieren ohne Vorkenntnisse?
Bestimmt können Arduinos auch mit grafischen Tools modellbasiert programmiert werden. Ich wollte aber, dass die SuS ein wenig mehr von der Entwicklung sehen, weil ich denke, dass eine zu starke Abstraktion nicht unbedingt hilfreich ist. Arduinos (bzw. die verwendeten Prozessoren) können mittlerweile in vielen verschiedenen Sprachen programmiert werden. In den meisten Fällen wird jedoch C/C++ verwendet. Die überwiegenede Mehrheit der im Internet verfügbaren Beispiele und Bibliotheken setzen hierauf. Aber kann die Sprache überhaupt soweit reduziert werden, dass selbst ohne Programmierkenntnisse innerhalb weniger Tage eigene Programme erstellt werden können? Und ist es möglich, gerade so viel Hardware zu lehren, dass die Schüler einfache Schaltungen bauen und die Architektur des Fahrzeugs verstehen können? Diese Fragen habe ich mir lange durch den Kopf gehen lassen. Im Internet finden sich hier unzählige Projektideen, die quasi unendlich ausgebaut werden können. Eine einfache und dennoch eindrucksvolle Lösung musste her. Schließlich wollen die SuS ja auch wissen, welches Ziel in der Projektwoche verfolgt wird.
Das Arduino-Auto
Meine Entscheidung fiel schließlich auf die Entwicklung eines 2WD-Fahrzeugs (mitunter auch als Arduino-Auto bezeichnet). Hierbei werden zwei Motoren zur Bewegung einer Karosserie verwendet. Je nach Drehrichtung kann sich der Wagen vorwärts oder rückwärts bewegen. Im entgegengesetzter Richtung der Motoren dreht sich das Auto auf der Stelle. Ein kleiner Servomotor am Bug des Fahrzeugs dreht einen Ultraschallsensor, mit dem das Fahrzeug Hindernisse vor sich erkennen und Maßnahmen zum Ausweichen einleiten kann. Bereits diese geringe Ausstattung genügt, ein Fahrzeug mit eindrucksvollem Funktionsumfang zu bauen.
Inhalte und Aufgaben
Der Kurs begann mit einer Vorstellung der Entwicklungsumgebung. Hierbei ging es vor allem darum, wie Code auf den Arduino überspielt wird und wo sich verschiedene Beispiele finden. Als Programmierkenntnisse wurden lediglich das Erzeugen von Variablen für ganze Zahlen und die Bearbeitung von Entscheidungen vermittelt. Für die potenzielle Fehlersuche gab es zudem eine Erklärung, wie sich vom Arduino ermittelte oder berechnete Werte an den Computer übertragen lassen. Zur Bedienung der verschiedenen, zuvor genannten Komponenten wurden Bibliotheken verwendet. Hierbei handelt es sich um
- NewPing 1.9.1 von Tim Eckel
- Drive 1.0.0 von Oladapo Ajala
- Servo 1.1.3 (Built-In) von Michael Margolis
Die Bibliotheken beinhalten auch Beispiel-Implementierungen, für deren Verständnis lediglich die zuvor genannten Grundlagen notwendig sind.
Fazit
Die SuS waren hauptsächlich damit beschäftigt, Schaltungen nach Vorbild aufzubauen und die Code-Beispiele nachzuvollziehen. Da die meisten SuS noch keine Programmierkenntnisse mitbrachten, betrachteten sie die Komponenten jeweils einzeln, hatten jedoch hierbei schon viel Freude und experimentierten selbstständig. Diejenigen SuS, die bereits programmiert hatten, konnten die einzelnen Bausteine kombinieren und das Auto innerhalb der Woche so zum Fahren bewegen, dass es nicht mit einer Wand kollidierte. Die Hürde für den Umgang mit visuellen Programmiersprachen wie Scratch ist zwar oft geringer, als Fehlschlag konnte ich den Kurs jedoch nicht bezeichnen.