內(nèi)含Android控制APP,近期編寫的現(xiàn)在分享給大家
0.png (9.24 KB, 下載次數(shù): 49)
下載附件
2019-1-9 17:03 上傳
安卓app源碼
0.png (6.96 KB, 下載次數(shù): 40)
下載附件
2019-1-9 17:03 上傳
單片機源程序如下:
- #include "stm32f10x.h"
- #include "inv_mpu_dmp_motion_driver.h"
- #include "math.h"
- #include "inv_mpu.h"
- #include "oled.h"
- #include "delay.h"
- #include "adc.h"
- #include "motor.h"
- #include "mpuiic.h"
- #include "mpu6050.h"
- #include "timer.h"
- #include "usart1.h"
- extern int Moto1,Moto2; //電機PWM變量 應是Motor的 向Moto致敬
- extern u8 data[2]; //WIFI數(shù)據(jù)
- short aacx=0,aacy=0,aacz=0; //加速度值
- float pitch,roll,yaw=0; //歐拉角
- short y_angle=0; //Y軸角度
- int TIM_2=0,TIM_4=0; //編碼器脈沖數(shù)
- int Battery=0; //電池電壓
- int Balance_PWM=0; //角度環(huán)輸出脈沖
- int Velocity_PWM=0; //速度環(huán)輸出脈沖
- int Turn_PWM=0; //轉(zhuǎn)向變量
- int main(void)
- {
-
- delay_init(); //延時函數(shù)初始化
- OLED_Init(); //OLED初始化
- MiniBalance_PWM_Init(7199,0);
- Encoder_Init_TIM2(); //初始化編碼器左
- Encoder_Init_TIM4(); //初始化編碼器右
- USART1_Init(115200); //初始化串口1
- ESP8266_Init(); //初始化ESP8266參數(shù)
- Adc_Init(); //ADC初始化
- MPU_Init(); //MPU6050參數(shù)初始化
- mpu_dmp_init(); //MPU6050_DMP初始化
- TIM1_Int_Init(4999,71); //5ms的定時器中斷
- OLED_Fill(0x00); //清屏
- OLED_Str_8x16(0,0,"Battery:");
- OLED_Str_8x16(80,0,".");
- OLED_Str_8x16(96,0,"V");
- while(1)
- {
-
- Battery=(Get_Adc_Average(8,10)*0.004028)*10;//計算電池電壓
- OLED_Number_8x16(64,0,Battery/100);
- OLED_Number_8x16(72,0,Battery%100/10);
- OLED_Number_8x16(88,0,Battery%10);
- }
- }
- /*============================= TIM3定時5ms================================*/
- void TIM1_UP_IRQHandler(void)
- {
- if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//判斷是否更新中斷
- {
- TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除中斷標志位
- TIM_2=-Read_Encoder(2);//獲取右輪脈沖值
- TIM_4=Read_Encoder(4);//獲取左輪脈沖值
- if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0&&MPU_Get_Gyroscope(&aacx,&aacy,&aacz)==0)//獲取歐拉角和加速度值
- {
-
- Balance_PWM=balance(roll,aacx);//直立環(huán)
- Velocity_PWM=velocity(TIM_2,TIM_4);//速度環(huán)
- Moto1=Balance_PWM-Velocity_PWM+Turn_PWM;//計算右輪PWM值
- Moto2=Balance_PWM-Velocity_PWM-Turn_PWM;//計算左輪PWM值
- Xianfu_Pwm();//PWM限幅
- Set_Pwm(Moto1,Moto2);//賦值給PWM寄存器
- Motor_Off(roll); //實時監(jiān)測角度 大于或小于50度時 強制停止電機
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
平衡小車APP.7z
(5.07 MB, 下載次數(shù): 33)
2019-1-9 17:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
平衡小車STM32程序.7z
(252.55 KB, 下載次數(shù): 43)
2019-1-9 17:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|