microbit sender

Dependencies:   microbit

Committer:
bvnoake
Date:
Sun Mar 03 09:17:06 2019 +0000
Revision:
0:9a841af2115b
Microbit Sender;

Who changed what in which revision?

UserRevisionLine numberNew 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 }