全国大学生机器人搬运比赛部分程序(aw60)gkkd.docx
《全国大学生机器人搬运比赛部分程序(aw60)gkkd.docx》由会员分享,可在线阅读,更多相关《全国大学生机器人搬运比赛部分程序(aw60)gkkd.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 图1比赛场地示意图 图2机器人出发区示意图4/-*/机器人搬运比赛程序如下:/ 项 目 名: 基于Freescale AW60的 */ 硬件连接: */ 程序描述: 定时器2作为颜色传感器计数器;定时器1通道0-1作为PWM输出;通道2作为颜色传感器的定时器溢出中断/ 超声波计数用定时器1 */ 说 明: */ ? */ */ 作者信息? */ 版本信息? */ 完成时间? */ 修订记录: */ 时间: */ 内容:? */-*/调用头文件#include Includes.hvoid main(void) /定义变量,不管在主程序还是子函数,都需要把变量的定义放在最前面,否则会报错 in
2、t D=0; int m=0; char num1=0; /用于计数用 char num2=0; /用于 转弯计数用 char flag_forward=1; /前进的标志位 char flag_backward=1; /后退的标志位 /用到的端口,一定要记得初始化端口数据方向寄存器 /液晶模块 /PTGDD |= 0b00011111; /液晶模块IO的输入输出配置 /颜色传感器模块 /PTCDD |= 0b00101100; /配置颜色传感器模块 / PTFDD &= 0b11111110; /红外传感器模块及驱动模块 PTDDD = 0b00000111; / PTDD4作为定时器2的外
3、部时钟输入 PTBDD = 0b01000000; /前五个是红外传感器 ,最后两个是超声波的发送和接收 PTEDD |= 0b11111100; /配置驱动模块 /PTEDD &= 0b11111110; /配置红外接近传感器 PTADD = 0xFF; / PTFDD = 0b00111111; /前两个口左右计数的口 /2 关总中断 DisableInterrupt(); /禁止总中断 /3 芯片初始化 MCUInit(); /4 模块初始化 PWM_Init(1,0x0fa0); /用作PWM输出控制电机周期最佳控制大概400ms左右 (控制舵机用TPM_NUM_1,CH_2) /TP
4、Minit(2); /用来作为颜色传感器的计数用外部时钟 /*rb=0; /值的初始化 bb=0; /值的初始化 gb=0; /值的初始化 ryz=0; /值的初始化 byz=0; /值的初始化 gyz=0; /值的初始化 flag=0; /值的初始化*/ num_black=0;num_left=0;num_right=0; D=60;/ baipingheng(); / EnableInterrupt(); /开总中断 */ while (1) /-*/文件名: 无 */说 明: 完成直推三个目标 */作者: */初始时间: */修订记录: */备注:程序顺序执行一遍就走完了全程 ,回到出
5、发区 */-* /* while(num_black2) num_black= black_num(0); xunji_forward_3(); if(num_black=2) stop(0); DelayMs(100); while(num_right=1) num_right= black_num(1); xunji_forward_3(); stop(0); /到达目的地 num_right=0; num_black=0; flag_backward=0; /作为后退的准备 while(flag_backward=0) /后退到赛道中心的程序 back_faward(); DelayMs
6、(1000); /等待黑线的过去 if(COUNT_RIGHT=1) flag_backward=1; turn_left(2); /左转90角度 .推第二个目标 while(flag_forward=0) xunji_forward_3(); if(COUNT_RIGHT=1) flag_forward=1; /直推完成 flag_backward=0; /开始后退的旅程 while(flag_backward=0) back_faward(); if(COUNT_RIGHT=1) flag_backward=1; middle_faward(70); DelayMs(100); /避免再碰
7、到黑线 stop(0); DelayMs(2); /减缓电机的抖动 Eleft(70); while(num_left=3) /左转180度推第三个目标 num_left=black_num(1); if(num_left=3) num_left=0; num_black=0; /黑线数清零? DelayMs(10); while(flag_forward=0) xunji_forward_3(); if(COUNT_RIGHT=1) flag_forward=1; /直推完成 flag_backward=0; /开始后退的旅程 while(flag_backward=0) back_fawa
8、rd(); if(COUNT_RIGHT=1) flag_backward=1; turn_left(3); back_faward(); while(num_black2) num_black= black_num(0); back_faward(); DelayMs(1000); */ /-*/文件名: 无 */说 明: 直走90度弯的程序 */作者: */初始时间: */修订记录: */备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯,推物块到目的地,然后返回到中心停住的程序 */-* /* black_num(0); if(num_black=2) turn_left
9、(4); num_black=0; /黑线数清零? flag_forward=0; /为直推做好准备,必须写的程序 else xunji_forward_3(); while(flag_forward=0) xunji_forward_3(); if(COUNT_RIGHT=1) flag_forward=1; /直推完成 flag_backward=0; /开始后退的旅程 while(flag_backward=0) back_faward(); if(COUNT_RIGHT=1) flag_backward=1; while(1); */ /-*/文件名: 无 */说 明: 直走90度弯的
10、程序 */作者: */初始时间: */修订记录: */备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯而已,后面num1是被清零的,所以还是在执行循迹 */-* /* if(sensor_inp_forward()=0x1f) num1+; while(sensor_inp_forward()=0x1f); if(num1=2) Eleft(70); while(num24) if(num_right=1) num2+; /DelayMs(1000); while(num_right=1); num1=0; /DelayMs(3000); else xunji_forward
11、_3();*/-*/文件名: Robot_Run.c */说 明: 双足机器人运动函数文件 */作者: */初始时间: */修订记录: */备注: */-*#include Robot_Run.h /不同的车,因为电机接线不一样,对应的这些设置也会有变动,最好自己先测试这几个最基本的动作 uint8 flag_black=0,flag_right=0,flag_left=0; /车前的传感器uint8 sensor_inp_forward() unsigned char sensor_forward; sensor_forward=PTBD; sensor_forward&=0x1F; ret
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国大学生 机器人 搬运 比赛 部分 程序 aw60 gkkd
限制150内