- // PA0,PA1, 對應四個引腳對應測速的四個角,TIME2
- // PC4,PC5,電機A, PWMA--PB6
- // PC2,PC3,電機B PWMB--PB7
- // PB11--TX, PB10--RX 藍牙
- // PB5 舵機
- /*
- OLED接線定義:
- VCC--3.3V/5V
- GND--GND
- SCL--PB8
- SDA--PB9
- */
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "CeSu.h" //測速文件
- #include "DianJi.h" //電機文件
- #include "Duoji.h" //舵機文件
- #include "LanYa.h" //藍牙文件
- #include "oled_iic.h"
- #define High_speed 90
- #define Low_speed 50
- #define DuoJi_JiaoDu_Init 85
- //extern int16_t LunSuDu[4]; //實際值
- //extern int16_t COUNT[4]; //脈沖計數
- extern u8 receive_data[10];
- extern u8 ChuLi_data[10]; //藍牙命令
- char Buf[128];
- int v=Low_speed,v0=0; //默認初始速度
- int angle=90; //舵機初始角度
- //float i; //測量電壓
-
- //藍牙命令處理
- void MingLing_ChuLi(u8 *MingLing)
- {
-
- if(MingLing[0]=='v') //檢測電壓
- {
- // i=analogRead(sensor)*5;i=i/1024*3; //analogRead(sensor),從指定的模擬引腳中讀取值。
- MingLing[0]='t';
- }
-
- else if(MingLing[0]=='h') {v=High_speed;}//高速模式
-
- else if(MingLing[0]=='l') {v=Low_speed;}//中速模式
-
- else if(MingLing[0]=='1')
- {
- //v0=Low_speed;
- // DuoJi_KongZhi(110); //舵機110°
- motor(v,v);
-
- }
-
- else if(MingLing[0]=='2') {motor(v,-v);} //左轉
-
- else if(MingLing[0]=='3') {motor(-v,v);} //右轉
-
- else if(MingLing[0]=='4')
- {
- // DuoJi_KongZhi(70); //舵機110°
- motor(-v,-v);
- }
-
- else if(MingLing[0]=='5') //舵機角度增加
- {
- if(angle<120)
- {
- angle++;
- MingLing[0]='0';
- }
- else {
- angle=120;
- }
- DuoJi_KongZhi(angle);
- delay_ms(50);
- }
-
- else if(MingLing[0]=='6') //舵機角度減少
- {
- if(angle>60)
- {
- angle--;
- MingLing[0]='0';
- }
- else {
- angle=60;
- }
- DuoJi_KongZhi(angle);
- delay_ms(50);
- }
-
- else if(MingLing[0]=='7') {DuoJi_KongZhi(DuoJi_JiaoDu_Init);} //舵機回到90度
-
- else if(MingLing[0]=='8') {motor(v-40,v);}
-
- else if(MingLing[0]=='9') {motor(v,v-40);}
-
- else if(MingLing[0]=='t')
- {
- Dj_A_FangXiang(3);
- Dj_B_FangXiang(3);
- TIM_SetCompare1(TIM4,0);
- TIM_SetCompare2(TIM4,0);
- DuoJi_KongZhi(DuoJi_JiaoDu_Init);
- }
-
-
- }
- int main(void)
- {
-
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- OLED_Init(); //OLED屏幕初始化
- MOTOR_Init(); //電機PWM控制初始化
- DianJi_PWM_Init();
- Uart3_Init(9600);
- TIM3_PWM_Init(200-1,7200-1); //PWM分頻
- DuoJi_KongZhi(DuoJi_JiaoDu_Init); //舵機90度;
- OLED_Clear();
-
- TIM_SetCompare1(TIM4,0);
- TIM_SetCompare2(TIM4,0);
-
- // TIM2_CAP_Init(0XFFFF,72-1); //這里以1us頻率捕獲脈沖
- // TIM4_Int_Init(1000,72); //不分頻。T=10MS,采集單位時間輪速
- while(1)
- {
- //超聲波測距
-
- //紅外循跡
-
- //接收藍牙串口數據
- MingLing_ChuLi(ChuLi_data);
- //顯示代碼
- sprintf(Buf,"Receive: %s",receive_data);
- OLED_ShowCH(0,0*2,(u8 *)&Buf);
-
- sprintf(Buf,"Data: %s",ChuLi_data);
- OLED_ShowCH(0,1*2,(u8 *)&Buf);
- }
-
- }
復制代碼
代碼下載:
bb-8_stm32源碼.7z
(201 KB, 下載次數: 7)
2021-8-18 22:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|