標(biāo)題:
stm32f103的自動(dòng)調(diào)節(jié)角度的源程序
[打印本頁]
作者:
韋杰123
時(shí)間:
2018-6-23 19:21
標(biāo)題:
stm32f103的自動(dòng)調(diào)節(jié)角度的源程序
用電位器讀取角度,通過小車的加速度來控制下面擺桿
單片機(jī)源程序如下:
#include "stm32f10x.h"
#include "sys.h"
#include "usart.h"
#include "adc.h"
#include "Ultrasonic.h"
#include "control.h"
//u32 Distance1,Distance2;
float Set_Angle;
//角速度和角度向左為正,向右為負(fù)
extern u32 TIM1_CH1_Time; //CH1測量方波1的高電平時(shí)間,用于計(jì)算占空比
extern u32 TIM1_CH4_Time; //CH4測量方波2的兩個(gè)上升沿間隔時(shí)間,用于計(jì)算周期
extern u16 TIM1CH1_CAPTURE_STA ; //通道1輸入捕獲標(biāo)志,15位做捕獲標(biāo)志,低15位做溢出標(biāo)志
extern u16 TIM1CH1_CAPTURE_UPVAL,TIM1CH1_CAPTURE_DOWNVAL;
extern u16 TIM1CH4_CAPTURE_STA; //通道1輸入捕獲標(biāo)志,15位做捕獲標(biāo)志,低15位做溢出標(biāo)志
extern u16 TIM1CH4_CAPTURE_UPVAL,TIM1CH4_CAPTURE_DOWNVAL;
int KEY1_Num,KEY2_Num,KEY3_Num,KEY4_Num;
int m;
int n=0;
int a=0;
float Place;
float Angle;
float Speed_Left,Speed_Right;
float angle1; //角度傳感器所得角度
float temp;
u8 dir=1;
u8 d[15];
int main(void)
{
vu8 key=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
OLED_Init();
KEY_Init();
// uart_init(9600);
PWM_Init(7199,0); //10KHZ
Ultrasonic_Init();
TIM3_Cap_Init(0XFFFF,72-1); //=====超聲波初始化
TIM5_Time_Init(4999,7199);
Adc_Init();
BEEP_Init();
while(1)
{
angle1=Get_angle1_Average(4,5);
Ultrasonic_Dis_Turn();
Ultrasonic_Trig();
// Place=Dis_FIR.FRONT;
// Place=Dis_FIR.FRONT;
// Angle1_PID(angle1,2000);
// SetSpeed=Place_PID(Place);
OLED_ShowString(0,0,"Dis_FIR");
OLED_ShowNum(60,0,Dis_FIR.FRONT,5,12);
OLED_ShowString(0,1,"Dis_BACK");
OLED_ShowNum(60,1,Dis_FIR.BACK,5,12);
OLED_ShowString(0,2,"angle1");
OLED_ShowNum(60,2,angle1,5,12);
OLED_ShowString(0,3,"PWMA");
OLED_Float(60,3,PWMA,1);
OLED_ShowString(0,4,"PWMB");
OLED_Float(60,4,PWMB,1);
Angle1_PID(angle1,2235);
Angle_PWM=Angle1_PID(angle1,2190);
Set_Pwm(Angle_PWM,Angle_PWM);
// Angle1_PID(angle1,2235);
// Angle_PWM=Angle1_PID(angle1,2235);
// Set_Pwm(Angle_PWM,Angle_PWM);
delay_ms(10);
key=KEY_Scan(0); //得到鍵值
if(key)
{
switch(key)
{
case KEY0_PRES: //控制LED0翻轉(zhuǎn)
Set_Pwm(1500,1500);
break;
case KEY1_PRES: //控制LED0翻轉(zhuǎn)
// Angle1_PID(angle1,2235);
// Angle_PWM=Angle1_PID(angle1,2235);
// Set_Pwm(Angle_PWM,Angle_PWM);
delay_ms(10);
break;
case KEY2_PRES: //控制LED0翻轉(zhuǎn)
Turn_Off();
break;
// case KEY3_PRES: //控制LED1翻轉(zhuǎn)
// LED1=!LED1;
}
}
}
}
// key=KEY_Scan(0); //得到鍵值
// if(key)
// {
// switch(key)
// {
// case KEY1_PRES: //控制LED0翻轉(zhuǎn)
// Turn_Off();
// break;
// case KEY2_PRES: //控制LED0翻轉(zhuǎn)
// LED1=!LED1;
// break;
// case KEY3_PRES: //控制LED1翻轉(zhuǎn)
// LED1=!LED1;
// break;
// case KEY0_PRES: //同時(shí)控制LED0,LED1翻轉(zhuǎn)
// LED2=!LED2;
// LED1=!LED1;
// break;
復(fù)制代碼
所有資料51hei提供下載:
F1小車.rar
(317.32 KB, 下載次數(shù): 7)
2018-6-24 06:15 上傳
點(diǎn)擊文件名下載附件
f1小車全套
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1