CQ出版社セミナ "実習・Armマイコン内蔵ペリフェラルを活用するためのC++プログラミング" で使う外付け回路のテスト
Dependencies: mbed UIT_SetOutputPortType UIT_AQM1602 UIT_ADT7410
Diff: PushButton/PushButton.hpp
- Revision:
- 0:8c850cf6285d
- Child:
- 1:0a21041026c7
diff -r 000000000000 -r 8c850cf6285d PushButton/PushButton.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PushButton/PushButton.hpp Tue Mar 03 03:30:50 2020 +0000 @@ -0,0 +1,41 @@ +//------------------------------------------------------------------ +// InterruptIn, Timeout を利用してチャタリングを防止するクラス,ヘッダ +// 割込みサービス・ルーチンは非 static 関数にしている +// +// 2020/02/16, Copyright (c) 2020 MIKAMI, Naoki +//------------------------------------------------------------------ + +#include "mbed.h" + +#ifndef PUSHBUTTON_CLASS_HPP +#define PUSHBUTTON_CLASS_HPP + +namespace Mikami +{ + class PushButton + { + public: + enum RiseFall { RISE, FALL }; + + // コンストラクタ + PushButton(PinName pin, PinMode mode, RiseFall rf, void (*Func)(), + float time = 0.1); + + private: + InterruptIn pbSw_; // Mbed オフィシャル・ライブラリのクラスのオブジェクト + Timeout enabler_; // Mbed オフィシャル・ライブラリのクラスのオブジェクト + void (*fp_)(); // コンストラクタの引数で与えられた関数に対応するポインタ + float time_; // InterruptIn 割込みを無効にしている時間 + + // InterruptIn の割込みサービス・ルーチン + void IsrIntrIn(); + + // Timeout の割込みサービス・ルーチン + void IsrTimeout(); + + // コピー・コンストラクタおよび代入演算子の禁止のため + PushButton(const PushButton& ); + PushButton& operator=(const PushButton& ); + }; +} +#endif // PUSHBUTTON_CLASS_HPP