Im Web finden sich aber auch ausgesprochene Perlen: Mein absoluter Hit ist AdvancedArduino. In dieser von einem Russen (Alexandr Grigorev) erstellten Extension ist so ziemlich alles enthalten, was im Standard-MBlock fehlt. Insbesondere sind jeweils bis zu 26 ein- und zweidimensionale Arrays benutzbar. Die in MBlock enthaltenen Listen (=eindimensionale Arrays) stehen nur im Scratch-Modus, nicht im Arduino-Modus zur Verfügung.
Weiterhin sind Routinen enthalten, um den Typ beliebiger Variablen in fast jeden anderen Typ umzuwandeln. Dies ist bei der Arbeit mit Arrays besonders wichtig: Die von MBlock angelegten Variablen haben den Typ Double. Bei der Ausgabe werden sie grundsätzlich mit zwei Nachkommastellen ausgegeben. Sollen Sie als Index in einem Array verwendet werden, meldet der Arduino einen Fehler. Die Umwandlung in int schafft hier Abhilfe.
Das ganz besondere Highlight ist aber die Möglichkeit, beliebigen eigenen Code einzubringen. Hiermit ist die MBlock-Sprache quasi beliebig erweiterbar. Beispiele hierfür findet man unter ⇒Tastatureingabe mit der IR-Fernbedienung.
Wo viel Licht ist, ist aber manchmal auch Schatten: Die Extension AdvancedArduino ist leider nur unvollkommen über viele Einzelbeispiele dokumentiert. Erläuterungen fehlen teilweise völlig. So sind die letzten 21 Blöcke undokumentiert und ihre Funktion ist mir völlig unklar.
Hier die Dokumentation: https://www.lab169.ru/mblock/extensions/advanced-arduino-extension-c-v/
Die sehr lange Liste macht die Benutzung dieser Extension etwas unübersichtlich. Ich habe daher eine stark verkürzte Extension erzeugt. Diese kann hier heruntergeladen werden: AdvancedArduino_Fork.zip (2.9 KB). Um sie zu installieren, muss der Menüpunkt Extensions/Extensions verwalten aufgerufen werden. Beim Druck auf die Schaltfläche
erscheint ein Fenster, mit dem auf der lokalen Festplatte nach der heruntergeladenen Zip-Datei gesucht werden kann. Dabei muss die Voreinstellung für den Dateityp von (*.json) auf (*.zip) geändert werden.
Sofort nach dem Einfügen steht die Extension in der Rubrik Roboter zur Verfügung:
Für die Programmierung des Spiels NIM-" (Pyramide) ⇒Nim-Spiele brauchte ich das bitweise XOR. Dies ist in C++ der ^-Operator. Damit dies auch in MBlock zur Verfügung steht, habe ich die Extension um einen entsprechenden Block (XOR) erweitert:
Bei dieser Gelegenheit habe ich auch drei Blöcke für Kommentare eingefügt. Es gibt zwar in MBlock auch eine Kommentarfunktion, aber diese ist etwas unflexibel in der Handhabung. Außerdem wird sie nicht in das Arduino-Sketch übernommen.
Der // - Kommentar dient insbesondere der Strukturierung des Quelltextes.
Durch den /* und */ Kommentar können leicht bestimmte Programmanweisungen "auskommentiert", also deaktiviert werden.