注册会员
- 积分
- 170
- 威望
- 92
- 贡献
- 56
- 兑换币
- 54
- 注册时间
- 2017-7-24
- 在线时间
- 12 小时
- 毕业学校
- 燕山大学
|
void main()
{
camera_init(imgbuff);
set_vector_handler(PORTA_VECTORn , PORTA_IRQHandler);//设置 PORTA 的中断服务函数为 PORTA_IRQHandler
set_vector_handler(DMA0_VECTORn , DMA0_IRQHandler); //设置 DMA0 的中断服务函数为 PORTA_IRQHandler
ftm_pwm_init(S3010_FTM, S3010_CH,S3010_HZ,185);
//ftm_pwm_init(FTM0, FTM_CH2,20*1000,500);
//ftm_pwm_init(FTM0, FTM_CH3,20*1000,500);
while(1)
{
camera_get_img();//摄像头获取图像
img_extract(img, imgbuff,CAMERA_SIZE); //解压图像
vcan_sendimg(img, CAMERA_W * CAMERA_H);
image();
}
}
void image(void)
{
int s,z;
int middlex,middley;
for(i=0;i<80;i++)
{
for(j=0;j<60;j++)
{
if(img[i][j]==0)
{
wide[p]=i;
high[p]=j;
p++;
}
}
}
max=wide[0];
min=wide[0];
MAX=high[0];
MIN=high[0];
for(x=0;x<p-2;x++)
{
if(max<wide[x])
max=wide[x];
if(min>wide[x])
min=wide[x];
}
for(y=0;y<p-2;y++)
{
if(MAX<high[y])
MAX=high[y];
if(MIN>high[y])
MIN=high[y];
}
m=(max+min)/2;
n=(MAX+MIN)/2;
if(30<m<50)
z=195;
if(0<=m<=30)
{
middlex=35-m;//两点横坐标之差
middley=n-30;//两点纵坐标之差
//s=atan(n/m)*180/pi;
s=(int)atan(middley/middlex);
if(s<=30)
z=(int)(0.67*s);
else
z=205;
}
if(50<=m<=80)
{
middlex=m-35;//两点横坐标之差
middley=n-30;//两点纵坐标之差
//s=atan(n/m)*180/pi;
s=(int)atan(middley/middlex);
if(s<=30)
z=(int)(0.67*s);
else
z=185;
}
//ftm_pwm_duty(FTM0,FTM_CH2,600);
//ftm_pwm_duty(FTM0,FTM_CH3,600);
ftm_pwm_duty(S3010_FTM,S3010_CH,z);
}
|
|