microbit sender
main.cpp@0:9a841af2115b, 2019-03-03 (annotated)
- Committer:
- bvnoake
- Date:
- Sun Mar 03 09:17:06 2019 +0000
- Revision:
- 0:9a841af2115b
Microbit Sender;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bvnoake | 0:9a841af2115b | 1 | //including library |
bvnoake | 0:9a841af2115b | 2 | #include "MicroBit.h" |
bvnoake | 0:9a841af2115b | 3 | |
bvnoake | 0:9a841af2115b | 4 | |
bvnoake | 0:9a841af2115b | 5 | MicroBit uBit; |
bvnoake | 0:9a841af2115b | 6 | |
bvnoake | 0:9a841af2115b | 7 | bool BP = false; |
bvnoake | 0:9a841af2115b | 8 | |
bvnoake | 0:9a841af2115b | 9 | //defining times for button pressing |
bvnoake | 0:9a841af2115b | 10 | uint64_t readtime, timepressed; |
bvnoake | 0:9a841af2115b | 11 | |
bvnoake | 0:9a841af2115b | 12 | |
bvnoake | 0:9a841af2115b | 13 | //state of when code is running and not |
bvnoake | 0:9a841af2115b | 14 | bool mcode = true; |
bvnoake | 0:9a841af2115b | 15 | |
bvnoake | 0:9a841af2115b | 16 | //button function for seeing whether dot or dash |
bvnoake | 0:9a841af2115b | 17 | void button() |
bvnoake | 0:9a841af2115b | 18 | { |
bvnoake | 0:9a841af2115b | 19 | while(BP == true) |
bvnoake | 0:9a841af2115b | 20 | { |
bvnoake | 0:9a841af2115b | 21 | P0.setDigitalValue(1); |
bvnoake | 0:9a841af2115b | 22 | }P0.setDigtalValue(0); |
bvnoake | 0:9a841af2115b | 23 | |
bvnoake | 0:9a841af2115b | 24 | |
bvnoake | 0:9a841af2115b | 25 | //if button was pressed once |
bvnoake | 0:9a841af2115b | 26 | if (timepressed > 10 && timepressed < 500) |
bvnoake | 0:9a841af2115b | 27 | { |
bvnoake | 0:9a841af2115b | 28 | //shows a dot on the screen |
bvnoake | 0:9a841af2115b | 29 | uBit.display.scroll("."); |
bvnoake | 0:9a841af2115b | 30 | //sets digital value as 0 |
bvnoake | 0:9a841af2115b | 31 | uBit.io.P0.setDigitalValue(1); |
bvnoake | 0:9a841af2115b | 32 | |
bvnoake | 0:9a841af2115b | 33 | } |
bvnoake | 0:9a841af2115b | 34 | //if button is held down for a brief amount of time |
bvnoake | 0:9a841af2115b | 35 | else if (timepressed > 500 && timepressed < 1000) |
bvnoake | 0:9a841af2115b | 36 | { |
bvnoake | 0:9a841af2115b | 37 | //shows a dash on screen |
bvnoake | 0:9a841af2115b | 38 | uBit.display.scroll("-"); |
bvnoake | 0:9a841af2115b | 39 | //sets digital value at 1 |
bvnoake | 0:9a841af2115b | 40 | uBit.io.P0.setDigitalValue(1); |
bvnoake | 0:9a841af2115b | 41 | |
bvnoake | 0:9a841af2115b | 42 | } |
bvnoake | 0:9a841af2115b | 43 | //if button held down for a longer time |
bvnoake | 0:9a841af2115b | 44 | else if (timepressed > 1500) |
bvnoake | 0:9a841af2115b | 45 | { |
bvnoake | 0:9a841af2115b | 46 | //displays stop along the screen |
bvnoake | 0:9a841af2115b | 47 | uBit.display.scroll("STOP"); |
bvnoake | 0:9a841af2115b | 48 | //sets mcode as false so buttons stop running |
bvnoake | 0:9a841af2115b | 49 | mcode = false; |
bvnoake | 0:9a841af2115b | 50 | |
bvnoake | 0:9a841af2115b | 51 | } |
bvnoake | 0:9a841af2115b | 52 | |
bvnoake | 0:9a841af2115b | 53 | } |
bvnoake | 0:9a841af2115b | 54 | |
bvnoake | 0:9a841af2115b | 55 | |
bvnoake | 0:9a841af2115b | 56 | //button event from message bus for as button is being pressed |
bvnoake | 0:9a841af2115b | 57 | void onButton(MicroBitEvent e) |
bvnoake | 0:9a841af2115b | 58 | { |
bvnoake | 0:9a841af2115b | 59 | //if mcode is true signals program needs to run |
bvnoake | 0:9a841af2115b | 60 | if (mcode == true) |
bvnoake | 0:9a841af2115b | 61 | { |
bvnoake | 0:9a841af2115b | 62 | //if button A is pressed |
bvnoake | 0:9a841af2115b | 63 | if (e.source == MICROBIT_ID_BUTTON_A) |
bvnoake | 0:9a841af2115b | 64 | { |
bvnoake | 0:9a841af2115b | 65 | //calculating reading on button being pressed |
bvnoake | 0:9a841af2115b | 66 | BP = true; |
bvnoake | 0:9a841af2115b | 67 | readtime = system_timer_current_time(); |
bvnoake | 0:9a841af2115b | 68 | } |
bvnoake | 0:9a841af2115b | 69 | |
bvnoake | 0:9a841af2115b | 70 | } |
bvnoake | 0:9a841af2115b | 71 | } |
bvnoake | 0:9a841af2115b | 72 | |
bvnoake | 0:9a841af2115b | 73 | //button event from message bus for when button being let go of |
bvnoake | 0:9a841af2115b | 74 | void offButton(MicroBitEvent e) |
bvnoake | 0:9a841af2115b | 75 | { |
bvnoake | 0:9a841af2115b | 76 | //if mcode is true signals program needs to run |
bvnoake | 0:9a841af2115b | 77 | if (mcode == true) |
bvnoake | 0:9a841af2115b | 78 | { |
bvnoake | 0:9a841af2115b | 79 | //if button A is pressed |
bvnoake | 0:9a841af2115b | 80 | if (e.source == MICROBIT_ID_BUTTON_A) |
bvnoake | 0:9a841af2115b | 81 | { |
bvnoake | 0:9a841af2115b | 82 | //sees how long button pressed for |
bvnoake | 0:9a841af2115b | 83 | timepressed = system_timer_current_time() - readtime; |
bvnoake | 0:9a841af2115b | 84 | //calls button function |
bvnoake | 0:9a841af2115b | 85 | button(); |
bvnoake | 0:9a841af2115b | 86 | |
bvnoake | 0:9a841af2115b | 87 | |
bvnoake | 0:9a841af2115b | 88 | } |
bvnoake | 0:9a841af2115b | 89 | |
bvnoake | 0:9a841af2115b | 90 | } |
bvnoake | 0:9a841af2115b | 91 | } |
bvnoake | 0:9a841af2115b | 92 | |
bvnoake | 0:9a841af2115b | 93 | //main function |
bvnoake | 0:9a841af2115b | 94 | int main() |
bvnoake | 0:9a841af2115b | 95 | { |
bvnoake | 0:9a841af2115b | 96 | // Initialise the micro:bit runtime. |
bvnoake | 0:9a841af2115b | 97 | uBit.init(); |
bvnoake | 0:9a841af2115b | 98 | |
bvnoake | 0:9a841af2115b | 99 | //if mcode is true signals program needs to run |
bvnoake | 0:9a841af2115b | 100 | if (mcode == true) |
bvnoake | 0:9a841af2115b | 101 | { |
bvnoake | 0:9a841af2115b | 102 | |
bvnoake | 0:9a841af2115b | 103 | //message buses for function onButton and offButton for when button clicked |
bvnoake | 0:9a841af2115b | 104 | uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_DOWN, onButton); |
bvnoake | 0:9a841af2115b | 105 | |
bvnoake | 0:9a841af2115b | 106 | uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_UP, offButton); |
bvnoake | 0:9a841af2115b | 107 | |
bvnoake | 0:9a841af2115b | 108 | |
bvnoake | 0:9a841af2115b | 109 | |
bvnoake | 0:9a841af2115b | 110 | |
bvnoake | 0:9a841af2115b | 111 | |
bvnoake | 0:9a841af2115b | 112 | |
bvnoake | 0:9a841af2115b | 113 | |
bvnoake | 0:9a841af2115b | 114 | } |
bvnoake | 0:9a841af2115b | 115 | |
bvnoake | 0:9a841af2115b | 116 | // If main exits, there may still be other fibers running or |
bvnoake | 0:9a841af2115b | 117 | // registered event handlers etc. |
bvnoake | 0:9a841af2115b | 118 | // Simply release this fiber, which will mean we enter the |
bvnoake | 0:9a841af2115b | 119 | // scheduler. Worse case, we then |
bvnoake | 0:9a841af2115b | 120 | // sit in the idle task forever, in a power efficient sleep. |
bvnoake | 0:9a841af2115b | 121 | release_fiber(); |
bvnoake | 0:9a841af2115b | 122 | } |