2012-04-22

Mindsensors NXT觸控面板(Touch Panel)簡單測試

MindsensorsTouch PanelNumeric Pad同樣都是作為NXT的輸入裝置,但功能與特性還是有相當的差異。
對於Touch Panel,應用的定位是成為NXT螢幕的觸控介面,所以,建議的用法即是套疊在NXT螢幕的上方,同時也附了一枝觸控筆。
(Fig-1)

Touch Panel的面板介面分成兩個區域,分別是:兩側各四個共八個的按鍵區,以及中間對應NXT螢幕座標的觸控區,由提供下載的面板範本,就可以瞭解這兩種介面的配置方式。
(Fig-2)

※操作方式
Touch Panel是透過I2C讀取暫存器的狀態值,I2C位址為:0x04
前面提到的兩種介面(按鍵區與觸控區),分別有對應的暫存器存放位址,以下是簡易的測試程序:
●目前的觸控狀態:
由讀取0x420x43兩個位址,可以回傳目前觸控區的XY座標。
座標原點(0, 0)位於左下方,範圍為(0, 0)(64, 100),而NXT則是(0, 0)(63, 99)
按鍵區的狀態值存在0x44位址,讀取後回傳1Byte,由每一個bitON/OFF表示八個按鍵的個別狀態,其中b0b3為左側由下到上的四個按鍵值,b4b7為右側四個按鍵值。
經過測試,即使同時點按多個按鍵,只會回傳其中一個按鍵值,不同於
Numeric Pad可以回傳組合按鍵狀態。
以下是測試程式畫面:
(1)顯示按鍵狀態及座標值。
(Fig-3)

(2)以〝*〞字元顯示觸控筆在面板上移動的情形。
(Fig-4. TextOut(X, Y,
〝*〞 )

(3)以圓形圖像顯示觸控筆在面板上移動的情形。
(Fig-5 CircleOut(X, Y, 5)

●筆勢(Gesture)資料:
Touch Panel
會將觸控筆在面板上移動的連續座標資料存放在暫存器中。
而這個記錄筆勢的功能,才是觸控面板的重點特性。
至於讀取方式,在0x4D位址記錄目前尚未讀取的觸控點數目,而所有觸控點的座標值(X, Y),則存放在以(0x4E, 0x4F)為起始位址的buffer中。
可以一次對(0x4E, 0x4F)位址讀取多個點的座標值,每讀取一次,於0x4D就會扣除已讀取觸控點的數目值。因此,由0x4D就可以判斷是否所有的筆勢資料都已經被讀取完畢。
以下是測試程式畫面:

(1)顯示觸控筆於面板上移動的軌跡(10點取樣一次)
(Fig-6)

(2)顯示觸控筆於面板上移動的順序 (10點取樣一次)
(Fig-7.)

(3)顯示觸控筆於面板上移動的向量(方向與位移,起點為較大的圓形)
(Fig-8)

(Video-2)


※結論摘要:
雖然近幾年來行動裝置帶領了應用觸控面板的風潮,但套用到NXT螢幕,實在是有點勉強。
單就硬體而言,NXT螢幕的解析度不高,也沒有背光,套疊上Touch Panel之後,則更難看清楚螢幕上所顯示的資訊。
這可以藉由觀察Mindsensors Touch Panel
上的兩個範例影片,就可以瞭解。

不過,如果將Touch Panel運用在以筆勢動作控制機器人的輸入裝置,那將會是一個很不一樣的控制介面。就如同前面測試中,將筆勢資料轉變成移動向量的用法,同時有方向與位移資料,就可以應用於至少兩個自由度的輸入值,這會是值得對Touch Panel繼續研究的題材。

沒有留言:

張貼留言