12

編者注:本項目來自Instructables,項目原作者為Ramy Mounir。
本項目是為滿足南佛羅里達大學的Make課程的項目要求而設計的。我的名字叫Ramy Mounir,是南佛羅里達大學的Make課程的一名學生創客。在本項目中,我使用一塊Arduino作為微控制器打造了一個能用舵機控制的游戲平臺。該平臺有三種操作模式,支持0~2位玩家。
0位玩家模式:不管盒子是怎么放置的,平臺都始終處于水平狀態。
1位玩家模式:玩家使用控制桿操作,確保小球位于平臺之上。
2位玩家模式:和1位玩家模式類似,但2位玩家時可能通過燈光對平臺進行控制。

Arduino Uno
面包板
控制桿模組
2個舵機
2個光電池
3軸加速度計/陀螺儀(MPU 6050)
2個330Ω電阻
9V電池組(帶開關)
線材等

我使用的是Solidworks設計我的3D打印組件,采用的材料是常見的PLA塑料。至于舵機等裝置,即可以選擇使用螺釘的形式固定,也可以使用強力膠進行固定。
點擊下載我的3D打印文件。
控制系統的結構示意圖如下:

其中Arduino從紅色框所表示的傳感器和控制器上獲得信號,然后輸出PWM信號到執行器(綠框表示的舵機),然后由舵機控制平臺的方向。
光控制時,控制系統的設計也大致類似。
系統的線路連接如下所示:

兩顆光電池和330Ω電阻一起連接分壓電路中,信號輸入Arduino的A0和A1。
加速度計連接到A4和A5(SDA和SCL)。
控制桿連接到A2和A3。
兩個舵機分別連接到PWM數字引腳3和5。
Arduino程序分成了兩個部分:主要部分和功能部分。
主要部分基本上是一個循環函數中的開關。其可以調用模式檢查函數,然后根據得到的返回值定向到特定的功能部分函數。(程序點擊這里下載。)
功能部分包含5個主要函數:
setplane():在設置函數中,該函數用來設置平臺的水平
checkbuttons():該函數用來檢查系統現在所處的模式。如果控制桿不在其正常位置上,該函數會返回特定的數值。類似地,如果其探測到一個比特定值大一點的數值,它又會返回另一個值。如果沒有探測到任何東西,那么就返回默認值。
followlight():通過控制系統對實際光值和期望光值的偏差的計算來保持光電池和光源之間的特定距離。
balance():和上面的followlight()函數的目的相同,只不過其數值來源于加速度計輸出的值。
followjoystick():將控制桿輸入的信號映射到輸出到舵機的PWM信號上。
到這里項目就完成了,可以開始玩耍了!

雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。