jamie wubben
/
PGO6_VoteController_template
jamie
Fork of PGO6_VoteController_template by
Diff: debounce_button.cpp
- Revision:
- 2:5b7d055dbc91
- Parent:
- 1:34e76c0cbe5a
- Child:
- 3:c77bed3482d3
diff -r 34e76c0cbe5a -r 5b7d055dbc91 debounce_button.cpp --- a/debounce_button.cpp Sun Oct 29 23:01:06 2017 +0000 +++ b/debounce_button.cpp Tue Oct 31 09:01:56 2017 +0000 @@ -1,19 +1,6 @@ #include "debounce_button.h" /** - TODO - ---- - - A debouncer has to be present: the built-in buttons of the Nucleo aren't that good, so false positives have to be filtered out. - Find a method such that false calls of this function are going to be filtered out. - The main loop also needs to know when it can process the further instructions. - An acceptable time to disable further false positives is between 50ms and 100ms. - - The user needs to be able to click the button multiple times in 1 second. - The main loop needs to know how many times the user has pressed the button, such that - it can link different procedures to the different multiclicks. The main loop also needs - to know when this function is counting the clicks. Therefore, it has to wait until the clicks have been counted - before it can proceed. - - LED1 needs to be turned on while the function is counting the amount of clicks within 1 second. - Some tips and tricks: - To use the built-in LED: DigitalOut led1(LED1); @@ -22,19 +9,49 @@ - To delay the call of a function: Timeout someTimeout; ... - someTimeout.attach(callback(&anotherFunction), 0.5) with 0.5 as 500 milliseconds + someTimeout.attach(callback(&someFunction), 0.5) with 0.5 as 500 milliseconds - The variables that are used in interrupt callbacks have to be volatile, because these variables can change at any time. Therefore, the compiler is not going to make optimisations. - - Use boolean flags to send information between different processes. - - In the header file are extra functions and variables that can help you developing these procedures. - You can add, change or remove these functions and variables at any time, as long as it is clear what you've done. */ /** - This function is called when the button has been pressed by the user. + TODO + ---- + This function: + - stores the amount of clicks in a variable which is read by the main loop. + - resets the click counter which is used inside this file. + - lowers a flag which tells the main loop that the user stopped pressing the button + such that it can proceed its program. + - turns the built-in LED off. Therefore, the user gets informed that the program stopped counting the clicks. +*/ +void button1_multiclick_reset_cb(void) { + +} + +/** + TODO + ---- + This function enables the button again, such that unwanted clicks of the bouncing button get ignored. */ +void button1_enabled_cb(void) +{ + +} +/** + TODO + ---- + This function: + - turns the built-in LED on, so the user gets informed that the program has started with counting clicks + - disables the button such that the debouncer is active + - enables the button again after a certain amount of time + (use interrupts with "button1_enabled_cb()" as callback. + - counts the amount of clicks within a period of 1 second + - informs the main loop that the button has been pressed + - informs the main loop that the user is clicking the button. + Therefore, this main loop cannot continue its procedure until the clicks within 1 second have been counted. +*/ void button1_onpressed_cb(void) {