用電位器讀取角度,通過小車的加速度來控制下面擺桿
單片機源程序如下:
- #include "stm32f10x.h"
- #include "sys.h"
- #include "usart.h"
- #include "adc.h"
- #include "Ultrasonic.h"
- #include "control.h"
- //u32 Distance1,Distance2;
- float Set_Angle;
- //角速度和角度向左為正,向右為負
- extern u32 TIM1_CH1_Time; //CH1測量方波1的高電平時間,用于計算占空比
- extern u32 TIM1_CH4_Time; //CH4測量方波2的兩個上升沿間隔時間,用于計算周期
- extern u16 TIM1CH1_CAPTURE_STA ; //通道1輸入捕獲標志,15位做捕獲標志,低15位做溢出標志
- extern u16 TIM1CH1_CAPTURE_UPVAL,TIM1CH1_CAPTURE_DOWNVAL;
- extern u16 TIM1CH4_CAPTURE_STA; //通道1輸入捕獲標志,15位做捕獲標志,低15位做溢出標志
- 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翻轉
- Set_Pwm(1500,1500);
- break;
- case KEY1_PRES: //控制LED0翻轉
- // Angle1_PID(angle1,2235);
- // Angle_PWM=Angle1_PID(angle1,2235);
- // Set_Pwm(Angle_PWM,Angle_PWM);
- delay_ms(10);
- break;
- case KEY2_PRES: //控制LED0翻轉
- Turn_Off();
- break;
- // case KEY3_PRES: //控制LED1翻轉
- // LED1=!LED1;
-
- }
- }
- }
- }
- // key=KEY_Scan(0); //得到鍵值
- // if(key)
- // {
- // switch(key)
- // {
- // case KEY1_PRES: //控制LED0翻轉
- // Turn_Off();
- // break;
- // case KEY2_PRES: //控制LED0翻轉
- // LED1=!LED1;
- // break;
- // case KEY3_PRES: //控制LED1翻轉
- // LED1=!LED1;
- // break;
- // case KEY0_PRES: //同時控制LED0,LED1翻轉
- // LED2=!LED2;
- // LED1=!LED1;
- // break;
復制代碼
所有資料51hei提供下載:
F1小車.rar
(317.32 KB, 下載次數: 7)
2018-6-24 06:15 上傳
點擊文件名下載附件
f1小車全套 下載積分: 黑幣 -5
|