An dem Projekt, das ich hier vorstellen möchte, arbeite ich schon seit sehr langer Zeit. Bevor es komplett in Vergessenheit gerät, wollte ich zumindest den aktuellen Stand als BETA Version präsentieren. Der Name „LED-BASIC visual“ ist der vorläufige Titel bis jemandem eine bessere Bezeichnung einfällt. Das Projekt ist eine Entwicklungsumgebung, mit der man anhand von vorgegebenen Blöcken direkt im Browser Anwendungen für die LED-BASIC Geräte schreiben bzw. zusammen-klicken kann. Als Unterbau dient Blockly von Google.
Zum Starten von „LED-BASIC visual“ öffnet man einfach die URL https://www.led-basic.de/blockly/. Zum Auftakt gibt es erst nur eine unterstützte Komponente – das LED-BASIC-PICO Basismodul. Andere LED-Basic kompatible Geräte werden nach und nach eingepflegt, sofern überhaupt Interesse an dem Projekt besteht.
Die Oberfläche besteht aus mehreren Bereichen.
Menüleiste
Die Leiste oben enthält einige Buttons (von links nach rechts)
New – zum Erstellen eines neuen Programms
Open – zum Öffnen eines vorhandenen Programms aus einer XML Datei
Save XML – zum Speichern des aktuellen Programms als XML/Blockly Datei
Save BAS – zum Speichern des aktuellen Programms als LED-Basic Code
Examples – Auswahlliste zum Öffnen eines vorhandenen Beispielprogramms
Run – Upload des Programms zum Modul (nur Chrome)
Target Device – Auswahl einer LED Basic Komponente, für die das Programm bestimmt ist. Aktuell steht nur das PICO Modul zur Auswahl
Connected Device – Auswahl eines angeschlossenen LED Basic Geräts (nur Chrome);
Die Buttons Run und Connected Devices sind nur im Chrome Browser verfügbar, unten mehr Infos dazu.
Leiste mit Blöcken
Die Menüleiste auf der linken Seite verbirgt Sprachkonstrukte wie Schleife, Bedingungen sowie Befehle zum Steuern der LEDs und anderer Komponenten. Die Gruppierung der Elemente ist etwas willkürlich. Optimierungsvorschläge sind willkommen, vor allem für oft verwendete Blöcke.
Hinweis:
Nicht alle Blöcke entsprechen 1:1 einem LED-BASIC Befehlt. Manche Blöcke abstrahieren die Programmlogik dahinter, um die Handhabung zu vereinfachen. So entspricht z.B. der Block „Activate display module“ (Extra-Gruppe) dem Befehl IO.sys(501, 1). Bei LED-Befehlen für die Displays folgt der Index der Stellen den natürlichen Zahlen, sprich erste Anzeige des Displays hat den Index 1.
Arbeitsbereich
Der Hauptbereich in der Mitte ist zum Zusammenstellen des Programms. Die Blöcke können hier frei verschoben und kombiniert werden. Bei einem leeren neuen Projekt wird automatisch eine leere Schleife eingefügt. Blöcke vor dieser Schleife werden zur Initialisierung beim Start verwendet. Die restliche Logik kommt in die Hauptschleife. Häufig verwendete Blöcke können einfach per Copy&Paste dupliziert werden ohne auf das Menü mit Blöcken links zugreifen zu müssen.
Generierter Code
Über den Klick auf die Schaltfläche rechts wird der Bereich mit generiertem Code geöffnet/geschlossen. Beim Klick in diesen Bereich wird der Code automatisch in die Zwischenablage kopiert, sodass er in den normalen LED-BASIC Editor kopiert werden kann. Viel komfortabler ist natürlich der direkt Upload vom Code aus der Webseite heraus.
WebUSB
Google hat vor einiger Zeit in seinen eigenen Browser Chrome eine Möglichkeit eingebaut, auf die USB Gerät zuzugreifen. Die Schnittstelle heißt WebUSB und ist per Default in Chrome aktiviert. Den Zugriff auf die Gerät bekommen die Webseiten jedoch nicht automatisch, der Benutzer muss die Freigabe explizit erlauben. Beim ersten Besuch der Webseite hat sie dementsprechend keine Rechte für den Zugriff auf die Hardware – erkennbar an „Select Port“ ganz rechts.
Mac und Linux User müssen nichts weiter tun, mit dem Klick auf den „Run“ Button wird das Programm über die WebUSB Schnittstelle zum Gerät übertragen, Windows User müssen leider noch Hand am System anlegen, damit es funktioniert.
Unter Windows wird für LED-Basic Geräte bekanntlich der COM-Port-Treiber installiert. Das hat zur Folge, dass diese USB Geräte vom System blockiert werden und nicht mehr direkt angesprochen werden können. Um Chrome den Zugriff unter Windows dennoch zu ermöglichen, muss ein alternativer Treiber installiert werden. Leider hat das auch zur Folge, dass der Original LED-Basic Editor das Modul nicht mehr erkennt und damit nicht mehr kommunizieren kann. Abhilfe schafft hier nur die Deinstallation des alternativen Treibers, damit wieder der COM-Port im System erscheint. Alternativ dazu kann der Visual Code Editor mit der LED-Basic Erweiterung verwendet werden. Die nächste Version der Erweiterung wird in der Lage sein, den Code unter Windows auch mit dem alternativen Treiber hoch zu laden.
Hallo Daniel,
wir werden mal etwas experimentieren mit deinem super Visual-Basic.
Das Uploaden ist jetzt nicht so schlimm. Man kann den Code generiren und dann zur Not mit LED-Basic in die Komponente schaufeln.
Auf jeden Fall sehr spannend 🙂
Gruß
Vanessa
Hallo Daniel,
versuche mal folgendes:
for i = 0 to 5
for z = 0 to 5
LED.pchar(z, read 50, i + z)
LED.update()
next z
delay 150
next i
Wir denken, dass in der LED.pchar Funktion noch ein Fehler ist.
Die Variable z lässt sich nicht einfügen.
Gruß
Vanessa
Hi Vanessa,
das sollte jetzt gehen. Auch der Data Block sollte jetzt korrekt aus XML geladen werden.
Gruß