这个“灵魂”就是上图中的Arduino开发板和配套的L293D盾板。它们是老搭挡了,在我们之前推出的《用废旧光驱制做迷你绘图仪》一期中,它们就有着不俗的表现。
使用L293D盾板的好处是我们不需要自己搭建驱动电机的电流放大电,整个作品会简洁很多。(需要先下载库AFMotor.h)但缺点是被它覆盖后,所剩的端口寥寥无几。除了A0到A5六个模拟端口外,只有D2、D13还能用。不过仔细观察,你发现D9和D10两个舵机专用口,这里我们只用到一个,所以另外一个还可以利用。
你可能会问,L293D板上有四个电机驱动接口(M1—M4),而我们只有两个电机,是不是浪费了。别急,剩下的两个接口,小丁打算下期“艺术篇”中用于驱动装饰灯,所以此处暂留。如果实在不够用,可以把D0和D1也用起来;这两个接口虽然用于调试和电脑通信,但最后的成品是不需要与电脑通信的,故此也是可用的。
上图为抓娃娃机的Arduino开发板各端口分配图。最后小丁会提供源程序,如果你不想修改太多代码,可以完全按上图连接,这样你用提供的代码烧录后,唯一可能要调整的就是两个电机在M1和M2的接法。
下面是调试与开发过程。一个复杂的项目,总可以分解成许多简单的步骤,按老祖的话说:天下事有难易乎?为之,则难者亦易已。
检测各按钮和限位开关是否正常工作。程序将所有端口设为INPUT_PULLUP模式并逐一扫描,按下任一按钮或限位开关都会把对应端口置为低电平,串口器将显示相应的端口号。
测试后舵机的性能。在串口器输入0—180之间的数值,舵机将按相应的方向和速度转动。找到舵机静止对应的角度值,尽量在80—100之间。
测试抓手升降功能。测试前确保抓手的绳子放完正好到达落地点,否则会发生缠绕。在串口器中输入0—180之间的角度,舵机开始收放绳子。到达顶部时会触发限位开关,自动停止。
测试X、Y两个方向的电机及相应的限位开关。把左右移动电机接在盾板的M1口,前后移动电机接在M2口上。一般usb供电无法驱动电机,请外接大电流电源。在串口器输入命令 f、b、l、r,分别对应前、后、左、右四个方向,如果方向相反,可以修改代码或调换电机两接脚。两个电机对应的四个限位开关,任一个被按下,电机会朝刚才的相反方向运动一秒,以确保限位开关松开。这一步要确定向每个方向运动电机的命令以及该方向上的限位开关,如小丁这里向左的命令是XMotor.run(BACKWARD),对应的限位开关接在A0端口,拿个小本子记下结果。
简单测试摇杆功能。把摇杆X、Y输出端与Arduino的模拟输入端相连,程序在串口器打印相关的读数,范围在0~1024之间。当摇杆无操作时,一般读数值在500上下波动。
用摇杆来控制X、Y方向的移动,触发限位开关会自动停止,但不影响其它方向上的移动。这里一定要对应好摇杆的方向、电机移动方向和限位开关三者的关系。
这是个简化但完整的程序。经过的一系列调试,把功能集合起来并不是很困难的事了。称为简化版,是因为后期还会完善一些功能。
下面一起来欣赏这个无比简陋的抓娃娃机吧。虽然外在和上期相比实在没什么改观,但实质已是大不同了。
近期有不少读者发消息或留言询问关于制作的问题,但由于小丁时间有限,不能一一答复;为此特地创建了QQ群:152802011供大家相互交流。加群暗号:hzzu返回搜狐,查看更多
网友评论 ()条 查看