Arduino連接TTP229B電容觸摸模塊
新買一個(gè)TTP229B的16鍵觸摸模塊,,黑心淘寶居然沒給對(duì)PDF也沒有借鑒的驅(qū)動(dòng)代碼,,于是去官網(wǎng)下載了個(gè)pdf看時(shí)序圖模仿了一個(gè),。
先上pdf文件 TTP229-BSF_V1.1_EN.pdf 網(wǎng)盤下載http://pan.baidu.com/s/1dExdYV3
這個(gè)是TTP-229B(SSOP-28)的PDF,,來自官網(wǎng)
http://www./031-1-1.asp?p3id=20141007154716
硬件部分:
首先看文檔調(diào)好跳線,,其中1腳對(duì)應(yīng)TP0,2腳對(duì)應(yīng)TP1如此類推,,把1/2/3/4/5跳線跳上,即TP0-TP4均為低電平0
含義如下:
TP0=0,TP1=0:SDA高電平激活
2015-6-29 16:01 上傳 (30.79 KB)
TP2=0:16按鍵全使用
TP3=0,TP4=0:所有按鍵Multi Key,,即可以同時(shí)按下所有按鍵,。
2015-6-29 16:01 上傳 (120.92 KB)
下面是跳好跳線的圖片
2015-6-29 15:54 上傳 (161.21 KB)
一定要把模塊的1-5跳線跳好,否則下面代碼不能正常讀取,。
2015-6-29 16:28 上傳 (366.15 KB)
兩個(gè)代碼,,一個(gè)是單獨(dú)讀一個(gè)按鍵,一個(gè)一次讀完所有按鍵
一個(gè)是單獨(dú)讀一個(gè)按鍵
ARDUINO
int SCLPin = A5, SDOPin = A4; //SCL接A5,SDO接A4,,非IIC,,可以隨意移動(dòng)引腳接法
boolean h = 0, oldh = 0;
void setup()
{
Serial.begin(9600);
pinMode(SCLPin , OUTPUT); //時(shí)鐘端輸出
}
boolean ttp229single(int pin)
{
boolean DATA = 0;
pinMode(SDOPin , OUTPUT);
digitalWrite(SDOPin, HIGH);
delayMicroseconds(93); //DV時(shí)間93us
digitalWrite(SDOPin, LOW);
delayMicroseconds(10); //Tw時(shí)間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時(shí)間2ms
return DATA;
}
void loop()
{
h = ttp229single(3); //本例讀了寫著3數(shù)字的觸摸鍵(TP2)
if (h != oldh) //數(shù)據(jù)改變的時(shí)候輸出h
{
Serial.println(h);
oldh = h;
delay(40); //滿足pdf的T_resp(for 16-KEYS)時(shí)間32ms
}
}
一個(gè)一次讀完所有按鍵
ARDUINO
int SCLPin = A5, SDOPin = A4;
unsigned int h = 0, oldh = 0;
void setup()
{
Serial.begin(9600);
pinMode(SCLPin , OUTPUT); //時(shí)鐘端輸出
}
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);
}
}
進(jìn)階閱讀:代碼與時(shí)序圖關(guān)系簡(jiǎn)述
2015-6-29 16:23 上傳 (238.95 KB) via - 極客工坊
|