mBlock & Arduino(13)使用搖桿控制


搖桿這東西,經常可見到它的應用,電玩設備就不用說了,我前陣子剛掛掉的行車記錄器,上頭也有個小搖桿,主要用來上下左右操控選單,以及按下搖桿確認選項 … XD

類比搖桿

認識類比搖桿

不同廠商製作的類比搖桿,腳位與標示上可能會有所不同,不過基本上會有五個腳位,分別為電源、GND、X 軸、Y 軸、開關,以我手中的 Keyes_Sjoys 來說:

類比搖桿

從左至右的接腳順序與標示分別是 GND、+5V、VRx、VRy、SW,SW 就是開關輸出的意思,在接好 +5V 與 GND,而搖桿不按下的情況下,Keyes_Sjoys 的 SW 會有電壓輸出,按下搖桿的話,SW 會是 0V。

至於 VRx 與 VRy 輸出,是以類別電壓輸出來表示目前搖桿的方向狀態,在未操作搖桿的情況下,VRx 與 VRy 大致是在 2.5V,如果在 X 方向移動,VRx 會有 0 到 5V 變化,如果在 Y 方向移動,VRy 也是有 0 到 5V 變化。

因此,可以將 VRx 與 VRy 接到 Arduino 的類別腳位,依搖桿操作的方向,我實際量得 Arduino 的類比輸入值變化為:

類比搖桿

使用搖桿控制貓咪

在 Fritzing 中有個通用的搖桿元件,接腳順序與標示則分別是 VCC、VERT、HORZ、SEL、GND,SEL 就是選擇,其實也就是開關的意思:

類比搖桿

因此,如果要使用搖桿控制貓咪,可以如下銜接電路,VCC、VERT、HORZ、SEL、GND,SEL 等腳位,就對應至你實際使用的搖桿模組腳位即可:

類比搖桿

我要使用搖桿來控制貓咪的上、下、左、右移動,而按下搖桿,貓咪會發出「喵」一聲,為了符合操作習慣,以向右為 X 正方向,而向上為 Y 正方向,因此,我用 488 減去 Arduino 從 Keyes_Sjoys 的 VRy 量得的值:

類比搖桿

你也可以挑戰使用搖桿來控制 3D 立方體旋轉喔!

https://www.youtube.com/watch?v=nD8ajvoDUKE

這是自己用「畫筆」繪製的,一點點電腦圖學的應用,最主要的是,知道 x-y-z 三維座標中某個點,如何繞軸旋轉,這部份可參考〈三維直角座標之繞軸旋轉〉。

然後,正立方體以 (0, 0, 0) 為中心,訂出八個頂點,這部份可參考〈頂點索引陣列〉,只要看第一張圖就可以了,我沒有用頂點索引陣列,因為在 Scratch(mBlock) 中沒辦法,因為它的程式元素太少,難以實作頂點索引陣列,因此,我簡化了繪圖,用最簡單(但重複)的方法,直接跑一維清單而已 … 就只是程式碼重複了四次,理論上是要跑六個面,不過,跑四個面,每個邊就都至少畫過一次了 … XD

有興趣研究一下電腦圖學的,可以參考一下我的〈電腦圖學入門〉文件。