チャタリング防止できそうなものです。
Dependents: 2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue
Diff: chatteringremoval.cpp
- Revision:
- 0:443871490643
- Child:
- 2:866aa77e2fd6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chatteringremoval.cpp Fri Aug 30 06:29:48 2019 +0000 @@ -0,0 +1,54 @@ +#include"chatteringremoval.h" + +chatteringremoval::chatteringremoval(PinName pin): + d_in(pin) +{ + d_in.mode(PullUp); + flag = false; +} + +unsigned int chatteringremoval::getCount() +{ + return count; +} + +void chatteringremoval::setInvalidationtime_s(unsigned int time) +{ + _time = time * 1000 * 1000; + thread.start(callback(this, &chatteringremoval::threadloop)); +} + +void chatteringremoval::setInvalidationtime_ms(unsigned int time) +{ + _time = time * 1000 ; + thread.start(callback(this, &chatteringremoval::threadloop)); +} + +void chatteringremoval::setInvalidationtime_us(unsigned int time) +{ + _time = time; + thread.start(callback(this, &chatteringremoval::threadloop)); +} + +void chatteringremoval::countreset() +{ + count = 0; +} +void chatteringremoval::threadloop() +{ + while(true){ + bool b = d_in.read(); + + if(!b && !flag){ + flag = true; + count++; + t.reset(); + t.start(); + } + + + if(t.read_us() >= _time && b){ + flag = false; + } + } +} \ No newline at end of file