注册会员
- 积分
- 189
- 威望
- 113
- 贡献
- 52
- 兑换币
- 58
- 注册时间
- 2014-9-22
- 在线时间
- 12 小时
- 毕业学校
- 乌鲁巴基
|
初学摄像头,自己写的舵机控制程序,比较简单,就是求每行黑点下标的平均值为黑线的中心位置。
慢速跑直线还行,一拐弯就出去了。
我弄到几个参赛程序,忒复杂了,看的我脑袋都大了。
我现在调的是循迹,用的7620,希望能得到一份比较简单的舵机控制算法。
先谢谢了!
/*************************************************************/
/*黑线中心定位函数*/
/**********************************************************/
unsigned int black(void)
{
unsigned int i,j; //数组下标变量
unsigned int sum_lie=0,sum_hang=0,num_lie=0,num_hang=0; //行列变量
unsigned int heart=0;
for(i=29;i<38;i++) //只采集29到38行
{
for(j=20;j<100;j++)
{
if(Buffer[i][j]<0x70)
{
sum_lie+=j;
num_lie++;
}
}
sum_hang+=sum_lie/num_lie ;
num_hang++;
}
heart=sum_hang/num_hang; //黑线中心
display1(0,1,heart);
return heart;
}
/*舵机控制函数*/
void construct(void)
{
unsigned int pos=0;
pos=black();
if((pos>50)&&(pos<100))
angle=150+(pos-50); //右偏
if(pos<50)
angle=150-(50-pos); //左偏
if(angle>200) //最大转角保护
angle=200;
if(angle<100)
angle=100;
display1(0,2,angle); //5110
PWMDTY01=angle; //舵机pwm
}
|
|