This app communicates between Android and a micro:bit device. You can tranmit and receive text in 'notifivation' and 'indication' mode. The UART communication also has to be implemented at the micro:bit device.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();}