About micro:bit UART Terminal
This app communicates between Android and a micro:bit device. You can transmit and receive text in 'notification' and 'indication' mode. The UART communication also has to be implemented at the micro:bit device.
Options:
- Indication: Default micro:bit mode (otherwise notification mode)
- Log: Log to window
- LF: Linefeed added
- CR: Carriage return added
Requirements:
- Min. Android 4.4
- Bluetooth Low Energy (BLE)
- Paired devices
- micro:bit programm (developed by yourself)
MBED example:
#include "MicroBit.h"
#include "MicroBitUARTService.h"
#include "BMP180.h"
MicroBit uBit;
MicroBitUARTService *uart;
BMP180 bmp180(P0_30, P0_0);
char buffer[80];
float pressure,temperature;
int connected = 0;
void onConnected(MicroBitEvent e)
{
uBit.display.scroll("C");
connected = 1;
}
void onDisconnected(MicroBitEvent e)
{
uBit.display.scroll("D");
connected = 0;
}
void onButtonA(MicroBitEvent e)
{
uBit.display.scroll(buffer);
}
void onButtonB(MicroBitEvent e)
{
uBit.display.scroll("SK");
}
/*
IMPORTANT !!!
Oherwise you will run out of memory !
Recommend disabling the DFU and Event services in MicroBitConfig.h since they are not needed here:
microbit->microbit-dal->inc->core->MicroBitConfig.h
#define MICROBIT_BLE_DFU_SERVICE 0
#define MICROBIT_BLE_EVENT_SERVICE 0
#define MICROBIT_SD_GATT_TABLE_SIZE 0x500
*/
int main()
{
bmp180.Initialize(64, BMP180_OSS_ULTRA_LOW_POWER);
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
// Initialise the micro:bit runtime.
uBit.init();
uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected);
uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected);
uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);
uart = new MicroBitUARTService(*uBit.ble, 32, 32);
uBit.display.scroll(":)");
while(1)
{
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
if (!connected) {
uBit.sleep(500);
}
else
{
uart->send(buffer);
uBit.sleep(1000);
}
}
release_fiber();
}
by S####:
It works! Thanks.