|
本次介紹一下軟件庫XPT2046型號(hào)的觸摸屏的使用,該觸摸屏結(jié)合ILI9341的LCD顯示屏一起使用(原文請(qǐng)查看零知官網(wǎng),我們的LCD和觸摸屏已經(jīng)連接在一起使用的),使用以下示例進(jìn)行介紹,示例功能為:當(dāng)觸摸屏按下后,在LCD屏上顯示當(dāng)前按下的點(diǎn)的坐標(biāo)值,示例程序代碼如下:
- /**
- * XPT2046 Touch Screen Controller example.
- *
- * @ brief:show the touch point on the LCD screen
- */
- #include <XPT2046_Touchscreen.h>
- #include "ili9341_parallel.h"
- #define CS_PIN 10 // Chip Select pin
- #define irq_pin 14 //IRQ pin
- XPT2046_Touchscreen ts(CS_PIN, irq_pin);
- ili9341_parallel_class tft(15,16,17,18,19,0,1,2,3,4,5,6,9);
- void setup() {
- Serial.begin(9600);
-
- ts.begin(); //Begin TouchScreen.
-
- tft.begin();
- tft.clear(BLACK);
- }
- boolean wastouched = true;
- void loop() {
-
- boolean istouched = ts.touched();
- if (istouched) {
- TS_Point p = ts.getPoint();
- if (!wastouched) {
- tft.drawString(20,180,BLUE,"Touch");
- }
- tft.clear(BLACK);
- tft.drawFrame(100, 150, 200, 230, RED);
- tft.drawString(110,160,GREEN,"X = ");
- char str[20];
- sprintf(str, "%d", p.x);
-
- tft.drawString(150,160,GREEN,str);
- tft.drawString(110,200,GREEN,"Y = ");
- sprintf(str, "%d", p.y);
- tft.drawString(150,200,GREEN,str);
-
- Serial.print(", x = ");
- Serial.print(p.x);
- Serial.print(", y = ");
- Serial.println(p.y);
- } else {
- Serial.println("no touch");
- }
- wastouched = istouched;
- delay(100);
- }
復(fù)制代碼 可以看到觸摸屏的使用比較簡(jiǎn)單,我們通過SPI接口將觸摸屏的接口與零知開發(fā)板相連接即可,然后在程序中通過touched()接口檢測(cè)是否有觸摸動(dòng)作,如果有觸摸再通過getPoint()函數(shù)得到觸摸的坐標(biāo)值。觸摸屏的檢測(cè)的時(shí)候還可以使用中斷引腳連接到開發(fā)板,然后通過檢測(cè)中斷是否發(fā)生來檢測(cè)是否有觸摸動(dòng)作,該型號(hào)的觸摸屏在沒有觸摸的時(shí)候中斷腳輸出高電平,如果有觸摸發(fā)生會(huì)有一段時(shí)間的低電平信號(hào)。我們連接好硬件后,燒寫上面點(diǎn)的程序到零知開發(fā)板,程序運(yùn)行后,我們用手指觸摸屏幕,可以在顯示屏上顯示我們當(dāng)前觸摸的坐標(biāo)值,如下:
Screenshot_20180806-114705.jpg (907.05 KB, 下載次數(shù): 51)
下載附件
2018-8-6 12:09 上傳
需要注意的是觸摸屏的坐標(biāo)和LCD坐標(biāo)的轉(zhuǎn)換,這里XPT2046的觸摸屏為12位的精度,因此坐標(biāo)范圍為0-4096,而此處ILI9341的LCD坐標(biāo)范圍為0-240,和0-320,因此需要轉(zhuǎn)換后兩者才能對(duì)應(yīng)起來,而且還需要注意兩者的原點(diǎn)坐標(biāo),這可以通過軟件方式簡(jiǎn)單的轉(zhuǎn)換即可對(duì)應(yīng)起來。當(dāng)然在實(shí)際產(chǎn)品開發(fā)中,我們還需要做觸摸屏的校準(zhǔn),這樣得到的觸摸動(dòng)作才能精確的檢測(cè)。
|
|