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

Dependents:   2019NHK_A_manual_red 2019NHK_A_manual_red 2019NHK_A_manual_blue

Committer:
skouki
Date:
Fri Aug 30 06:29:48 2019 +0000
Revision:
0:443871490643
Child:
1:153acc418dd4
v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skouki 0:443871490643 1 #ifndef CHATTERINGREMOVAL_H
skouki 0:443871490643 2 #define CHATTERINGREMOVAL_H
skouki 0:443871490643 3
skouki 0:443871490643 4 #include"mbed.h"
skouki 0:443871490643 5
skouki 0:443871490643 6 /**
skouki 0:443871490643 7 * @file IRsensor.h
skouki 0:443871490643 8 * @brief GP2Y0A21YK0F(SHARP 2Y0A21)を使ったIR距離測定
skouki 0:443871490643 9 *
skouki 0:443871490643 10 * Example :
skouki 0:443871490643 11 * @code
skouki 0:443871490643 12 * #include "mbed.h"
skouki 0:443871490643 13 * #include "chatteringremoval.h"
skouki 0:443871490643 14 *
skouki 0:443871490643 15 * chatteringremoval button1(USER_BUTTON);
skouki 0:443871490643 16 * DigitalOut led1(LED1);
skouki 0:443871490643 17 * Serial pc(USBTX,USBRX,115200);
skouki 0:443871490643 18 *
skouki 0:443871490643 19 * int main()
skouki 0:443871490643 20 * {
skouki 0:443871490643 21 * button1.setInvalidationtime_ms(100);
skouki 0:443871490643 22 * while(true) {
skouki 0:443871490643 23 * led1 = button1.getCount() % 2;
skouki 0:443871490643 24 * pc.printf("%d",button1.getCount());
skouki 0:443871490643 25 * pc.printf("\n\r");
skouki 0:443871490643 26 * }
skouki 0:443871490643 27 * }
skouki 0:443871490643 28 *
skouki 0:443871490643 29 * @endcode
skouki 0:443871490643 30 */
skouki 0:443871490643 31
skouki 0:443871490643 32 /**
skouki 0:443871490643 33 * @brief チャタリング防止用のクラス
skouki 0:443871490643 34 */
skouki 0:443871490643 35 class chatteringremoval{
skouki 0:443871490643 36 public:
skouki 0:443871490643 37 /**
skouki 0:443871490643 38 * @brief コンストラクタ
skouki 0:443871490643 39 * @param pin Pin that can do Digitalin
skouki 0:443871490643 40 */
skouki 0:443871490643 41 chatteringremoval(PinName pin);
skouki 0:443871490643 42
skouki 0:443871490643 43 /**
skouki 0:443871490643 44 * @brief カウントの値を取得
skouki 0:443871490643 45 * @return count
skouki 0:443871490643 46 */
skouki 0:443871490643 47 unsigned int getCount();
skouki 0:443871490643 48
skouki 0:443871490643 49 /**
skouki 0:443871490643 50 * @brief チャタリング時間の設定(秒)
skouki 0:443871490643 51 * @param Chattering time (seconds)
skouki 0:443871490643 52 */
skouki 0:443871490643 53 void setInvalidationtime_s(unsigned int time);
skouki 0:443871490643 54
skouki 0:443871490643 55 /**
skouki 0:443871490643 56 * @brief チャタリング時間の設定(ミリ秒)
skouki 0:443871490643 57 * @param Chattering time (milliseconds)
skouki 0:443871490643 58 */
skouki 0:443871490643 59 void setInvalidationtime_ms(unsigned int time);
skouki 0:443871490643 60
skouki 0:443871490643 61 /**
skouki 0:443871490643 62 * @brief チャタリング時間の設定(マイクロ秒)
skouki 0:443871490643 63 * @param Chattering time (microseconds)
skouki 0:443871490643 64 */
skouki 0:443871490643 65 void setInvalidationtime_us(unsigned int time);
skouki 0:443871490643 66
skouki 0:443871490643 67 /**
skouki 0:443871490643 68 * @brief カウントのリセット
skouki 0:443871490643 69 */
skouki 0:443871490643 70 void countreset();
skouki 0:443871490643 71
skouki 0:443871490643 72
skouki 0:443871490643 73 private:
skouki 0:443871490643 74 void threadloop();
skouki 0:443871490643 75 DigitalIn d_in;
skouki 0:443871490643 76 Thread thread;
skouki 0:443871490643 77 Timer t;
skouki 0:443871490643 78 unsigned int count;
skouki 0:443871490643 79 bool flag;
skouki 0:443871490643 80 bool _mode;
skouki 0:443871490643 81 unsigned long long int _time;
skouki 0:443871490643 82 };
skouki 0:443871490643 83
skouki 0:443871490643 84 #endif