對於Touch Panel,應用的定位是成為NXT螢幕的觸控介面,所以,建議的用法即是套疊在NXT螢幕的上方,同時也附了一枝觸控筆。
(Fig-1)
Touch Panel的面板介面分成兩個區域,分別是:兩側各四個共八個的按鍵區,以及中間對應NXT螢幕座標的觸控區,由提供下載的面板範本,就可以瞭解這兩種介面的配置方式。
(Fig-2)
(Fig-1)
Touch Panel的面板介面分成兩個區域,分別是:兩側各四個共八個的按鍵區,以及中間對應NXT螢幕座標的觸控區,由提供下載的面板範本,就可以瞭解這兩種介面的配置方式。
(Fig-2)
※操作方式
Touch Panel是透過I2C讀取暫存器的狀態值,I2C位址為:0x04。
前面提到的兩種介面(按鍵區與觸控區),分別有對應的暫存器存放位址,以下是簡易的測試程序:
前面提到的兩種介面(按鍵區與觸控區),分別有對應的暫存器存放位址,以下是簡易的測試程序:
●目前的觸控狀態:
由讀取0x42與0x43兩個位址,可以回傳目前觸控區的X與Y座標。
座標原點(0, 0)位於左下方,範圍為(0, 0)~(64, 100),而NXT則是(0, 0)~(63, 99)。
由讀取0x42與0x43兩個位址,可以回傳目前觸控區的X與Y座標。
座標原點(0, 0)位於左下方,範圍為(0, 0)~(64, 100),而NXT則是(0, 0)~(63, 99)。
按鍵區的狀態值存在0x44位址,讀取後回傳1個Byte,由每一個bit的ON/OFF表示八個按鍵的個別狀態,其中b0~b3為左側由下到上的四個按鍵值,b4~b7為右側四個按鍵值。
經過測試,即使同時點按多個按鍵,只會回傳其中一個按鍵值,不同於Numeric Pad可以回傳組合按鍵狀態。
以下是測試程式畫面:
經過測試,即使同時點按多個按鍵,只會回傳其中一個按鍵值,不同於Numeric Pad可以回傳組合按鍵狀態。
以下是測試程式畫面:
(1)顯示按鍵狀態及座標值。
(Fig-3)
(Fig-3)
(2)以〝*〞字元顯示觸控筆在面板上移動的情形。
(Fig-4. TextOut(X, Y,〝*〞 )
(Fig-4. TextOut(X, Y,〝*〞 )
(3)以圓形圖像顯示觸控筆在面板上移動的情形。
(Fig-5 CircleOut(X, Y, 5)
(Fig-5 CircleOut(X, Y, 5)
●筆勢(Gesture)資料:
Touch Panel會將觸控筆在面板上移動的連續座標資料存放在暫存器中。
而這個記錄筆勢的功能,才是觸控面板的重點特性。
至於讀取方式,在0x4D位址記錄目前尚未讀取的觸控點數目,而所有觸控點的座標值(X, Y),則存放在以(0x4E, 0x4F)為起始位址的buffer中。
可以一次對(0x4E, 0x4F)位址讀取多個點的座標值,每讀取一次,於0x4D就會扣除已讀取觸控點的數目值。因此,由0x4D就可以判斷是否所有的筆勢資料都已經被讀取完畢。
以下是測試程式畫面:
Touch Panel會將觸控筆在面板上移動的連續座標資料存放在暫存器中。
而這個記錄筆勢的功能,才是觸控面板的重點特性。
至於讀取方式,在0x4D位址記錄目前尚未讀取的觸控點數目,而所有觸控點的座標值(X, Y),則存放在以(0x4E, 0x4F)為起始位址的buffer中。
可以一次對(0x4E, 0x4F)位址讀取多個點的座標值,每讀取一次,於0x4D就會扣除已讀取觸控點的數目值。因此,由0x4D就可以判斷是否所有的筆勢資料都已經被讀取完畢。
以下是測試程式畫面:
(1)顯示觸控筆於面板上移動的軌跡(每10點取樣一次)。
(Fig-6)
(Fig-6)
(2)顯示觸控筆於面板上移動的順序 (每10點取樣一次)。
(Fig-7.)
(Fig-7.)
(3)顯示觸控筆於面板上移動的向量(方向與位移,起點為較大的圓形)。
(Fig-8)
(Video-2)
(Fig-8)
(Video-2)
沒有留言:
張貼留言