好了,正式开始回忆了,去年夏天做完数模后,就开始了Rosmin的设计制作之旅,WTFROBOT中,我负责硬件及相关软件部分的任务,Rosmin中做的主要是arduino端的工作。
开始的日子很幸福,过着没有bug的日子,我们预先购买的Romeo(一款arduino小板)也很给面子完成了前期的大部分基本测试,可是随着功能的增多,Romeo终于hold不住了, bug频频,每天都是调不完的bug,具体的问题就是我们让Romeo通过USB Host Shield与android手机通信下完成驱动小车运动,控制2自由度云台和超声波模块,在实际测试中发现启用USB Host 模式后,超声波模块不可用,并且卡死进程,想了很多天后了,克服了乱花国家钱的心理障碍,花了MZD若干张,一切豁然开朗.....
其实问题很明显,小板资源不够用了......
在寻求解决方案的过程中,最开始想到了复用定时器的方案,进一步想到的是在Romeo运行一个类实时系统RTOS的方法,但是经过一番了解后发现,arduino上运行RTOS,学习使用那啥实时系统和具体代码修改时间过长,对项目的完成进度不利,舍弃!
人生就是折腾,不折腾非人生也!手头上正好有一块TI 的launchpad,在energia(一个类似arduino 的IDE)下完成了由430控制超声波模块采集数据并传回给Romeo的任务,其中Romeo已经用完了所有定时器,无法利用串口或模拟串口通信,只好用采样电平的方法通信,此时,电平转换是一个喜闻乐见的问题,经过调换电阻后可以完成基本通信,在整体测试中,通信的稳定性与利用电平高低机制通信的方法带来的局限性让测试效果让人难以接受,这样launchpad+Romeo进行Rosmin硬件层控制的方案,只好舍弃!
最后的出路,大出血(当然也不是我们的钱)买回了adk,引脚多了,再也不会担心引脚不够用的问题了,想想USB Host Shield会占用5个数字IO口,可怜的Rome一共才13个数字IO口,还好时间还够,进度还算赶上来了,最终完成了Rosmin的预期设计功能.
下面是一些资料:
https://github.com/PeterVranken/RTuinOS
http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released
下面是源代码:
#include
#include
#include
#include //舵机控制库
#include //电机控制库
#include //ping
#define X 9 ///Servo
#define Y 10
#define InitX 77
#define InitY 7//145
#define initX 157
#define initY 150
#define S 250 //motor大速度
#define SS 200 //motor速度
#define