全国大学生机器人搬运比赛部分程序(aw60)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图1比赛场地示意图

图2机器人出发区示意图4

//-------------------------------------------------------------------------*

//机器人搬运比赛程序如下:

// 项目名: 基于Freescale AW60的 *

// 硬件连接: *

// 程序描述: 定时器2作为颜色传感器计数器;定时器1通道0-1作为PWM输出;通道2作为颜色传感器的定时器溢出中断

// 超声波计数用定时器1 *

// 说明: *

// ? *

// *

// 作者信息? *

// 版本信息? *

// 完成时间? *

// 修订记录: * // 时间: *

// 容:? *

//-------------------------------------------------------------------------* //调用头文件

#include "Includes.h"

void main(void)

{

//定义变量,不管在主程序还是子函数,都需要把变量的定义放在最前面,否则会报错 int 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的外部时钟输入

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)

//TPMinit(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)

{

//-------------------------------------------------------------------------* //文件名: 无 *

//说明: 完成直推三个目标 *

//作者:

*

//初始时间: *

//修订记录:

*

//备注:程序顺序执行一遍就走完了全程,回到出发区

*

//-------------------------------------------------------------------------*

/*

while(num_black<2)

{

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(1000); //等待黑线的过去

if(COUNT_RIGHT==1)

{

flag_backward=1;

}

}

turn_left(2); //左转90角度 .推第二个目标

while(flag_forward==0)

{

xunji_forward_3();

if(COUNT_RIGHT==1)

相关文档
最新文档