|
新買一個TTP229B的16鍵觸摸模塊,黑心淘寶居然沒給對PDF也沒有借鑒的驅(qū)動代碼,于是去官網(wǎng)下載了個pdf看時序圖模仿了一個。
先上pdf文件
TTP229-BSF_V1.1_EN.pdf
(326.25 KB, 下載次數(shù): 37)
2016-4-18 03:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這個是TTP-229B(SSOP-28)的PDF,來自官網(wǎng)
http://www.tontek.com.tw/031-1-1.asp?p3id=20141007154716
硬件部分:
首先看文檔調(diào)好跳線,其中1腳對應(yīng)TP0,2腳對應(yīng)TP1如此類推,把1/2/3/4/5跳線跳上,即TP0-TP4均為低電平0
含義如下:
TP0=0,TP1=0:SDA高電平激活
160117hpzwz2wkskm8wgnw.png (30.79 KB, 下載次數(shù): 177)
下載附件
2016-4-18 03:46 上傳
TP2=0:16按鍵全使用
TP3=0,TP4=0:所有按鍵Multi Key,即可以同時按下所有按鍵。
160117dy44c4co3750coco.png (120.92 KB, 下載次數(shù): 196)
下載附件
2016-4-18 03:46 上傳
下面是跳好跳線的圖片
155424ljee3opdun3tupdu.jpg (161.21 KB, 下載次數(shù): 197)
下載附件
2016-4-18 03:46 上傳
一定要把模塊的1-5跳線跳好,否則下面代碼不能正常讀取。
162822p54zqvx21dq2yywc.png (366.15 KB, 下載次數(shù): 157)
下載附件
2016-4-18 03:46 上傳
兩個代碼,一個是單獨讀一個按鍵,一個一次讀完所有按鍵
一個是單獨讀一個按鍵
- int SCLPin = A5, SDOPin = A4; //SCL接A5,SDO接A4,非IIC,可以隨意移動引腳接法
- boolean h = 0, oldh = 0;
- void setup()
- {
- Serial.begin(9600);
- pinMode(SCLPin , OUTPUT); //時鐘端輸出
- }
-
- boolean ttp229single(int pin)
- {
- boolean DATA = 0;
- pinMode(SDOPin , OUTPUT);
- digitalWrite(SDOPin, HIGH);
- delayMicroseconds(93); //DV時間93us
- digitalWrite(SDOPin, LOW);
- delayMicroseconds(10); //Tw時間10us
- pinMode(SDOPin , INPUT);
- for (int i = 0; i < 16; i++)
- {
- digitalWrite(SCLPin, HIGH);
- digitalWrite(SCLPin, LOW);
- if (i == pin-1)
- {
- DATA = digitalRead(SDOPin); //讀取數(shù)據(jù)
- }
- }
- delay(2); //Tout時間2ms
- return DATA;
- }
-
- void loop()
- {
- h = ttp229single(3); //本例讀了寫著3數(shù)字的觸摸鍵(TP2)
-
- if (h != oldh) //數(shù)據(jù)改變的時候輸出h
- {
- Serial.println(h);
- oldh = h;
- delay(40); //滿足pdf的T_resp(for 16-KEYS)時間32ms
- }
- }
復(fù)制代碼
一個一次讀完所有按鍵
- int SCLPin = A5, SDOPin = A4;
- unsigned int h = 0, oldh = 0;
- void setup()
- {
- Serial.begin(9600);
- pinMode(SCLPin , OUTPUT); //時鐘端輸出
- }
-
- unsigned int ttp229() //一次讀完TTP229所有按鍵
- {
- unsigned int DATA = 0;
- pinMode(SDOPin , OUTPUT);
- digitalWrite(SDOPin, HIGH);
- delayMicroseconds(93);
- digitalWrite(SDOPin, LOW);
- delayMicroseconds(10);
- pinMode(SDOPin , INPUT);
- for (int i = 0; i < 16; i++)
- {
- digitalWrite(SCLPin, HIGH);
- digitalWrite(SCLPin, LOW);
- DATA |= digitalRead(SDOPin) << i;
- }
- delay(2);
- return DATA&0xFFFF;
- }
-
- void loop()
- {
- h = ttp229();
- if (h != oldh)
- {
- Serial.println(h, BIN);
- oldh = h;
- delay(40);
- }
- }
復(fù)制代碼
進(jìn)階閱讀:代碼與時序圖關(guān)系簡述
162346mppuq04dytsxt6pl.png (238.95 KB, 下載次數(shù): 178)
下載附件
2016-4-18 03:46 上傳
|
|