Analog-to-binary input with hysteresis
Dependents: Hysteresis LAB9_Hysteresis LAB18_StreetLight
Revision 0:fe43537bd3d6, committed 2013-12-20
- Comitter:
- kayekss
- Date:
- Fri Dec 20 19:21:57 2013 +0000
- Commit message:
- First release
Changed in this revision
HysteresisIn.cpp | Show annotated file Show diff for this revision Revisions of this file |
HysteresisIn.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r fe43537bd3d6 HysteresisIn.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HysteresisIn.cpp Fri Dec 20 19:21:57 2013 +0000 @@ -0,0 +1,38 @@ +// ==================================================== Dec 21 2013, kayeks == +// HysteresisIn.cpp +// =========================================================================== +// Analog to binary input class with hysteresis +// - For a simple Schmitt-Trigger substitute + +#include "HysteresisIn.h" + +/** Constructor of class HysteresisIn */ +HysteresisIn::HysteresisIn(PinName inputPin, float htl, float lth, + bool initialState) +: + in(inputPin) +{ + this->state = initialState; + this->thresholdHighToLow = htl; + this->thresholdLowToHigh = lth; +} + +/** Destructor of class HysteresisIn */ +HysteresisIn::~HysteresisIn() { +} + +/* Read once and decide an output */ +bool HysteresisIn::read() { + float val = in; + if (this->state && val < this->thresholdHighToLow) { + this->state = 0; + } else if (!this->state && val > this->thresholdLowToHigh) { + this->state = 1; + } + return this->state; +} + +/* Forcibly set current state */ +void HysteresisIn::write(bool newState) { + this->state = newState; +}
diff -r 000000000000 -r fe43537bd3d6 HysteresisIn.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HysteresisIn.h Fri Dec 20 19:21:57 2013 +0000 @@ -0,0 +1,26 @@ +// ==================================================== Dec 21 2013, kayeks == +// HysteresisIn.h +// =========================================================================== +// Analog to binary input class with hysteresis +// - For a simple Schmitt-Trigger substitute + +#ifndef HYSTERESIS_IN_H_ +#define HYSTERESIS_IN_H_ + +#include "mbed.h" + +class HysteresisIn { +private: + AnalogIn in; + float thresholdHighToLow; + float thresholdLowToHigh; + bool state; + +public: + HysteresisIn(PinName inputPin, float htl, float lth, bool initialState=0); + ~HysteresisIn(); + bool read(); + void write(bool newState); +}; + +#endif