Eigentlich wollten mein Sohn und ich etwas mit dem Calliope mini auf Open Roberta Lab experimentieren. Aber leider stand der Calliope nicht zur Verfügung.

Daher haben wir uns dazu entschieden auszuprobieren, ob wir einen Arduino mit Scratch programmieren können. Dazu gibt es die besondere Scratch 4 Arduino (S4A) Variante samt einer zugehörigen Firmware für den Arduino. Die genaue Anleitung welche Software man dafür braucht und wie man den Arduino mit der speziellen S4A Firmware bespielt findet man auf der Scratch 4 Arduino Download Seite.

Nachdem wir die Anleitung zur Einrichtung des Arduino für S4A durchgeführt haben, können wir mit unserem ersten Experiment beginnen: eine LED per Scratch ein- und ausschalten. Den Schaltplan dazu sieht wie folgt aus.

Schaltbild 1
Schaltbild 1 – eine LED per Arduino ein- und ausschalten

Genau genommen wollen wir die LED blinken lassen. Dazu verwenden wir eine einfache Endlosschleife, die die D13 Pin abwechseln ein- und ausschalten und dazwischen jeweils 1 Sekunde wartet.

S4A Programmcode zu Experiment 1 – Blinkende LED

Das hat auf Anhieb geklappt. Also haben wir uns gedacht: bohren wir das Ganze noch etwas auf und machen die Blinkfrequenz mit einem Potenziometer einstellbar. Dazu erweitern wir die Schaltung um einen Potenziometer mit nachgeschalteten Widerstand und schließen das Ganze an den Analogeingang A0 an.

Schaltung 2 – Blinkfrequenz per Potentiometer über A0 einstellbar

Entsprechend müssen wir auch den Programmcode anpassen.

S4A Programmcode zu Experiment 2 – Variable Blinkfrequenz

In der Theorie liefert der analoge Eingang A0 Werte zwischen 0 (bei 0 Volt) und 1024 (bei 5 Volt). Falls wir den Potenziometer also auf Maximum (= 5 Volt) stellen, dann sollte die LED zwischen jedem An-Aus-Wechsel ca. 1 Sekunde warten. Drehen wir das Potenziometer auf Minimum (= 0 Volt) stellen, sollte keine Wartezeit zwischen dem Ein-Aus-Wechsel verstreichen, die LED als unendlich schnell blinken.

Wir beobachten aber ein anderes Verhalten. Stellen wir das Potenziometer auf Maximum, blinkt die LED wie erwartet mit ca. 0,5 Hz (ein Ein-Aus-Zyklus dauert 2 Sekunden). Drehen wir das Potenziometer langsam zurück, nimmt die Blinkfrequenz stetig zu. Soweit noch alles in Ordnung. Drehen wir aber weiter, verhält sich die LED ab einem gewissen Punkt sehr komisch, ist manchmal längere Zeit an oder aus und die Zeiten dazwischen verändern sich ständig.

Was geht da vor sich? Kann der Arduino nicht schneller? Nein, der Arduino kann noch sehr viel schneller – er ist immerhin mit 16 MHz getaktet. Liest man aber in der technischen Beschreibung der S4A Applikation nach, so stellt man fest: die S4A Applikation schickt alle 75 ms neue Befehle an den Arduino bzw. liest den Wert der analogen und digitalen Pins aus. Ist die Wartezweit zwischen dem Ein- und Ausschalten der LED kürzer als diese 75 ms, so kommt es zu einem Durcheinander – zumindest nehmen wir dies so wahr.

Eine Wartezeit von 75 ms entspricht einer Frequenz von ca. 13 Hz. Möchte man die LED schneller blinken lassen, so muss man sich etwas anderes einfallen lassen. Aber das werden wir uns heute nicht mehr anschauen.

Abschließend sind wir sehr zufrieden mit dem heutigen Experiment. Es war erstaunlich einfach, den Arduino über S4A anzusteuern und das wird sicher nicht das letzte Mal sein, dass wir hiermit experimentieren.