1.舵机云台
功能实现:STM32F103单片机芯片调整云台的倾斜角度,使其保持水平
3D打印的两轴云台模型
3D打印的两轴云台模型
2.MPU6050传感器测量倾斜角度
3.OLED显示传感器状态(三轴角度)
OLED/MPU6050
4.使用STM32F103C8T6系统板
STM32F103C8T6
云台水平状态(约0度)
5.云台状态展示
云台水平状态(约0度)
45度角调整(MPU6050为-45度)
45度角调整(MPU6050为-45度)
6.主函数如下
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "ioi2c.h"
- #include "MPU6050.h"
- #include "pwm_output.h"
- #include "oled.h"
- int main(void)
- {
- float Pitch,Roll,Yaw;
-
- delay_init();
- IIC_Init();
- NVIC_Configuration();
- uart_init(9600); //串口显示
- DMP_Init(); //DMP初始化
- TIM_Init(); //定时器初始化
- delay_ms(8000);
- OLED_Init(); //OLED初始化
- OLED_Clear();
-
- delay_ms(10000);
- OLED_Clear(); //OLED清屏
-
- //界面显示
- OLED_ShowCHinese(16,0,1);
- OLED_ShowCHinese(30,0,2);
- OLED_ShowCHinese(44,0,3);
- OLED_ShowCHinese(58,0,4);
- OLED_ShowCHinese(72,0,5);
- OLED_ShowCHinese(86,0,6);
- OLED_ShowCHinese(100,0,7);
-
- OLED_ShowChar(0,3,'X',13);
- OLED_ShowChar(0,5,'Y',13);
- OLED_ShowChar(0,7,'Z',13);
-
- OLED_ShowChar(14,3,':',13);
- OLED_ShowChar(14,5,':',13);
- OLED_ShowChar(14,7,':',13);
- OLED_ShowChar(56,3,'.',13);
- OLED_ShowChar(56,5,'.',13);
- OLED_ShowChar(56,7,'.',13);
-
- //不断读取MPU6050数据
- while(1)
- {
- MPU_DMP_GET_DATA(&Pitch,&Roll,&Yaw); //获取角度值
-
- if(Pitch<0)
- {
- OLED_ShowChar(28,3,'-',13);
- Pitch=-Pitch;
- OLED_ShowNum(36,3,(int)Pitch,3,13); //x轴
- OLED_ShowNum(62,3,(int)(Pitch*10)%10,1,13);
- TIM_SetCompare1(TIM3,180+Pitch);
- }
- else
- {
- OLED_ShowChar(28,3,' ',13);
- OLED_ShowNum(36,3,Pitch,3,13);
- OLED_ShowNum(62,3,(int)(Pitch*10)%10,1,13);
- TIM_SetCompare1(TIM3,180-Pitch);
- }
-
- if(Roll<0)
- {
- OLED_ShowChar(28,5,'-',13);
- Roll=-Roll;
- OLED_ShowNum(36,5,(int)Roll,3,13); //y轴
- OLED_ShowNum(62,5,(int)(Roll*10)%10,1,13);
- }
- else
- {
- OLED_ShowChar(28,5,' ',13);
- OLED_ShowNum(36,5,(int)Roll,3,13);
- OLED_ShowNum(62,5,(int)(Roll*10)%10,1,13);
- }
-
- if(Yaw<0)
- {
- OLED_ShowChar(28,7,'-',13);
- Yaw=-Yaw;
- OLED_ShowNum(36,7,(int)Yaw,3,13); //z轴
- OLED_ShowNum(62,7,(int)(Yaw*10)%10,1,13);
- TIM_SetCompare4(TIM3,180+Yaw);
- }
- else
- {
- OLED_ShowChar(28,7,' ',13);
- OLED_ShowNum(36,7,(int)Yaw,3,13);
- OLED_ShowNum(62,7,(int)(Yaw*10)%10,1,13);
- TIM_SetCompare4(TIM3,180-Yaw);
- }
- }
- }
复制代码 全部程序51hei下载地址:
舵机云台.7z
(250.03 KB, 下载次数: 526)
|