version 3.00 cm_version 2.0 platform CM-150 o // param_text:标题:第二阶段 小狗 例子程序 o // param_text:最初发布:2013/11/21 o // param_text:最后修改:2013/11/21 o // param_text:[使用方法] o // param_text:机器人会根据传感器的值运动。 o main o begin o // param_text:机器人首先会播放乐曲。 o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:3 o wait param_src:cm:18 lop:> param_src:buzzertime_num:0 rop:then - o while(1) o begin o // param_text:改变下面的值,可以修改行驶速度。 o load param_dest:var:行驶速度 param_src:dec_num:400 - o if param_src:cm:13 lop:< param_src:dec_num:400 rop:&& param_src:cm:15 lop:> param_src:dec_num:400 rop:then o begin o // param_text:左侧传感器检测到黑线,向左转。 o call faddr_dest:后退 o call faddr_dest:等待0_25秒 o call faddr_dest:右转 o call faddr_dest:等待0_25秒 o end o elseif param_src:cm:13 lop:> param_src:dec_num:400 rop:&& param_src:cm:15 lop:< param_src:dec_num:400 rop:then o begin o // param_text:右侧传感器检测到黑线,向右转。 o call faddr_dest:后退 o call faddr_dest:等待0_25秒 o call faddr_dest:左转 o call faddr_dest:等待0_25秒 o end o elseif param_src:cm:13 lop:< param_src:dec_num:400 rop:&& param_src:cm:15 lop:< param_src:dec_num:400 rop:then o begin o // param_text:左右传感器都检测到,先后退再向左侧大转弯。 o call faddr_dest:后退 o call faddr_dest:等待0_25秒 o call faddr_dest:左转 o call faddr_dest:等待0_5秒 o end o else o begin o // param_text:其他情况下前进。 o call faddr_dest:前进 o end - o if param_src:cm:14 lop:> param_src:dec_num:100 rop:then o begin o call faddr_dest:停止 o call faddr_dest:等待0_25秒 o // param_text:为了不让机器人重新趴下,缓慢改变速度。 o load param_dest:var:行驶速度 param_src:dec_num:700 o call faddr_dest:后退 o call faddr_dest:等待0_25秒 o call faddr_dest:前进 o call faddr_dest:等待0_25秒 o load param_dest:var:行驶速度 param_src:dec_num:350 o call faddr_dest:前进 o call faddr_dest:等待0_25秒 o load param_dest:var:行驶速度 param_src:dec_num:175 o call faddr_dest:前进 o call faddr_dest:等待0_25秒 o call faddr_dest:停止 - o load param_dest:cm:5 param_src:timer_num:8 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o load param_dest:cm:19 param_src:dec_num:0 o load param_dest:cm:5 param_src:timer_num:16 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then - o load param_dest:var:行驶速度 param_src:dec_num:700 o if param_src:cm:19 lop:> param_src:dec_num:0 rop:then o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:10 o call faddr_dest:右转 o load param_dest:cm:5 param_src:timer_num:16 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o end o call faddr_dest:后退 o call faddr_dest:等待0_1秒 o call faddr_dest:停止 o end o end o end - o function faddr_src:等待0_1秒 o begin o load param_dest:cm:5 param_src:timer_num:1 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o end - o function faddr_src:等待0_25秒 o begin o load param_dest:cm:5 param_src:timer_num:2 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o end - o function faddr_src:等待0_5秒 o begin o load param_dest:cm:5 param_src:timer_num:4 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o end - o function faddr_src:前进 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o end - o function faddr_src:后退 o begin o compute param_dest:aux:1:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o end - o function faddr_src:右转 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o end - o function faddr_src:左转 o begin o compute param_dest:aux:1:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o end - o function faddr_src:停止 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:dec_num:0 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:dec_num:0 o end