天天看點

《動手玩轉Arduino》——10.2 作品34:觸摸屏上的定位

本節書摘來自異步社群《動手玩轉arduino》一書中的第10章,第10.2節,作者【澳】john boxall,譯者 翁恺,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在上層的塑膠膜和下層的玻璃層之間,觸摸屏有兩層電阻性的鍍膜。一層鍍膜是x軸,另一層是y軸。當電流流經每層鍍膜,鍍膜的阻值會由于不同地方的觸摸而不同。這樣,測量了每層的電流,就能得到所觸摸區域的x和y坐标。

在這個作品中,我們要用arduino記錄螢幕上觸摸的位置,然後把這種觸摸轉換成能夠指出螢幕上的區域的整數。

需要如下的元件:

觸摸屏和小闆;

一個10kΩ微調電阻;

一個16×2字元lcd子產品;

一些連接配接線;

一塊面包闆;

arduino和usb線。

按照表10-1連接配接觸摸屏,然後按照7.1節“字元lcd子產品”的描述和圖7-2的樣子連接配接lcd子產品。

輸入并上傳下面的程式。程式中重要的地方已經加上了注釋。

在1和2處的函數readx()和ready()讀入觸摸屏的電阻層的電壓,用analogread()函數讀到電壓,然後傳回讀數。程式不斷地執行這兩個函數來得到螢幕上被觸摸區域的實時位置,然後在3和4處把這個資料顯示在lcd上(每個函數裡的delay(5)是給輸入/輸出引腳足夠的時間來響應變化)。

測試這個程式的時候,一邊觸摸螢幕一邊看着lcd子產品,觀察在螢幕的不同位置觸摸時的x和y的值。同時還要注意不觸摸螢幕時顯示的數值,如圖10-3所示。

《動手玩轉Arduino》——10.2 作品34:觸摸屏上的定位

這些值很重要,程式中要用這些值判斷螢幕是否被觸摸到。

觸摸螢幕的四角,記錄下傳回值,就能給螢幕定坐标,如圖10-4所示。這也就是要畫出每個角的坐标。一旦決定了這些值,就可以把整個觸摸屏劃分成較小的區域,以此作為控制用的區域了。

《動手玩轉Arduino》——10.2 作品34:觸摸屏上的定位

建立了觸摸屏的坐标系後,可以把整個螢幕分成較小的區域,用readx()和ready()函數在螢幕上定義出一些控制區域,然後就可以用if語句在某些區域被觸摸的時候采取對應的動作了。作品35就是這樣做的。