記得第一次看到的搖桿,是操縱飛機俯衝、翻滾,並且上面有發射飛彈的按鈕,那種帥氣的操縱桿。而生活中常見的像是夾娃娃機、遊戲機手把,都有使用搖桿做為輸入裝置。

2021L1

上圖中這個搖桿的工作原理是在X軸及Y軸各安裝了一個可變電阻,當推動搖桿在X軸(或Y軸)方向移動時,它會帶動對應的可變電阻轉動,使其阻值發生變化。

2021L2

此模組的電路如下圖所示(忽略壓下的按鈕部份):

2021L4

可以把圖中的箭頭想像成搖桿的部份,(以X軸舉例)當搖桿往左推時,等同於將箭頭往左橫移,此時左邊的電阻變小,同時右邊的電阻變大。用下面這個等效圖來說,即RX1變小,RX2變大。(於電源供給的情況下)由分壓定理可知,此時模組VRx的輸出電壓變小;反之,當搖桿往右推時,VRx輸出電壓變大。同理,搖桿往上推時,VRy輸出電壓變小;搖桿往下推時,VRy輸出電壓變大。

2021L5

X軸及Y軸的定義如下圖:

2021L3

接下來透過Arduino的類比輸入腳來讀取VRx及VRy的電壓值,即可得知搖桿在XY平面上的位置。

2021L6

這個試驗程式很簡單,其中的analogRead()就是用來把類比輸入腳的電壓值轉換為數位的數值。我這裡使用的是UNO板,它的ADC(類比轉數位)解析度是10bits,預設的參考電壓是5V,也就是說它可以將類比輸入腳的電壓準位0~5V轉換成0~1023的數位數值。

2021L7

實測後可以發現,當沒有施加外力於搖桿時(搖桿處於正中間時),理論上應該得到512(0跟1023的中間值),但實際上因為機構、可變電阻、組裝...等,皆會有誤差,所以得到的值有所偏差。不過沒關係,我們只須對這個值做修正(校準)就可以啦!

為了更直覺,我寫了一個BCB程式,將X、Y的ADC數值,變成以圖形來表示。圖中的紅色圓球代表搖桿目前在XY平面的位置。為了跟我們常用的直角座標相符(X、Y中間皆為零;Y軸往上數值越大),我在BCB程式中將收到的X、Y數值做一些調整,這包含了原點的校準。

 

 

arrow
arrow
    創作者介紹
    創作者 肯特王 的頭像
    肯特王

    肯特王的簿

    肯特王 發表在 痞客邦 留言(0) 人氣()