This is the template with descriptions of the functionality and methods which needs to be implemented.

Dependencies:   MQTT

Files at this revision

API Documentation at this revision

Comitter:
jensdehoog
Date:
Tue Oct 31 09:01:56 2017 +0000
Parent:
1:34e76c0cbe5a
Commit message:
Reverted to the original assignment, which was made for a duration time of 4 hours

Changed in this revision

debounce_button.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
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)
 {
     
diff -r 34e76c0cbe5a -r 5b7d055dbc91 main.cpp
--- a/main.cpp	Sun Oct 29 23:01:06 2017 +0000
+++ b/main.cpp	Tue Oct 31 09:01:56 2017 +0000
@@ -35,9 +35,7 @@
             InterruptIn button(USER_BUTTON);
             ...
             button.fall(callback(someFunction));
-        The function someFunction(void) is called when this interrupt occurs.
     -   Before implementing MQTT, test the multiclick feature first.
-        You can simply use 'printf()' to print to a serial terminal. The baud rate is 9600.
     -   Have a look at the MQTT-library for Mbed and the HelloMQTT-example.
     -   To have a uniform message sending procedure, use the following function usage:
             sendMessage(&client, topic, buf, qos, retained, duplicate)