基于stm32的藍牙加無線重力感應小車
單片機源程序如下:
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "uart3.h"
- #include "pwm.h"
- #include "dj.h"
- #include "stdlib.h"
- #include "math.h"
- #define FRONT 5 //前進上限
- #define AFTER -5 //后退上限
- #define LEFT 5 //左移上限
- #define RIGHT -5 //右移上限
- #define FA_RATE 25
- #define LR_RATE 25
- #define SPEED(x,y) TIM_SetCompare1(TIM2,x);TIM_SetCompare2(TIM2,y)
- #define DJ(A,B,C,D) DJ1=A;DJ2=B;DJ3=C;DJ4=D
- void vehicle_Init(void);
- int main(void)
- {
- u8 *p;
- int sum,sum1,sum2;
- float sum3;
- vehicle_Init(); //小車初始化
-
- while(1)
- {
- if(USART3_RX_STA&0x8000) //判斷一幀數據接收完成
- {
- p=USART3_RX_BUF; //讓p指向第一個角度值
- sum=atoi((char *)p);
- if(sum > FRONT)
- {
- DJ(1,0,1,0);
- sum1 = sum*FA_RATE;
- sum2 = sum*FA_RATE;
- }
- else if(sum< AFTER)
- {
- sum = abs(sum);
- DJ(0,1,0,1);
- sum1 = sum*FA_RATE;
- sum2 = sum*FA_RATE;
- }
- else
- {
- DJ(0,0,0,0);
- sum1 = 0;
- sum2 = 0;
- }
-
- while(*(p) != 0) p++; //讓p指向第二個角度值
- p++;
-
- sum=atoi((char *)p);
- if(sum > LEFT)
- {
- sum3 = sum/90.0;
- sum1 = sum1 - sum1*sum3;
- }
- else if(sum < RIGHT)
- {
- sum = abs(sum);
- sum3 = sum/90.0;
- sum2 = sum2 - sum2*sum3;
- }
- SPEED(sum1,sum2);
- USART3_RX_STA = 0;
- }
- }
- }
- void vehicle_Init()
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷優先級分組
-
- delay_init(); //延時函數初始化
-
- uart_init(9600); //串口1初始化
-
- usart3_init(9600); //串口3初始化
-
- TIM2_PWM_Init(1999,719); //PWM初始化
-
- dj_init(); //電機控制初始化
- }
復制代碼
所有資料51hei提供下載:
小車.rar
(370.67 KB, 下載次數: 24)
2017-12-3 01:17 上傳
點擊文件名下載附件
|