Un programme d'essai pour les Terminales NSI

Dependencies:   microbit

Committer:
davsel
Date:
Wed Feb 17 22:46:32 2021 +0000
Revision:
1:583b68b31708
Parent:
0:0041f35b0c4c
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LancasterUniversity 0:0041f35b0c4c 1 #include "MicroBit.h"
davsel 1:583b68b31708 2 #include "MicroBitUARTService.h"
LancasterUniversity 0:0041f35b0c4c 3
LancasterUniversity 0:0041f35b0c4c 4 MicroBit uBit;
davsel 1:583b68b31708 5 MicroBitUARTService *uart;
davsel 1:583b68b31708 6
davsel 1:583b68b31708 7 int connected = 0;
davsel 1:583b68b31708 8
davsel 1:583b68b31708 9 void onConnected(MicroBitEvent)
davsel 1:583b68b31708 10 {
davsel 1:583b68b31708 11
davsel 1:583b68b31708 12 uBit.display.scroll("C");
davsel 1:583b68b31708 13
davsel 1:583b68b31708 14 connected = 1;
davsel 1:583b68b31708 15
davsel 1:583b68b31708 16 // mobile app will send ASCII strings terminated with the colon character
davsel 1:583b68b31708 17 ManagedString eom(":");
davsel 1:583b68b31708 18
davsel 1:583b68b31708 19 while(connected == 1) {
davsel 1:583b68b31708 20 ManagedString msg = uart->readUntil(eom);
davsel 1:583b68b31708 21 uBit.display.scroll(msg);
davsel 1:583b68b31708 22 }
davsel 1:583b68b31708 23
davsel 1:583b68b31708 24 }
davsel 1:583b68b31708 25
davsel 1:583b68b31708 26 void onDisconnected(MicroBitEvent)
davsel 1:583b68b31708 27 {
davsel 1:583b68b31708 28 uBit.display.scroll("D");
davsel 1:583b68b31708 29 connected = 0;
davsel 1:583b68b31708 30 }
davsel 1:583b68b31708 31
davsel 1:583b68b31708 32 void onButtonA(MicroBitEvent)
davsel 1:583b68b31708 33 {
davsel 1:583b68b31708 34 if (connected == 0) {
davsel 1:583b68b31708 35 return;
davsel 1:583b68b31708 36 }
davsel 1:583b68b31708 37 uart->send(ManagedString("YES"));
davsel 1:583b68b31708 38 uBit.display.scroll("Y");
davsel 1:583b68b31708 39 }
davsel 1:583b68b31708 40
davsel 1:583b68b31708 41 void onButtonB(MicroBitEvent)
davsel 1:583b68b31708 42 {
davsel 1:583b68b31708 43 if (connected == 0) {
davsel 1:583b68b31708 44 return;
davsel 1:583b68b31708 45 }
davsel 1:583b68b31708 46 uart->send(ManagedString("NO"));
davsel 1:583b68b31708 47 uBit.display.scroll("N");
davsel 1:583b68b31708 48 }
davsel 1:583b68b31708 49
davsel 1:583b68b31708 50 void onButtonAB(MicroBitEvent)
davsel 1:583b68b31708 51 {
davsel 1:583b68b31708 52 if (connected == 0) {
davsel 1:583b68b31708 53 return;
davsel 1:583b68b31708 54 }
davsel 1:583b68b31708 55 uart->send(ManagedString("GOT IT!!"));
davsel 1:583b68b31708 56 uBit.display.scroll("!");
davsel 1:583b68b31708 57 }
LancasterUniversity 0:0041f35b0c4c 58
LancasterUniversity 0:0041f35b0c4c 59 int main()
LancasterUniversity 0:0041f35b0c4c 60 {
LancasterUniversity 0:0041f35b0c4c 61 // Initialise the micro:bit runtime.
LancasterUniversity 0:0041f35b0c4c 62 uBit.init();
LancasterUniversity 0:0041f35b0c4c 63
davsel 1:583b68b31708 64 uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected);
davsel 1:583b68b31708 65 uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected);
davsel 1:583b68b31708 66 uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
davsel 1:583b68b31708 67 uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);
davsel 1:583b68b31708 68 uBit.messageBus.listen(MICROBIT_ID_BUTTON_AB, MICROBIT_BUTTON_EVT_CLICK, onButtonAB);
davsel 1:583b68b31708 69
davsel 1:583b68b31708 70
davsel 1:583b68b31708 71 // Note GATT table size increased from default in MicroBitConfig.h
davsel 1:583b68b31708 72 // #define MICROBIT_SD_GATT_TABLE_SIZE 0x500
davsel 1:583b68b31708 73 uart = new MicroBitUARTService(*uBit.ble, 32, 32);
davsel 1:583b68b31708 74 uBit.display.scroll("UART ready");
LancasterUniversity 0:0041f35b0c4c 75
LancasterUniversity 0:0041f35b0c4c 76 // If main exits, there may still be other fibers running or registered event handlers etc.
LancasterUniversity 0:0041f35b0c4c 77 // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then
LancasterUniversity 0:0041f35b0c4c 78 // sit in the idle task forever, in a power efficient sleep.
LancasterUniversity 0:0041f35b0c4c 79 release_fiber();
davsel 1:583b68b31708 80 }