Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: USBDevice mbed-rtos mbed
Fork of JoyStick by
Diff: SimpleButtonDecoder.cpp
- Revision:
- 2:ae7a31a3c618
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SimpleButtonDecoder.cpp Fri Aug 30 01:37:49 2013 +0000
@@ -0,0 +1,73 @@
+#include "SimpleButtonDecoder.h"
+
+
+SimpleButtonDecoder::SimpleButtonDecoder(AnalogInFiltered *analogIn, int value, short deBounceRuns)
+{
+ _analogIn = analogIn;
+ _value = value;
+ _isChanged = false;
+ _deBounceRuns = deBounceRuns;
+ _debounceCount = 1;
+
+ _pulseUp=false;
+ _status=false;
+}
+
+SimpleButtonDecoder::~SimpleButtonDecoder()
+{
+}
+
+void SimpleButtonDecoder::process()
+{
+ _pulseUp=false;
+ _pulseDown=false;
+
+ // Detect if the analog in is within the value range + fuzzy factor
+ if (abs((_analogIn->getData() + 32768) - _value) < _analogIn->getFuzzyFactor()) {
+ // When the analog values iw within the fuzzy factor for XX debounce runs, consider this now a up flank to true state
+ if (_debounceCount == _deBounceRuns) {
+ _pulseUp=!_status;
+ _status=true;
+ _debounceCount++;
+ return;
+ }
+ // If the _debounceCount is bigger then deboucneruns, consider this a on state (passed the up flanc)
+ if (_debounceCount > _deBounceRuns) {
+ return;
+ }
+ _debounceCount++;
+ } else {
+ // If debounce count is at 1, then consider this a down flanc back to false
+ if (_debounceCount == 1) {
+ _debounceCount--;
+ _pulseDown=_status;
+ _status=false;
+ return;
+ }
+ // if the debounce is below <1 then we have a stable state again.
+ if (_debounceCount < 1) {
+ return;
+ }
+ _debounceCount--;
+ }
+}
+
+bool SimpleButtonDecoder::getStatus()
+{
+ return _status;
+}
+
+bool SimpleButtonDecoder::getIsChanged()
+{
+ return _pulseUp || _pulseDown;
+}
+
+bool SimpleButtonDecoder::getIsPressed()
+{
+ return _pulseUp;
+}
+
+bool SimpleButtonDecoder::getIsReleased()
+{
+ return _pulseUp;
+}
\ No newline at end of file
