编者注:本项目来自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信号上。
到这里项目就完成了,可以开始玩耍了!