本帖最后由 ntwuhui 于 2014-3-1 13:28 编辑
动作部分: - st=0
-
- //BHV模块
- 重复做(到最后)
- 如果 st=0 那么 // PS: 变量st为当前状态,0:睡眠中,1:平衡中,2:做动作
- Cdrv=Cstr=0
- 如果 st=1 那么
- Cdrv=40
- 等待4秒 //PS: 我的理解是让机器人稳定下来
- Cdrv=0
- 播放频率1000音量100的音调0.1秒 //PS: 提示可以做运动了
- st=2
- 如果 st=2 那么
- 检测颜色传感器识别颜色(1号端口)
- 如果 是红色 那么
- 播放频率2000音量100的音调0.1秒
- Cdrv=Cstr=0 // PS: 红色停止
- 如果 是绿色 那么
- 播放频率2000音量100的音调0.1秒
- Cdrv=150 Cstr=0 // PS: 绿色前进,Cdrv:前后运动功率
- 如果 是蓝色 那么
- 播放频率2000音量100的音调0.1秒
- Cstr=70 // PS: 蓝色左拐,Cstr:左右拐弯功率
- 如果 是黄色 那么
- 播放频率2000音量100的音调0.1秒
- Cstr=-70 // PS: 黄色右拐
- 如果 是白色 那么
- 播放频率2000音量100的音调0.1秒
- Cdrv=-75 // PS: 白色后退
-
- 检测超声波传感器(4号端口)
- 如果 检测到物体离开距离小于25cm 那么
- Cstr=0 oldDr=Cdrv // PS: 记住原来的Cdrv
- Cdrv=-10 // PS:摆动手臂时的前后运动功率
- 马达C以功率30旋转30°并制动
- 马达C以功率-30旋转60°并制动
- 马达C以功率30旋转30°并制动
- // PS: 机器人摆动手臂
- 随机产生一个介于-1到1的数
- 如果 这个数>=1 那么 Cstr=70 否则 Cstr=-70 // PS: 随机拐弯
- 等待4秒
- 播放频率2000音量100的音调0.1秒
- Cstr=0 Cdrv=oldDr // PS: 恢复原来的Cdrv
- 等待0.1秒
复制代码
几个主要说明: st:状态标志,0: 睡眠中,1: 苏醒,平衡中,2: 接收指令运动中(前进、后退、拐弯、停止),
其中st=1后4秒会自动进入st=2 Cdrv:前后运动修正 Cstr: 左右运动修正 当前模块与前面平衡模块并列运行 |