Un programme d'essai pour les Terminales NSI
main.cpp@1:583b68b31708, 2021-02-17 (annotated)
- Committer:
- davsel
- Date:
- Wed Feb 17 22:46:32 2021 +0000
- Revision:
- 1:583b68b31708
- Parent:
- 0:0041f35b0c4c
Test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |