TTP229 16key touch keypad
This library support only 16key mode and active low mode
jamper set TP1=1(default) and TP2=0(jamper close).
pin connection
mbed TTP229 GPIO(InterruptIn) --------------- SDO GPIO(DigitalOut) --------------- SCL 3.3V --------------- VCC GND --------------- GND
sample program is here.
アマゾンで購入したTTP229 を使った16キーのタッチキーパッドを使うためのライブラリです。
このボードは8keyモードにも設定できますが、このライブラリは16キーモード専用です
16キーモードに設定するには TP2を高抵抗でGNDに繋ぎます。私が入手したボードではジャンパ設定の3番をクローズにすればこの状態になります。
TP1で active low と active highの切替が出来ますが、このライブラリは active lowを想定していますので、TP1はデフォルトのまま(GNDには繋がない)にしてください。その他のジャンパは使用目的に応じて自由に設定して構いません。
詳しくはこちらをご覧ください。
TTP229.h@1:c20148b5c68e, 2016-07-16 (annotated)
- Committer:
- jk1lot
- Date:
- Sat Jul 16 15:29:00 2016 +0000
- Revision:
- 1:c20148b5c68e
- Parent:
- 0:50226acdb872
- Child:
- 2:550c26cd6734
add document of TTP229::attach()
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jk1lot | 0:50226acdb872 | 1 | #ifndef TTP229_H |
jk1lot | 0:50226acdb872 | 2 | #define TTP229_H |
jk1lot | 0:50226acdb872 | 3 | #include "mbed.h" |
jk1lot | 0:50226acdb872 | 4 | #include <bitset> |
jk1lot | 0:50226acdb872 | 5 | |
jk1lot | 0:50226acdb872 | 6 | /** 16key touch keypad\n |
jk1lot | 0:50226acdb872 | 7 | * Only supported 16key and active low mode\n |
jk1lot | 0:50226acdb872 | 8 | * jamper settng : TP1=1(jamper2=open):active low, TP2=0(jamper3=close):16key mode\n |
jk1lot | 0:50226acdb872 | 9 | */ |
jk1lot | 0:50226acdb872 | 10 | class TTP229 { |
jk1lot | 0:50226acdb872 | 11 | public: |
jk1lot | 0:50226acdb872 | 12 | ///@param sdopin PinName that support DigitalIn and InterruptIn, connected to TTP229 SDO. |
jk1lot | 0:50226acdb872 | 13 | ///@param sclpin PinName that support DigitalOut, connected to TTP229 SCL. |
jk1lot | 0:50226acdb872 | 14 | TTP229(PinName sdopin, PinName sclpin); |
jk1lot | 1:c20148b5c68e | 15 | /// set function that is called at change state of keypad\n |
jk1lot | 1:c20148b5c68e | 16 | /// FunctionPointer is a pointer to function(no param and void return) |
jk1lot | 1:c20148b5c68e | 17 | /// @code |
jk1lot | 1:c20148b5c68e | 18 | /// void func(); |
jk1lot | 1:c20148b5c68e | 19 | /// ttp229.attach(&func); |
jk1lot | 1:c20148b5c68e | 20 | /// @endcode |
jk1lot | 1:c20148b5c68e | 21 | /// or to menber function(no param and void return) |
jk1lot | 1:c20148b5c68e | 22 | /// @code |
jk1lot | 1:c20148b5c68e | 23 | /// class Foo { |
jk1lot | 1:c20148b5c68e | 24 | /// public: |
jk1lot | 1:c20148b5c68e | 25 | /// void func(); |
jk1lot | 1:c20148b5c68e | 26 | /// }; |
jk1lot | 1:c20148b5c68e | 27 | /// Foo foo; |
jk1lot | 1:c20148b5c68e | 28 | /// ttp229.attach(FunctionPointer(foo, &Foo::func)); |
jk1lot | 1:c20148b5c68e | 29 | /// @endcode |
jk1lot | 0:50226acdb872 | 30 | void attach(const FunctionPointer& fp) {callback=fp;} |
jk1lot | 0:50226acdb872 | 31 | ///get keypad status |
jk1lot | 0:50226acdb872 | 32 | bitset<16> getkeys() {return sw;} |
jk1lot | 0:50226acdb872 | 33 | ///same as getkeys() |
jk1lot | 0:50226acdb872 | 34 | operator bitset<16>() {return getkeys();} |
jk1lot | 0:50226acdb872 | 35 | ///get keypad status especially singlekey mode(TP3=1,TP4=1) |
jk1lot | 0:50226acdb872 | 36 | ///@return touched keypad number(1~16) or 0:no keypad touched |
jk1lot | 0:50226acdb872 | 37 | int onkey() {return swnum;} |
jk1lot | 0:50226acdb872 | 38 | ///Is number i(0~15) keypad touched? |
jk1lot | 0:50226acdb872 | 39 | bool ison(size_t i) {return getkeys()[i];} |
jk1lot | 0:50226acdb872 | 40 | ///same as ison() |
jk1lot | 0:50226acdb872 | 41 | bool operator[](size_t i) {return ison(i);} |
jk1lot | 0:50226acdb872 | 42 | protected: |
jk1lot | 0:50226acdb872 | 43 | void interrupt(); |
jk1lot | 0:50226acdb872 | 44 | private: |
jk1lot | 0:50226acdb872 | 45 | DigitalIn sdo; |
jk1lot | 0:50226acdb872 | 46 | InterruptIn sdoInt; |
jk1lot | 0:50226acdb872 | 47 | DigitalOut scl; |
jk1lot | 0:50226acdb872 | 48 | FunctionPointer callback; |
jk1lot | 0:50226acdb872 | 49 | bitset<16> sw; |
jk1lot | 0:50226acdb872 | 50 | int swnum; |
jk1lot | 0:50226acdb872 | 51 | }; |
jk1lot | 0:50226acdb872 | 52 | |
jk1lot | 0:50226acdb872 | 53 | #endif |