Analog-to-binary input with hysteresis

Dependents:   Hysteresis LAB9_Hysteresis LAB18_StreetLight

Committer:
kayekss
Date:
Fri Dec 20 19:21:57 2013 +0000
Revision:
0:fe43537bd3d6
First release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kayekss 0:fe43537bd3d6 1 // ==================================================== Dec 21 2013, kayeks ==
kayekss 0:fe43537bd3d6 2 // HysteresisIn.cpp
kayekss 0:fe43537bd3d6 3 // ===========================================================================
kayekss 0:fe43537bd3d6 4 // Analog to binary input class with hysteresis
kayekss 0:fe43537bd3d6 5 // - For a simple Schmitt-Trigger substitute
kayekss 0:fe43537bd3d6 6
kayekss 0:fe43537bd3d6 7 #include "HysteresisIn.h"
kayekss 0:fe43537bd3d6 8
kayekss 0:fe43537bd3d6 9 /** Constructor of class HysteresisIn */
kayekss 0:fe43537bd3d6 10 HysteresisIn::HysteresisIn(PinName inputPin, float htl, float lth,
kayekss 0:fe43537bd3d6 11 bool initialState)
kayekss 0:fe43537bd3d6 12 :
kayekss 0:fe43537bd3d6 13 in(inputPin)
kayekss 0:fe43537bd3d6 14 {
kayekss 0:fe43537bd3d6 15 this->state = initialState;
kayekss 0:fe43537bd3d6 16 this->thresholdHighToLow = htl;
kayekss 0:fe43537bd3d6 17 this->thresholdLowToHigh = lth;
kayekss 0:fe43537bd3d6 18 }
kayekss 0:fe43537bd3d6 19
kayekss 0:fe43537bd3d6 20 /** Destructor of class HysteresisIn */
kayekss 0:fe43537bd3d6 21 HysteresisIn::~HysteresisIn() {
kayekss 0:fe43537bd3d6 22 }
kayekss 0:fe43537bd3d6 23
kayekss 0:fe43537bd3d6 24 /* Read once and decide an output */
kayekss 0:fe43537bd3d6 25 bool HysteresisIn::read() {
kayekss 0:fe43537bd3d6 26 float val = in;
kayekss 0:fe43537bd3d6 27 if (this->state && val < this->thresholdHighToLow) {
kayekss 0:fe43537bd3d6 28 this->state = 0;
kayekss 0:fe43537bd3d6 29 } else if (!this->state && val > this->thresholdLowToHigh) {
kayekss 0:fe43537bd3d6 30 this->state = 1;
kayekss 0:fe43537bd3d6 31 }
kayekss 0:fe43537bd3d6 32 return this->state;
kayekss 0:fe43537bd3d6 33 }
kayekss 0:fe43537bd3d6 34
kayekss 0:fe43537bd3d6 35 /* Forcibly set current state */
kayekss 0:fe43537bd3d6 36 void HysteresisIn::write(bool newState) {
kayekss 0:fe43537bd3d6 37 this->state = newState;
kayekss 0:fe43537bd3d6 38 }