全国大学生机器人搬运比赛部分程序(aw60)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)