Die JavaScript-Bibliothek aus dem BoardControl-Paket zur Fernsteuerung eines BBC micro:bit enthält einen Namespace namens MicroBit mit folgendem Inhalt:
WebBTisSupportedtrue falls der benutzte Browser Web Bluetooth unterstützt und false falls nichtWebBTisAvailabletrue falls Web Bluetooth eingeschaltet ist und false falls nicht. Falls Bluetooth im laufenden Betrieb ein- und ausgeschaltet wird, reflektiert WebBTisAvailable den jeweils aktuellen ZustandBoardDie Schnittstelle der Klasse MicroBit.Board enthält u.a. eine Reihe von Akzessor-Methoden ähnlich wie sie jQuery definiert:
Der Grund für diese Art der Modellierung ist die asynchrone Natur aller Zugriffe auf WebBT-Geräte, die von JavaScript-Gettern und -Settern nicht abgebildet werden kann, von Methoden aber sehr wohl.
Aufrufe mit Seiteneffekten liefern die Zielinstanz der Methode zurück - auf diese Weise können mehrere Methodenaufrufe hintereinander geschaltet werden.
Instanzen der Klasse MicroBit.Board bieten folgende Methoden an:
isConnected ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht oder false sonst
async connect ():Promise<Board>async disconnect ():Promise<Board>DeviceInfoServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "Device Information Service" anbietet oder false sonst
async ModelNumber ():Promise<string>async SerialNumber ():Promise<string>async FirmwareRevision ():Promise<string>async HardwareRevision ():Promise<string>async ManufacturerName ():Promise<string>AccelerometerServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "Accelerometer Service" anbietet oder false sonst
async AccelerometerData ():Promise<{x:number,y:number,z:number}>x,y und z in Vielfachen der Erdbeschleunigung g
on('AccelerometerData', Handler:Function):BoardAccelerometerData registrieren, wird das angeschlossene Board veranlasst, im Abstand von jeweils AccelerometerInterval Millisekunden laufend neue Accelerometer-Messwerte zu verschicken
async AccelerometerInterval ():Promise<number>async AccelerometerInterval (Interval:number):Promise<Board>MagnetometerServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "Magnetometer Service" anbietet oder false sonst
async MagnetometerData ():Promise<{x:number,y:number,z:number}>x,y und z in Mikro-Tesla
on('MagnetometerData', Handler:Function):BoardMagnetometerData registrieren, wird das angeschlossene Board veranlasst, im Abstand von jeweils MagnetometerInterval Millisekunden laufend neue Magnetometer-Messwerte zu verschicken
async MagnetometerInterval ():Promise<number>async MagnetometerInterval (Interval:number):Promise<Board>async MagnetometerBearing ():Promise<number>on('MagnetometerBearing', Handler:Function):BoardMagnetometerBearing registrieren, wird das angeschlossene Board veranlasst, im Abstand von jeweils MagnetometerInterval Millisekunden laufend neue Richtungswerte zu verschicken
async MagnetometerCalibrationState (State:1):Promise<Board>on('MagnetometerCalibrationState', Handler:Function):BoardMagnetometerCalibrationState registrieren, wird das angeschlossene Board veranlasst, bei Änderungen des Kalibrierungszustandes automatisch den neuen Zustand zu verschickenTemperatureServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "Temperature Service" anbietet oder false sonst
async Temperature ():Promise<number>on('Temperature', Handler:Function):BoardTemperature registrieren, wird das angeschlossene Board veranlasst, im Abstand von jeweils TemperatureInterval Millisekunden laufend neue Messwerte zu verschicken
async TemperatureInterval ():Promise<number>async TemperatureInterval (Interval:number):Promise<Board>ButtonServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "Button Service" anbietet oder false sonst
async ButtonA ():Promise<number>on('ButtonA', Handler:Function):BoardButtonA registrieren, wird das angeschlossene Board veranlasst, Zustandsänderungen des linken Tasters automatisch zu melden
async ButtonB ():Promise<number>on('ButtonB', Handler:Function):BoardButtonA registrieren, wird das angeschlossene Board veranlasst, Zustandsänderungen des rechten Tasters automatisch zu meldenLEDServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "LED Service" anbietet oder false sonst
async LEDMatrix ():Promise<number>async LEDMatrix (Bitmask:number):Promise<Board>Bitmask eine Ganzzahl übergeben, deren Bits einzelnen Leuchtdioden aus de Matrix zugeordnet sind: Bit 24 entspricht der linken oberen LED (Zeile 0, Spalte 0), Bit 0 der rechten unteren (Zeile 4, Spalte 4). Die anderen LEDs werden zeilenweise von links nach rechts den restlichen Bits zugeordnet
async LEDText (Text:string):Promise<Board>Text auf der LED-Matrix (einmalig) von rechts nach links durchlaufen. Text darf bis zu 20 ASCII-Zeichen enthalten, andere Zeichen als diejenigen aus dem ASCII-Zeichensatz werden nicht angezeigt
async LEDScrollDelay ():Promise<number>async LEDScrollDelay (Interval:number):Promise<Board>IOPinServiceIsSupported ():booleantrue falls eine Verbindung zu einem BCC micro:bit besteht und das Gerät einen "IO Pin Service" anbietet oder false sonst
async IOPinDirections ():Promise<number>async IOPinDirections (Bitmask:number):Promise<Board>Bitmask eine Ganzzahl übergeben, deren n-tes Bit dem n-ten Pin zugeordnet ist. Ein gelöschtes Bit steht für einen Ausgabe-Pin, ein gesetztes Bit für einen Eingabe-Pin. Achtung: die Bedeutung der Pins 17...19 ist dem Autor unklar!
async IOPinModes ():Promise<number>async IOPinModes (Bitmask:number):Promise<Board>Bitmask eine Ganzzahl übergeben, deren n-tes Bit dem n-ten Pin zugeordnet ist. Ein gelöschtes Bit steht für einen digitalen Pin, ein gesetztes Bit für einen analogen. Achtung: die Bedeutung der Pins 17...19 ist dem Autor unklar!
async IOPinData ():Promise<{Pin:number,Value:number}[]>Pin und Value: Pin gibt die Nummer eines Pins an (im Bereich 0...20), Value dessen Wert - für digitale Pins ist Value entweder 0 oder 1, für analoge Pins liegt er im Bereich 0...255. Ausgabe-Pins tauchen in der gelieferten Liste niemals auf
async IOPinData (DataList:{Pin:number,Value:number}[]):Promise<Board>DataList eine Liste von Objekten mit den Feldern Pin und Value übergeben: Pin gibt die Nummer des zu ändernden Pins an (im Bereich 0...20), Value den zu setzenden Wert (im Bereich 0...255) - digitale Pins werden gelöscht, wenn der gegebene Wert 0 ist, anderenfalls werden sie gesetzt. Eingabe-Pins, die in DataList auftauchen, bleiben unbehelligt
async IOPinPWMControl (DataList:{Pin:number,Value:number,Period:number}[]):Promise<Board>DataList eine Liste von bis zu zwei Objekten mit den Feldern Pin, Period und Value übergeben: Pin gibt die Nummer des zu ändernden Pins an (zulässige Werte sind 0...4 oder 10), Period die Periode der PWM-Ausgabe (gemessen in Mikrosekunden, im Bereich 0...4294967295) und Value bestimmt die relative Dauer eines einzelnen Pulses (im Bereich 0...1024: 0 schaltet die PWM-Ausgabe ab, 1 erzeugt den kürzestmöglichen Puls, 1024 den längstmöglichen)Die Belegung der einzelnen Anschlüsse und deren Bedeutung finden Sie in [3]
on (EventName:string, EventHandler:Function):BoardEventHandler als Handler für das Event EventName ein. Ist die Funktion dort bereits eingetragen, so passiert nichts
off ():Boardoff (EventName:string):BoardEventName registrierten Event Handler und lässt die Registrierungen für alle anderen Events unbehelligt
off (EventName:string, EventHandler:Function):BoardEventHandler aus der Liste aller für das Event EventName registrierten Event Handler und lässt alle anderen unbehelligt. Ist die Funktion nicht registriert, passiert nichts.
dispatchEvent (EventName:string, ...ArgumentList:any[]):BoardEventName registrierten Event Handler mit den restlichen beim Aufruf von dispatchEvent mitgegebenen Argumenten auf| [1] | Lancaster University BBC micro:bit Bluetooth Profile (siehe https://lancaster-university.github.io/microbit-docs/ble/profile/) Der BBC micro:bit stellt über Bluetooth LE eine Reihe von Services bereit, mit deren Hilfe der Einplatinen-Computer gesteuert werden kann. Auf der genannten Seite finden Sie eine vereinfachte Beschreibung dieser Dienste | |
| [2] | Lancaster University Bluetooth Developer Studio Level 3 Profile Report (siehe https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html) Der BBC micro:bit stellt über Bluetooth LE eine Reihe von Services bereit, mit deren Hilfe der Einplatinen-Computer gesteuert werden kann. Auf der genannten Seite finden Sie eine Spezifikation des zugehörigen Bluetooth-Profiles. | |
| [3] | Micro:bit Educational Foundation Edge Connector & micro:bit pinout (siehe https://tech.microbit.org/hardware/edgeconnector/) Die genannte Seite informiert über die Belegung der Anschlüsse auf dem Platinenstecker eines BBC micro:bit sowie deren interne Verwendung und Beschaltung. |