- Discovery
- Connecting and disconnecting
- Accelerometer
- Buttons
- Pin IO
- LED Matrix
- Magnetometer
- Temperature
- UART
- Event
var BBCMicrobit = require('bbc-microbit');
BBCMicrobit.discover(callback(microbit));
function onDiscover(microbit) {
// ...
}
BBCMicrobit.discoverAll(onDiscover);
BBCMicrobit.stopDiscoverAll(onDiscover);
BBCMicrobit.discoverById(id, callback(microbit));
BBCMicrobit.discoverByAddress(address, callback(microbit));
microbit = {
id: "<peripheral id>",
address: "<BT address>"
};
microbit.connectAndSetUp(callback(error));
microbit.disconnect(callback);
Add event listener for when micro:bit disconnects:
microbit.once('disconnect', callback);
microbit.readDeviceName(callback(error, deviceName));
microbit.readModelNumber(callback(error, modelNumber));
microbit.readSerialNumber(callback(error, serialNumber));
microbit.readFirmwareRevision(callback(error, firmwareRevision));
Units for x
, y
, and z
is G's.
Read or write the period
. Support values are: 1, 2, 5, 10, 20, 80, 160, or 640 ms.
microbit.readAccelerometerPeriod(callback(error, period));
microbit.writeAccelerometerPeriod(period, callback(error));
microbit.readAccelerometer(callback(error, x, y, z));
microbit.subscribeAccelerometer(callback(error));
microbit.unsubscribeAccelerometer(callback(error));
microbit.on('accelerometerChange', function(x, y, z) {
// ...
});
// for both buttons
microbit.subscribeButtons(callback(error));
microbit.unsubscribeButtons(callback(error));
// just button A
microbit.subscribeButtonA(callback(error));
microbit.unsubscribeButtonA(callback(error));
// just button B
microbit.subscribeButtonB(callback(error));
microbit.unsubscribeButtonB(callback(error));
microbit.on('buttonAChange', function(value) {
// ...
});
microbit.on('buttonBChange', function(value) {
// ...
});
value
interpretation:
0
: not pressed1
: pressed2
: long press
pin
must be between 0
and 20
.
value
must be between 0
and 255
.
// AD mode
microbit.pinAnalog(pin, callback(error));
microbit.pinDigital(pin, callback(error));
// IO mode
microbit.pinInput(pin, callback(error));
microbit.pinOutput(pin, callback(error));
microbit.readPin(pin, callback(error, value)); // pin must be configured as input
microbit.writePin(pin, value, callback(error)); // pin must be configured as output
microbit.subscribePinData(callback(error));
microbit.unsubscribePinData(callback(error));
microbit.on('pinDataChange', function(pin, value) {
// ...
});
// data is a Buffer with format: <pin> <value>, ...
microbit.readPinData(callback(error, data));
microbit.writePinData(data, callback(error));
// value is a buffer, n-bit of 0 means pin n is in digital mode, 1 means analog mode
microbit.readPinAdConfiguration(callback(error, value));
microbit.writePinAdConfiguration(value, callback(error));
// value is a buffer, n-bit of 0 means pin n is in output mode, 1 means input mode
microbit.readPinIoConfiguration(callback(error, value));
microbit.writePinIoConfiguration(value, callback(error));
value
is a 5 byte Buffer. Each byte corresponds to a row, and column value is the n'th bit. 0
for off, 1
for on.
microbit.readLedMatrixState(callback(error, value));
microbit.writeLedMatrixState(value, callback(error));
text
is a string that must be 20 characters or less
microbit.writeLedText(text, callback(error));
delay
is scrolling delay of text in ms.
microbit.readLedScrollingDelay(callback(error, delay));
microbit.writeLedScrollingDelay(delar, callback(error));
Read or write the period
. Support values are: 1, 2, 5, 10, 20, 80, 160, or 640 ms.
microbit.readMagnetometerPeriod(callback(error, period));
microbit.writeMagnetometerPeriod(period, callback(error));
microbit.readMagnetometer(callback(error, x, y, z));
microbit.readMagnetometerBearing(callback(error, bearing));
// x, y, and z values
microbit.subscribeMagnetometer(callback(error));
microbit.unsubscribeMagnetometer(callback(error));
// bearing
microbit.subscribeMagnetometerBearing(callback(error));
microbit.unsubscribeMagnetometerBearing(callback(error));
microbit.on('magnetometerChange', function(x, y, z) {
// ...
});
microbit.on('magnetometerBearingChange', function(bearing) {
// ...
});
Units for temperature
is °C.
period
is in ms.
microbit.readTemperaturePeriod(callback(error, period));
microbit.writeTemperaturePeriod(period, callback(error));
microbit.readTemperature(callback(error, temperature));
microbit.subscribeTemperature(callback(error));
microbit.unsubscribeTemperature(callback(error));
microbit.on('temperatureChange', function(temperature) {
// ...
});
NOTE: UART service does nothing currently. It does not bridge the hardware serial pins to BLE!
data
is a buffer.
microbit.subscribeUart(callback(error));
microbit.unsubscribeUart(callback(error));
microbit.on('uartData', function(data) {
// ...
});
microbit.writeUart(data, callback(error));
Events come in two varieties, reflected by the two corresponding characteristics:
Micro:bit Events emanate from the micro:bit and may be notified to the connected client.
Client Events emanate from the connected client and may be written to the connected micro:bit
microbit.writeEvent(id, value, callback);
microbit.subscribeEvents(id, value, callback(error));
microbit.unsubscribeEvent(callback(error));
microbit.on('event', function(id, value) {
// ...
});