Programming Experience Toolkit (PXT)
Am Micro:bit wird intensiv gearbeitet. Die alte Seite microbit.co.uk ist jetzt auf microbit.org
umgezogen. Und dort findet man neben den schon bekannten Umgebungen
einen neuen Editor: Microsoft Programming Experience Toolkit (PXT)
in der Beta-Version. Der Block-Editor ist hier mit JavaScript
verbunden. Dass es eine Beata-Version ist, sieht man noch an vielen
kleinen Details, z.B. an der eigenwilligen Mischung deutscher und
englischer Begriffe.
Aber PXT hat etwas, was ich bei den
Blocks vermisst hatte: Eine serielle Schnittstelle über USB. Mit serial
write number und serial write line ist das ganz einfach. In diesem Fall
sollte ein Analogwert an den PC geschickt werden. Das Programm lässt
sich in dieser Form derzeit anscheinend noch nicht auf dem eigenen PC
speichern. Aber das Hexfile kann man sich aufheben.
Die
Messwerte kommen dann tatsächlich wie gewünscht an einem Terminal auf
dem PC an. Die Default-Übertragungsgeschwindigkeit ist 115200 Baud.
Alles perfekt.
Das
Programm kann jederzeit in JavaSript umgewandelt werden. In dieser Form
kann man den Text kopieren und als Textfile abspeichern. Eine Variable
wird durch die zusätzliche Zeile let U = 0 am Anfang deklariert. Die
Schreibweise für eine Endlosschleife mit ihren vielen Klammern und
Schnickschnack basic.forever(() => { ... })
ist gewöhnungsbedürftig, macht aber keinen Stress, weil sie automatisch
erzeugt wird.
let U = 0
basic.forever(() => {
U = pins.analogReadPin(AnalogPin.P1)
// basic.showNumber(U)
serial.writeNumber(U)
serial.writeLine("")
basic.pause(1000)
})
Eine
Besonderheit in PCT ist, dass jetzt auch der Weg zurück in die
Block-Form erlaubt ist. Und Änderungen am Quelltext werden korrekt
umgesetzt. In der Script-Form sieht man, dass basic.showNumber(U)
auskommentiert ist. Der Befehl stand ursprünglich mal als Bock im
Programm und wurde dann im Script auskommentiert. Daraufhin war er als
Block verschwinden. Nun kann ich die Auskommentierung entfernen und
vielleicht noch den Eingangskanal auf P2 ändern:
let U = 0
basic.forever(() => {
U = pins.analogReadPin(AnalogPin.P2)
basic.showNumber(U)
serial.writeNumber(U)
serial.writeLine("")
basic.pause(1000)
})
Dann alles zurückwandeln, und schon sind die Änderungen auch in den Blocks sichtbar.
Bei
der Gelegenheit wurde dann auch für ein Bock für die Deklaration der
Variablen U vorangestellt. Die Formulierung "Ändere U auf 0" finde ich
sehr kreativ. Kann aber durchaus sein, dass sich das noch mal ändert.
In JavaScript kann man übrigens auch eigene Funktionen bilden. Aber
dann es ist vorbei mit der Rückwärts-Kompatibilität. Die Übersetzung in
Blocks ist dann nicht mehr möglich.
Ein
Highlight ist die Peer-to-Peer Funkverbindung zwischen zwei oder mehr
Microbits. Dabei wird die Bluetooth-Hardware verwendet, nicht aber das
Bluetooth-Protokoll. So etwas gab es bisher schon in JavaScript, nun
aber auch in den Blocks. Eine feine Sache, wenn man mal Messwerte oder
Steuerdaten drahtlos übertragen will.
Elektronik-Labor Projekte Microbit