Mit dieser erweiterten Firmware kann man den Mikrocontroller ohne PC in
TLScript (früher PicoBasic) programmieren. Hierzu muss das Script
TLScriptNano24TPS.ino mit der Arduino-IDE in den Mikrocontroller
geladen werden. Zudem ist etwas zusätzliche Peripherie nötig (siehe
Schaltplan). Dieses Programm wurde für den Arduino Uno und den Arduino
Nano geschrieben (als Board Uno oder Nano auswählen). Ob es auch für
andere Versionen verwendet werden kann, müsste man ausprobieren. Die
Programmierung kann selbstverständlich auch weiterhin vom PC aus
erfolgen.
Zur Vorbereitung muss man das TLScript von Hand in den Programmcode umschlüsseln, z.B. mit der
Zettel-IDE.pdf.
Der Programmcode ist eine vierstellige Hexadezimalzahl. Die vorderen
zwei Ziffern codieren den Befehl, die hinteren beiden den Wert.
Beispiel: 09 FF Pdir = 255
Manche Befehle haben keinen Wert, dann sind die beiden hinteren Ziffern 00.
Beispiel: 28 00 A = A + 1
Editieren des Programms
- Die Taste kurz drücken. Das Programm geht in den Programmiermodus,
die beiden grünen LEDs leuchten auf. Die roten LEDs zeigen die aktuelle
Zeilennummer im Binärcode an, am Anfang also Zeile Null (alle LEDs sind
aus).
- Beim nächsten Tastendruck wird der Befehlscode der aktuellen Zeile angezeigt. Die linke grüne LED leuchtet.
- Beim nächsten Tastendruck wird der Wert angezeigt. Die rechte grüne LED leuchtet.
- Beim nächsten Tastendruck wird die nächste Zeilennummer angezeigt. Beide grüne LEDs leuchten.
Der beschriebene Ablauf wiederholt sich.
- Wenn man einen Befehl oder einen Wert ändern möchte, berührt man mit
dem beweglichen Kabel die gewünschte Zahl an der Widerstandskette. Die
vorderen vier Bits des Codes (Befehl oder Wert) werden angezeigt. Dann
berührt man mit dem Kabel die nächste Zahl, die hinteren vier Bits des
Codes werden angezeigt.
Beispiel: Um „09“ einzugeben, zuerst die „0“ und dann die „9“ berühren.
Wenn es nicht geklappt hat, kann der Vorgang wiederholt werden. Der
nächste Tastendruck zeigt dann – je nach Kontext – das Datenbyte oder
die nächste Zeilennummer an (erkennbar an den grünen LEDs). Ein Tipp:
Die Kontakte der Steckbretter sind oft verhakt und unbrauchbar, weil
man nicht mehrmals ansetzen kann. Der Aufbau der Widerstandskette kann
zum Beispiel mit Reihenklemmen erfolgen.
-Um den Programmiermodus zu verlassen, die Taste so lange drücken, bis
die beiden grünen LEDs verlöschen. Der Programmiermodus kann an jeder
Stelle verlassen werden. Danach startet das Programm automatisch.
Leuchtbild (Beispiel: 09 FF)
Dauerhaftes Speichern des Programms
Das Programm ist zunächst nur im flüchtigen Speicher abgelegt und kann
getestet werden. Um es dauerhaft im EEPROM zu speichern, während des
Programmlaufs eine beliebige Zahl der Widerstandskette berühren. Die
beiden grünen LEDs leuchten kurz auf und das Programm ist gespeichert.
Das Programm ermittelt während des Laufs die letzte Programmzeile.
Gespeichert werden also die Zeilen 0 bis max. Damit das Programm
vollständig gespeichert wird, muss man sicherstellen, dass die letzte
Zeile auch tatsächlich erreicht wird. Danach kann man den Arduino
ausschalten. Beim Wiedereinschalten startet das Programm automatisch.
Programmbeispiel:
Dieses Programm lässt eine an D2 angeschlossene LED blinken. Wichtig
ist, dass am Anfang mit „Pdir =“ festgelegt wird, welche Pins
Ein- bzw. Ausgänge sind. Unterbleibt das, sind alle Pins Eingänge und
es kann nichts ausgegeben werden.
09 FF Pdir = 255
L1:
08 01 Pout = 1
19 FA Delay ms = 250
08 00 Pout = 0
19 FA Delay ms = 250
20 01 Goto L1:
Ein Test mit dem Arduino Nano (B.K.)
Diese Firmware habe ich erfolgreich mit einem Arduino Nano getestet.
Gegen Wackelkontakte und zitternde Hände habe ich einen zusätzlichen
Taster in die Abtastleitung gelegt. Man kann in Ruhe den richtigen
Kontakt suchen und dann auf den gelben Taster drücken. Besonders
hilfreich ist das bei Eingaben wie 00, FF oder 55, weil man dabei das
Kabel stecken lassen kann.
Die Widerstandskette habe ich mit SMD-Widerständen auf eine Stiftleiste
gelötet. Weil ich zufällig viele SMD-Widerstände mit 270 Ohm hatte,
wurden diese verwendet. Den zugehörigen 10k-Widerstand gegen +5V habe
ich entsprechend auf 27 k erhöht.
Fazit: Nach kurzer Übungszeit kann ich nun ohne den PC Scripts ändern und auch komplett eingeben.