资源简介
智能寻迹机器人源程序及pcb图.机器人的控制采用pid技术。
代码片段和文件信息
//***************************FileName:Robbot.c***********************//
//***************************ICCAVR6.30编译**************************//
#include
#include
//****************************宏定义********************************//
#define Aa 0.5 //PID参数
#define Ba -0.5 //PID参数
#define Ca 0 //PID参数
#define Ab 0.09 //PID参数
#define Bb -0.1 //PID参数
#define Cb 0 //PID参数
#define U1 12 //PID参数
#define MaxSpeed 0x40 //最大速度
#define MidSpeed 0x18 //中速用于转弯
#define Size 6 //任务数组大小
//*****************************全局变量定义**************************//
char sflag=0x00; //记录上一次校偏状态
char crossflag = 0; //过线标志,用于判断是否过线
char forflag=0; //记录上一次机器人行进状态
char forlight; //记录上一次A口光电传感器的状态
float EkA; //本次左边电机速度误差
float EkA_1=0; //上次左边电机速度误差
float EkA_2=0; //上上次左边电机速度误差
float EkB; //本次左边电机速度误差
float EkB_1=0; //上次左边电机速度误差
float EkB_2=0; //上上次左边电机速度误差
char flage=0;
char a=0; //溢出次数,控制PID窗口时间
char c=0; //控制寻线频率
int desireV=10;
char b=0;
char time=0; //机器人行走步数
char fob=0; //=1后退,=0前进
char Task[Size]={0x370x270x1B0x290x230x1B};//任务数据数组
//******************************定时器1初始化*************************//
void Timer1Init(int temptimskint temptccrAint temptccrB)
{unsigned char sreg;
TIMSK = temptimsk;
sreg = SREG; //保存全局中断标志
_CLI(); //屏蔽所有中断
TCCR1A = temptccrA;
TCCR1B = temptccrB;
SREG = sreg; //恢复全局中断标志
}
//******************************写OCR1A寄存器**************************//
void SetOutputComReg1A(int tempocr)
{unsigned char sreg;
sreg = SREG;
_CLI();
OCR1A = tempocr;
SREG = sreg;
}
//******************************写OCR1B寄存器**************************//
void SetOutputComReg1B(int tempocr)
{unsigned char sreg;
sreg = SREG;
_CLI();
OCR1B = tempocr;
SREG = sreg;
}
//******************************读OCR1A寄存器**************************//
int GetOutputComReg1A()
{int temp;
temp = OCR1A;
return(temp);
}
//******************************读OCR1B寄存器**************************//
int GetOutputComReg1B()
{int temp;
temp = OCR1B;
return(temp);
}
//******************************长延时函数***************************//
void DELAY(int delaytime)
{int ij;
for(i=0;i<=delaytime;i++)
{for (j=0;j<=0xFFFE;j++) ;}
}
//******************************短延时函数***************************//
void delay(int i)
{int j;
for(j=0;j<=i;j++) ;
}
//******************************PID调节:左电机***********************//
void PIDA()
{char y; //本次采样速度值
float u; //电压差值
int z; //本次输出增量
int temp1; //临时记录值
y = TCNT1;
Ek
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13339 2005-04-05 14:33 寻迹机器人代码\Robbot._c
文件 13349 2005-04-05 14:33 寻迹机器人代码\Robbot.c
文件 12514 2005-04-05 14:33 寻迹机器人代码\Robbot.cof
文件 8636 2005-04-05 14:33 寻迹机器人代码\Robbot.dbg
文件 60 2005-04-05 14:33 寻迹机器人代码\Robbot.dp2
文件 10506 2005-04-05 14:33 寻迹机器人代码\Robbot.hex
文件 0 2005-04-05 14:33 寻迹机器人代码\Robbot.i
文件 97781 2005-04-05 14:33 寻迹机器人代码\Robbot.lis
文件 11 2005-04-05 14:33 寻迹机器人代码\Robbot.lk
文件 57577 2005-04-05 14:33 寻迹机器人代码\Robbot.lst
文件 486 2005-04-05 14:33 寻迹机器人代码\Robbot.mak
文件 4925 2005-04-05 14:33 寻迹机器人代码\Robbot.mp
文件 27566 2005-04-05 14:33 寻迹机器人代码\Robbot.o
文件 881 2005-04-05 14:33 寻迹机器人代码\Robbot.prj
文件 43894 2005-04-05 14:33 寻迹机器人代码\Robbot.s
文件 43 2005-04-05 14:33 寻迹机器人代码\Robbot.src
目录 0 2006-05-12 17:55 寻迹机器人代码
文件 245760 2005-04-05 14:31 寻迹机器人.ddb
文件 357607 2005-02-24 20:52 图\8-1.tif
文件 942878 2005-03-06 06:59 图\8-10.tif
文件 368600 2005-03-06 07:08 图\8-11.tif
文件 232316 2005-02-24 21:21 图\8-2.tif
文件 1692308 2005-02-25 15:27 图\8-3.tif
文件 316315 2005-02-25 19:37 图\8-4.tif
文件 1174065 2005-02-25 19:47 图\8-5.tif
文件 156201 2005-02-25 19:49 图\8-6.tif
文件 130438 2005-02-25 21:12 图\8-7.tif
文件 1283783 2005-02-25 21:31 图\8-8.tif
文件 342429 2005-02-25 21:50 图\8-9.tif
..A.SH. 36352 2007-01-07 12:03 图\Thumbs.db
............此处省略4个文件信息
- 上一篇:利用一个循环队列实现顺序栈重新排序
- 下一篇:志愿者网站模板
评论
共有 条评论