大学生电子设计竞赛B题风力摆源程序文档格式.docx
- 文档编号:21722853
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:16.38KB
大学生电子设计竞赛B题风力摆源程序文档格式.docx
《大学生电子设计竞赛B题风力摆源程序文档格式.docx》由会员分享,可在线阅读,更多相关《大学生电子设计竞赛B题风力摆源程序文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
floatet,et2,etsum,det,output,etp,etp2,etsump,detp,outputp;
floatkp,ki,kd;
voidpid()
{
et=setpoint-roll;
if(et>
0)
{etsum=etsum+et;
det=et-et2;
output=kp*et+ki*etsum+kd*det;
et2=et;
}
if(et<
=0)
{output=24900;
voidpid2()//ó
′?
DD?
ypitch
etp=setpoint-pitch;
etp=fabs(etp);
if(etp>
=2)
{etsump=etsump+etp;
detp=etp-etp2;
outputp=kp*etp+ki*etsump+kd*detp;
if((et>
=0)&
&
(et<
2))
{outputp=24000;
etp2=etp;
voidpid4r()
//ó
y
et=fabs(et);
=2)
if((et>
{output=24000;
voidpid4p()//ó
voidpid5r()
voidpid5p()//ó
etp=setpoint-pitch;
if(etp>
{etsump=etsump+etp;
if(etp<
{outputp=24900;
voidinit_all()
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init();
//?
ó
ê
±
oˉê
y3?
ˉ
uart_init(500000);
//′?
ú
3?
ˉ?
a9600
usmart_dev.init(72);
LED_Init();
//3?
ˉó
LEDá
μ?
2?
t?
KEY_Init();
ˉ°
ü
OLED_Init();
ˉLCD
MPU_Init();
ˉMPU6050
mpu_dmp_init();
TIM3_OC1PWM_Init(59999,2);
TIM3_OC2PWM_Init(59999,2);
TIM3_OC3PWM_Init(59999,2);
TIM3_OC4PWM_Init(59999,2);
OLED_ShowString(8,0,"
WaveByWind"
);
OLED_Refresh_Gram();
while(mpu_dmp_init())
{OLED_Clear();
OLED_ShowString(8,0,"
6050Error"
OLED_Refresh_Gram();
delay_ms(400);
}
OLED_Clear();
intmain(void)
{
init_all();
while
(1)//1|?
£ê
CHOOSE"
OLED_ShowString(8,16,"
ABCDEF"
OLED_ShowString(8,32,"
123456"
if(!
KEYA){delay_ms(100);
if(!
KEYA){gotofunction1;
}}
KEYB){delay_ms(100);
KEYB){gotofunction2;
KEYC){delay_ms(100);
KEYC){gotofunction3;
}}
KEYD){delay_ms(100);
KEYD){gotofunction4;
KEYE){delay_ms(100);
KEYE){gotofunction5;
KEYF){delay_ms(100);
KEYF){gotofunction6;
}}
}
function1:
while
(1)
{
function2:
rx=15;
kp=8000,ki=2,kd=1;
while
(1)
{
OLED_ShowString(72,0,"
RX"
OLED_ShowString(72,16,"
P"
OLED_ShowString(72,32,"
I"
OLED_ShowString(72,48,"
D"
KEYA){kp+=1000;
KEYB){kp-=1000;
KEYC){delay_ms(50);
KEYC){ki+=1;
KEYD){delay_ms(50);
KEYD){ki-=1;
KEYC){kd+=1;
KEYD){kd-=1;
KEYG){delay_ms(100);
KEYG){rx++;
KEYH){delay_ms(100);
KEYH){rx--;
c=atan(rx/79.0);
setpoint=c*180/3.14;
OLED_ShowNum(80,0,rx,5,16);
y2?
OLED_ShowNum(80,16,kp,5,16);
OLED_ShowNum(80,32,ki,5,16);
D?
OLED_ShowNum(80,48,kd,5,16);
angeldisplay();
//?
KEY1){delay_ms(100);
KEY1){gotolooprun1;
looprun1:
mpu_dmp_get_data(&
pitch,&
roll,&
yaw);
//μ?
if(roll>
{
pid();
zk4=output;
if(zk4>
=31000){zk4=31000;
if(zk4<
=24900){zk4=24900;
TIM_SetCompare4(TIM3,zk4);
TIM_SetCompare2(TIM3,24000);
if(roll<
{
roll=-roll;
pid();
zk2=output;
if(zk2>
=31000){zk2=31000;
if(zk2<
=24900){zk2=24900;
TIM_SetCompare2(TIM3,zk2);
TIM_SetCompare4(TIM3,24000);
//è
//?
ˉ3é
-è
}
function3:
}
function4:
setpoint=0;
kp=4000,ki=1,kd=1;
OLED_ShowString(72,0,"
s"
KEYA){kp+=100;
KEYB){kp-=100;
KEYG){setpoint++;
KEYH){setpoint--;
OLED_ShowNum(80,0,setpoint,5,16);
KEY1){gotolooprun4;
looprun4:
if((roll<
(pitch<
0))
pid4r();
pid4p();
zk3=outputp;
=27000){zk4=27000;
=24000){zk4=24000;
if(zk3>
=27000){zk3=27000;
if(zk3<
=24000){zk3=24000;
TIM_SetCompare3(TIM3,zk3);
TIM_SetCompare1(TIM3,24000);
0)&
(pitch>
zk1=outputp;
if(zk1>
=27000){zk1=27000;
if(zk1<
=24000){zk1=24000;
TIM_SetCompare1(TIM3,zk1);
TIM_SetCompare3(TIM3,24000);
}
if((roll>
zk1=outputp;
=27000){zk2=27000;
=24000){zk2=24000;
if(zk1>
}
if(zk3>
}
function5:
setpoint=10;
kp=6000,ki=2,kd=1;
KEY1){gotolooprun5;
looprun5:
setpoint=10;
pid5r();
pid5p();
zk3=outputp;
pid5r();
}
function6:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学生 电子设计 竞赛 风力 源程序