Für Interessierte
Wenn man mit den Sachen spielt, ergeben sich natürlich eine Menge neuer Ideen, man probiert aus und erweitert. Einige Sachen sollen hier vorgestellt werden.
Zum einen gibt es die Möglichkeit, andere Hardware anzuschließen. Ein kleines Männchen, das man selbst gestalten kann und das schon Sensoren eingebaut hat, war die erste Idee.
In Sachen Software experimentieren wir auch immer mit anderen Ansätzen. Die erste Idee drehte sich um Zustände, angelehnt an Automatengraphen. Auch andere Entwicklungswerkzeuge sind ein Thema, denn Processing erlaubt zwar die parallele Entwicklung für PC und Android, bereitet dabei aber auch Probleme. JavaScript ist evtl. eine Lösung.
All diese Ansätze laden dazu ein, sie zu verändern. Deswegen findet man auf den Bastler- und Programmiererseiten die Details.
Hardware-Alternativen
Gezeigt wird hier alternative Hardware, die mit den vorgestellten Programmen funktioniert. Dies ist eine Einladung zum Nachbau und vielleicht auch Grundlage eigener Ideen.
ArduMännel
Arbeitet man mit Arduinos, so stellt der Spannungsteiler auch in oberen Klassen immer noch die größte Hürde beim Messen dar. Solche Sachen sind schwer zu verstehen. Ohne Physik gehts eben nicht. Es wäre also schön, etwas zu haben, wo Aktoren und Sensoren samt Spannungsteilern schon verbaut sind. So entstand die Idee, aus Holz ein kleines Männel1 zu bauen. Dieses enthält vier LEDs, zwei LDRs, einen Lautsprecher und einen NTC. Außerdem ist noch ein Bluetooth-Adapter verbaut.
Dieses kann man an jeden Computer anschließen und sofort loslegen. Wer will, kann das Männel natürlich auch verzieren, also aus Pappe oder Papier eine Front bauen.
Das Männel kann man klassisch über die Arduino-Software programmieren. Aber auch SimpleProg und StateProg sind dafür ausgelegt. Hier muss man einfach in den Einstellungen umschalten. Programmiert man mit der Arduino-Software, muss man die Anschlüsse kennen. Diese sind unten aufgelistet. In SimpleProg und StateProg ist bereits alles vorbereitet.
Eingang | Sensor |
---|---|
A0 | Licht links |
A1 | Licht rechts |
A2 | NTC (Temperatur) |
Die Ausgänge sind wieder PWM-Signale, damit man auch Helligkeiten einstellen kann. D0 und D1 sind für die serielle Kommunikation mit dem Computer, D11 und D12 für die Kommunikation über Bluetooth reserviert.
Eingang | Ausgang |
---|---|
D3 | Auge links außen |
D5 | Auge links innen |
D6 | Auge rechts innen |
D9 | Auge rechts außen |
D10 | Lautsprecher |
Was kann man damit machen?
Nun Töne ausgeben, Augen blinken lassen, nach links bzw. rechts gucken lassen, Schlafen (Augen aus) bei Dunkelheit usw. Reizvoll erscheint, mehrere Männeln zusammen “singen” zu lassen. Das haben wir aber noch nicht probiert.
Im LBZ sind momentan vier Männel vorrätig. Das oben gezeigte Design stammt von meiner Schwester Dagmar Flemming.
Arduino pur
Natürlich kann man auch einen blanken Arduino Uno nehmen. Aber lohnt eine Anpassung des Programms SimpleProg dafür? Nein, denn SimpleProg gibt Befehle vor, deren konkrete technische Umsetzung (was wird wie über welches Pin ausgegeben?) interessiert nicht. Wohl aber kam beim komplexeren StateProg sehr schnell der Wunsch auf, den Arduino direkt zu verwenden. Dort ist er auf dem Init-Bildschirm auch auswählbar.
Allerdings gelten ein paar Einschränkungen. Der Arduino braucht wieder die Firmware, somit sind D0 und D1 für die serielle Kommunikation reserviert. Auch D11 und D12 fallen weg, denn natürlich kann man auf den Arduino einen Bluetooth-Adapter stecken (StateProg ist auf dem Tablet auch viel schöner zu bedienen).
Software-Alternativen
Da die Software mit der Arduino-Firmware über ein definiertes Protokoll kommuniziert, kann man natürlich auch andere Software auf PC- oder Tablet-Seite verwenden. Es gibt verschiedene Gründe, dies zu tun.
Zum ersten ist da vielleicht die Unzufriedenheit mit dem Programm oder der Wunsch, Werkzeuge für ältere Schüler anzubieten. Ein Versuch eines zustandsbasierten Programmes ist StateProg.
Weiterhin muss man auch in die Zukunft schauen. Tablets werden billiger und Windows raubt einen manchmal den letzten Nerv (besonders in Verbindung mit dem Arduino). Es ist also an der Zeit, andere Entwicklungsumgebungen zu testen. Momentan erscheint JavaScript vielversprechend, Versuche sollen hier vorgestellt werden.
StateProg
StateProg ist ein zustandsbasierter Ansatz und wie SimpleProg in Processing geschrieben. Das meiste (Verbindungsaufbau, Installation etc.) für SimpleProg Gesagte gilt auch für dieses Programm. Die Unterschiede beziehen sich naturgemäß auf die Programmierung. Dazu wollen wir hier einige Worte verlieren.
Neben Box und Männel wird auch der blanke UNO unterstützt.
Um einen Überblick über die Möglichkeiten von StateProg zu bekommen, lohnt ein Blick auf den zentralen Bildschirm, der nach der üblichen Verbindungsaufnahme (USB, Bluetooth) erscheint.
Links ist das Menü, das verkleinerbar ist, um mehr Platz für den Zustandsgraphen zu haben. Ein völliges Ausblenden erschien nicht sinnvoll.
Der oberste Block betrifft die Zustände.
- Neu: erstellt einen Zustand links oben. Es können keine Namen vergeben werden, um die Tabletbedienung einfach zu halten. Zustände werden automatisch mit S0, S1 usw. bezeichnet.
- Edit: Der aktuell angewählte Zustand kann bearbeitet werden.
- Löschen: Der aktuelle Zustand wird gelöscht.
- Anfang: Zieht man mit der Maus im leeren Feld, kann man den ganzen Graphen verschieben, auch aus dem Sichtbereich hinaus. Mit “Anfang” wird das Offset für das Zeichnen wieder auf 0 gesetzt, der Graph also links oben wie am Anfang angepasst.
- Kreis: Hat man viele Zustände und möchte diese nicht per Hand ordnen, hilft vielleicht die Anordnung im Kreis.
Der nächste Block behandelt die Ausführung.
- Schritt: Es wird ein Programmschritt gemacht. Der Folgezustand wird geschaltet und der damit verbundene Befehl an den Arduino zum sofortigen Ausführen geschickt.
- Lauf: Das Programm wird schrittweise ausgeführt. Dabei wird das Programm nicht auf den Arduino übertragen, sondern die Befehle werden wie in der Fernbedienung zum sofortigen Ausführen übertragen. Nach jedem Befehl macht das Programm eine einstellbare Pause. Der aktuelle Zustand wird angezeigt. Dieses Verfahren eignet sich also gut für Tests und Demonstration der Zustandsumschaltung. Beim Lauf schaltet die Anzeige auf Halt, wodurch mit einem weiteren Klick auf den Button das Programm angehalten werden kann.
- Senden: Das Programm wird wie bei SimpleProg an den Arduino geschickt. Die Ausführung ist somit schneller und das Programm bleibt auf dem Arduino. Achtung, der Arduino hat nur Speicher für 38 Zustandswechsel.
- Anhalten: An den Arduino wird ein Stopp-Befehl geschickt.
- Reset: Das Programm wird wieder in den Anfangszustand versetzt.
- Löschen: Das Programm wird (ohne weitere Warnung!) gelöscht.
Der letzte Block enthält noch ein paar allgemeine Sachen.
- Speichern: Im Gegensatz zu SimpleProg gibt es die Möglichkeit, Programme zu speichern. Um die Bedienung vor allem beim Tablet einfach zu halten, gibt es nur 6 Slots, die automatisch mit dem entsprechendem Datum gefüllt werden.
- Laden: Durch Klick auf den entsprechenden Slot wird das Programm geladen.
- Fernbedienung. Wie SimpleProg hat auch StateProg eine (ähnlich aufgebaute) Fernbedienung.
- Init: Hier kann man die Zielhardware, aber auch die Wartezeit bei “Lauf” einstellen.
Der hier noch aufgeführte Roboter war ein Versuch, ein Fahrgestell mit Arduino und Minibreadboard (auf welchem ein 293 sitzt) zu bauen. Momentaner Stand ist, dass Aufwand und Nutzen in keinem guten Verhältnis stehen.
Ganz unten auf dem zentralen Bildschirm stehen noch die Sensorwerte. Da zu diesem Zeitpunkt gerade das Männel eingestellt war, sind nur drei zu sehen.
Programmierung
Zur Illustration der Programmiertechnik sollen wieder die beiden Beispiele Blinken und Helligkeitssschalter herhalten. Ein wenig Vorwissen in Bezug auf Zustandsgraphen schadet nicht.
Das Blinkprogramm
Das Blinkprogramm besteht wieder aus vier Befehlen: Lampe an - Warten - Lampe aus - Warten. Nun sind diese vier Befehle an Zustände gebunden. Ein Zustandswechsel kann immer oder bei einem bestimmten Sensorwert (wieder Vergleich mit < oder >) erfolgen. Folglich braucht man vier Zustände, deren Zustandswechsel immer vollzogen werden.
Zuerst erzeugt man sich vier Zustände (mit Neu, S0 bis S3) und verteilt diese. Anschließend wählt man S0 und bearbeitet diesen mit Edit.
Es gibt nur einen Wechsel. Man trägt (analog zu SimpleProg durch Anklicken) ein, dass Immer die Lampe 1 angeschaltet wird. Als neuer Zustand wird S1 gewählt.
Analog trägt man bei den anderen Zuständen die Aktionen (“Warte kurz” und “Lampe 1 = 0” ) ein. Der Zustand S3 verzweigt dann wieder auf S0. Ist alles ok, bekommt man folgendes Bild.
Nun kann man per Einzelschritt oder Lauf durch das Programm schreiten oder selbiges an den Arduino schicken.
Der Helligkeitsschalter
Soll bei Dunkelheit eine Lampe angehen, dann braucht man nur zwei Zustände: S0 mit Lampe aus (bzw. “Es ist hell”) und S1 mit Lampe an (bzw. “Es ist dunkel”). Es gilt wieder, dass als Mitte zwischen hell und dunkel (willkürlich) die 50 gewählt wird. Bei Dunkelheit werden die Werte größer.
Es ergibt sich somit dieses kleine Programm. Wie man sieht, wurde in eine ordentlcihe Linienführung der Kanten des Graphen noch keine Arbeit investiert.
Männel: sächsisch für Männchen, auch Männel, Martin - legendärer Torhüter des FC Erzgebirge Aue↩