标题:
stm32f103的自动调节角度的源程序
[打印本页]
作者:
韦杰123
时间:
2018-6-23 19:21
标题:
stm32f103的自动调节角度的源程序
用电位器读取角度,通过小车的加速度来控制下面摆杆
单片机源程序如下:
#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
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1