チャタリング防止できそうなものです。

Dependents:   2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue

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