Update
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
Buttons.cpp@38:3776ee18e56f, 2019-05-13 (annotated)
- Committer:
- scherfa2
- Date:
- Mon May 13 10:11:48 2019 +0000
- Revision:
- 38:3776ee18e56f
- Parent:
- 37:a74d377d8f74
- Child:
- 42:0aaa3b282b6e
Buttons update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
scherfa2 | 34:0dee9a606869 | 1 | #include "SETUP.h" |
scherfa2 | 34:0dee9a606869 | 2 | |
scherfa2 | 38:3776ee18e56f | 3 | |
scherfa2 | 38:3776ee18e56f | 4 | extern DigitalIn Button1; |
scherfa2 | 38:3776ee18e56f | 5 | extern DigitalIn Button2; |
scherfa2 | 38:3776ee18e56f | 6 | |
scherfa2 | 38:3776ee18e56f | 7 | |
scherfa2 | 38:3776ee18e56f | 8 | /* |
hagenrap | 35:758191d5c6e1 | 9 | extern volatile bool buttonSTART_pressed; // Used in the main loop |
scherfa2 | 34:0dee9a606869 | 10 | extern volatile bool buttonSTART_enabled; // Used for debouncing |
hagenrap | 35:758191d5c6e1 | 11 | extern Timeout buttonSTART_timeout; // Used for debouncing |
scherfa2 | 34:0dee9a606869 | 12 | |
hagenrap | 35:758191d5c6e1 | 13 | extern volatile bool buttonAbbruch_pressed; // Used in the main loop |
hagenrap | 35:758191d5c6e1 | 14 | extern volatile bool buttonAbbruch_enabled; // Used for debouncing |
hagenrap | 35:758191d5c6e1 | 15 | extern Timeout buttonAbbruch_timeout; // Used for debouncing |
hagenrap | 35:758191d5c6e1 | 16 | |
scherfa2 | 38:3776ee18e56f | 17 | */ |
hagenrap | 35:758191d5c6e1 | 18 | |
scherfa2 | 38:3776ee18e56f | 19 | /* --------------------------- START_BUTTON --------------------------------- |
scherfa2 | 34:0dee9a606869 | 20 | // Enables button when bouncing is over |
scherfa2 | 34:0dee9a606869 | 21 | void buttonSTART_enabled_cb(void) |
scherfa2 | 34:0dee9a606869 | 22 | { |
scherfa2 | 34:0dee9a606869 | 23 | buttonSTART_enabled = true; |
scherfa2 | 34:0dee9a606869 | 24 | } |
scherfa2 | 34:0dee9a606869 | 25 | void buttonSTART_diable_cb(void) |
scherfa2 | 34:0dee9a606869 | 26 | { |
scherfa2 | 34:0dee9a606869 | 27 | buttonSTART_enabled = false; |
scherfa2 | 34:0dee9a606869 | 28 | } |
scherfa2 | 34:0dee9a606869 | 29 | |
scherfa2 | 34:0dee9a606869 | 30 | // ISR handling button pressed event |
scherfa2 | 34:0dee9a606869 | 31 | void buttonSTART_onpressed_cb(void) |
scherfa2 | 34:0dee9a606869 | 32 | { |
scherfa2 | 34:0dee9a606869 | 33 | if (buttonSTART_enabled) { // Disabled while the button is bouncing |
scherfa2 | 34:0dee9a606869 | 34 | buttonSTART_enabled = false; |
scherfa2 | 34:0dee9a606869 | 35 | buttonSTART_pressed = true; // To be read by the main loop |
scherfa2 | 34:0dee9a606869 | 36 | |
hagenrap | 37:a74d377d8f74 | 37 | buttonSTART_timeout.attach(callback(buttonSTART_enabled_cb), 0.300); // Debounce time 300 ms |
scherfa2 | 34:0dee9a606869 | 38 | } |
scherfa2 | 34:0dee9a606869 | 39 | } |
hagenrap | 35:758191d5c6e1 | 40 | /* ---------------------------------- END ----------------------------------- */ |
scherfa2 | 34:0dee9a606869 | 41 | |
scherfa2 | 34:0dee9a606869 | 42 | |
scherfa2 | 34:0dee9a606869 | 43 | |
scherfa2 | 34:0dee9a606869 | 44 | |
scherfa2 | 38:3776ee18e56f | 45 | /* ------------------------- ABBRUCH_BUTTON --------------------------------- |
hagenrap | 35:758191d5c6e1 | 46 | // Enables button when bouncing is over |
hagenrap | 35:758191d5c6e1 | 47 | void buttonAbbruch_enabled_cb(void) |
hagenrap | 35:758191d5c6e1 | 48 | { |
hagenrap | 35:758191d5c6e1 | 49 | buttonAbbruch_enabled = true; |
hagenrap | 35:758191d5c6e1 | 50 | } |
hagenrap | 35:758191d5c6e1 | 51 | void buttonAbbruch_diable_cb(void) |
hagenrap | 35:758191d5c6e1 | 52 | { |
hagenrap | 35:758191d5c6e1 | 53 | buttonAbbruch_enabled = false; |
hagenrap | 35:758191d5c6e1 | 54 | } |
hagenrap | 35:758191d5c6e1 | 55 | |
hagenrap | 35:758191d5c6e1 | 56 | // ISR handling button pressed event |
hagenrap | 35:758191d5c6e1 | 57 | void buttonAbbruch_onpressed_cb(void) |
hagenrap | 35:758191d5c6e1 | 58 | { |
hagenrap | 35:758191d5c6e1 | 59 | if (buttonAbbruch_enabled) { // Disabled while the button is bouncing |
hagenrap | 35:758191d5c6e1 | 60 | buttonAbbruch_enabled = false; |
hagenrap | 35:758191d5c6e1 | 61 | buttonAbbruch_pressed = true; // To be read by the main loop |
hagenrap | 35:758191d5c6e1 | 62 | |
hagenrap | 37:a74d377d8f74 | 63 | buttonAbbruch_timeout.attach(callback(buttonAbbruch_enabled_cb), 0.300); // Debounce time 300 ms |
hagenrap | 35:758191d5c6e1 | 64 | } |
hagenrap | 35:758191d5c6e1 | 65 | } |
scherfa2 | 38:3776ee18e56f | 66 | */ |
scherfa2 | 38:3776ee18e56f | 67 | |
scherfa2 | 38:3776ee18e56f | 68 | bool get_Button_1() |
scherfa2 | 38:3776ee18e56f | 69 | { |
scherfa2 | 38:3776ee18e56f | 70 | if(Button1 == 1) |
scherfa2 | 38:3776ee18e56f | 71 | { |
scherfa2 | 38:3776ee18e56f | 72 | wait(0.01); |
scherfa2 | 38:3776ee18e56f | 73 | if(Button1 == 1) |
scherfa2 | 38:3776ee18e56f | 74 | { |
scherfa2 | 38:3776ee18e56f | 75 | return true; |
scherfa2 | 38:3776ee18e56f | 76 | } |
scherfa2 | 38:3776ee18e56f | 77 | } |
scherfa2 | 38:3776ee18e56f | 78 | else if(Button1 == 0) |
scherfa2 | 38:3776ee18e56f | 79 | { |
scherfa2 | 38:3776ee18e56f | 80 | wait(0.01); |
scherfa2 | 38:3776ee18e56f | 81 | if(Button1 == 0) |
scherfa2 | 38:3776ee18e56f | 82 | { |
scherfa2 | 38:3776ee18e56f | 83 | return false; |
scherfa2 | 38:3776ee18e56f | 84 | } |
scherfa2 | 38:3776ee18e56f | 85 | } |
scherfa2 | 38:3776ee18e56f | 86 | else return false; |
scherfa2 | 38:3776ee18e56f | 87 | } |
scherfa2 | 38:3776ee18e56f | 88 | |
scherfa2 | 38:3776ee18e56f | 89 | bool get_Button_2() |
hagenrap | 37:a74d377d8f74 | 90 | { |
hagenrap | 37:a74d377d8f74 | 91 | if(Button2 == 1) |
hagenrap | 37:a74d377d8f74 | 92 | { |
scherfa2 | 38:3776ee18e56f | 93 | wait(0.01); |
hagenrap | 37:a74d377d8f74 | 94 | if(Button2 == 1) |
hagenrap | 37:a74d377d8f74 | 95 | { |
scherfa2 | 38:3776ee18e56f | 96 | return true; |
hagenrap | 37:a74d377d8f74 | 97 | } |
hagenrap | 37:a74d377d8f74 | 98 | } |
hagenrap | 37:a74d377d8f74 | 99 | else if(Button2 == 0) |
hagenrap | 37:a74d377d8f74 | 100 | { |
scherfa2 | 38:3776ee18e56f | 101 | wait(0.01); |
scherfa2 | 38:3776ee18e56f | 102 | if(Button2 == 0) |
scherfa2 | 38:3776ee18e56f | 103 | { |
scherfa2 | 38:3776ee18e56f | 104 | return false; |
scherfa2 | 38:3776ee18e56f | 105 | } |
hagenrap | 37:a74d377d8f74 | 106 | } |
scherfa2 | 38:3776ee18e56f | 107 | else return false; |
scherfa2 | 38:3776ee18e56f | 108 | } |
scherfa2 | 38:3776ee18e56f | 109 | |
hagenrap | 35:758191d5c6e1 | 110 | /* ---------------------------------- END ----------------------------------- */ |
hagenrap | 35:758191d5c6e1 | 111 |