IoT werksessies embedded

Dependencies:   MQTT

Fork of PGO6_VoteController_template by Jens de hoog

Revision:
3:6793060aacc6
Parent:
2:5b7d055dbc91
diff -r 5b7d055dbc91 -r 6793060aacc6 debounce_button.cpp
--- a/debounce_button.cpp	Tue Oct 31 09:01:56 2017 +0000
+++ b/debounce_button.cpp	Mon Oct 15 15:47:44 2018 +0000
@@ -1,58 +1,73 @@
 #include "debounce_button.h"
 
-/**
-    Some tips and tricks:
-    -   To use the built-in LED:
-            DigitalOut led1(LED1);
-            ...
-            led1 = 1;
-    -   To delay the call of a function:
-            Timeout someTimeout;
-            ...
-            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.
+int amount_of_clicks = 0;
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+Timeout someTimeout1;
+Timeout someTimeout2;
+
+volatile bool button1_pressed;   // Used in the main loop
+volatile bool button1_enabled;   // Used for debouncing
+volatile int multiclick_state;   // Counts how many clicks occured in the time slot, used in main loop
+volatile bool button1_busy;      // Informs the mainloop that the user is clicking the button
+
+/*
+    Delay;
+    Timeout someTimeout;
+    someTimeout.attach(callback(&someFunction), 0.5)
 */
 
-/**
-    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) {
     
+    //stores the amount of clicks in a variable which is read by the main loop.
+    multiclick_state = amount_of_clicks;
+    
+    //resets the click counter which is used inside this file.
+    amount_of_clicks = 0;
+    
+    //lowers a flag which tells the main loop that the user stopped pressing the button such that it can proceed its program.
+    button1_pressed = false;
+    
+    //turns the built-in LED off. Therefore, the user gets informed that the program stopped counting the clicks.
+    led1 = 0;
 }
 
-/**
-    TODO
-    ----
-    This function enables the button again, such that unwanted clicks of the bouncing button get ignored.
-*/
 void button1_enabled_cb(void)
 {
-    
+    //This function enables the button again, such that unwanted clicks of the bouncing button get ignored.
+    button1_enabled = true;
 }
 
-/**
-    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)
 {
+    //turns the built-in LED on, so the user gets informed that the program has started with counting clicks
+    led1 = 1;
     
+    //disables the button such that the debouncer is active
+    button1_enabled = false;
+    
+    
+    //enables the button again after a certain amount of time 
+    //(use interrupts with "button1_enabled_cb()" as callback.
+    someTimeout1.attach(callback(button1_enabled_cb), 0.1);
+    
+    
+    //TODO revisit debouncing flag
+    amount_of_clicks += 1; //clicks too much   
+    
+    
+    //counts the amount of clicks within a period of 1 second
+    someTimeout2.attach(callback(button1_multiclick_reset_cb), 1);
+    
+    
+    //informs the main loop that the button has been pressed
+    button1_pressed = true;
+    
+    //informs the main loop that the user is clicking the button.
+    button1_busy = true;
+    
+    
+    //Therefore, this main loop cannot continue its procedure until the clicks within 1 second have been counted.  
 }
\ No newline at end of file