Die JavaScript-Bibliothek aus dem BoardControl-Paket zur Fernsteuerung eines BBC micro:bit enthält einen Namespace namens MicroBit
mit folgendem Inhalt:
WebBTisSupported
true
falls der benutzte Browser Web Bluetooth unterstützt und false
falls nichtWebBTisAvailable
true
falls Web Bluetooth eingeschaltet ist und false
falls nicht. Falls Bluetooth im laufenden Betrieb ein- und ausgeschaltet wird, reflektiert WebBTisAvailable
den jeweils aktuellen ZustandBoard
Die 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 ():boolean
true
falls eine Verbindung zu einem BCC micro:bit besteht oder false
sonst
async connect ():Promise<Board>
async disconnect ():Promise<Board>
DeviceInfoServiceIsSupported ():boolean
true
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 ():boolean
true
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):Board
AccelerometerData
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 ():boolean
true
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):Board
MagnetometerData
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):Board
MagnetometerBearing
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):Board
MagnetometerCalibrationState
registrieren, wird das angeschlossene Board veranlasst, bei Änderungen des Kalibrierungszustandes automatisch den neuen Zustand zu verschickenTemperatureServiceIsSupported ():boolean
true
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):Board
Temperature
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 ():boolean
true
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):Board
ButtonA
registrieren, wird das angeschlossene Board veranlasst, Zustandsänderungen des linken Tasters automatisch zu melden
async ButtonB ():Promise<number>
on('ButtonB', Handler:Function):Board
ButtonA
registrieren, wird das angeschlossene Board veranlasst, Zustandsänderungen des rechten Tasters automatisch zu meldenLEDServiceIsSupported ():boolean
true
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 ():boolean
true
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):Board
EventHandler
als Handler für das Event EventName
ein. Ist die Funktion dort bereits eingetragen, so passiert nichts
off ():Board
off (EventName:string):Board
EventName
registrierten Event Handler und lässt die Registrierungen für alle anderen Events unbehelligt
off (EventName:string, EventHandler:Function):Board
EventHandler
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[]):Board
EventName
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. |