Arduino TLScript-TPS

von Günther Zivny

Elektronik-Labor  Projekte  Mikrocontroller  TLScript  




Download: TLScriptNano24TPS.zip

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.
 

Elektronik-Labor  Projekte  Mikrocontroller  TLScript