チャタリング防止できそうなものです。
Dependents: 2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue
chatteringremoval.cpp
- Committer:
- ec30109b
- Date:
- 2019-10-03
- Revision:
- 4:3c82016a7083
- Parent:
- 3:dce990775412
File content as of revision 4:3c82016a7083:
#include"chatteringremoval.h" chatteringremoval::chatteringremoval(PinName pin,float time): d_in(pin) { d_in.mode(PullUp); _time = time; value = true; flag = false; flag_ = true; mode = true; //thread.start(callback(this, &chatteringremoval::threadloop)); } chatteringremoval::chatteringremoval(float time): d_in(NC) { _time = time; value = true; b = true; flag = false; flag_ = true; mode = false; //thread.start(callback(this, &chatteringremoval::threadloop)); } unsigned int chatteringremoval::getCount() { return count; } void chatteringremoval::countreset() { count = 0; } void chatteringremoval::valuecount() { if(value) flag_ = false; if(!value && !flag_){ flag_ = true; count++; } } void chatteringremoval::assignvalue(bool data) { _data = data; checkchattering(); valuecount(); } void chatteringremoval::threadloop() { while(true){ checkchattering(); valuecount(); } } void chatteringremoval::checkchattering() { if(mode) b = d_in.read(); else b = _data; if(!b && !flag){ flag = true; value = 0; t.reset(); t.start(); } if((t.read() >= _time) && b){ value = 1; flag = false; } } bool chatteringremoval::getValue() { return value; }