硬件:
开发板:小熊派
主控MCU:Hi3861
接线:
MPU6050:
SCL:IO_01
SDA:IO_00
OLED:
SCL:IO_09
SDA:IO_10
效果图:
运行效果图
软件方案:
MPU6050驱动
这部分代码参考使用小熊派例程代码
初始化引脚:
GpioInit(); IoSetFunc(WIFI_IOT_IO_NAME_GPIO_0, WIFI_IOT_IO_FUNC_GPIO_0_I2C1_SDA); // GPIO_0复用为I2C1_SDA IoSetFunc(WIFI_IOT_IO_NAME_GPIO_1, WIFI_IOT_IO_FUNC_GPIO_1_I2C1_SCL); // GPIO_1复用为I2C1_SCL I2cInit(WIFI_IOT_I2C_IDX_1, 400000); /* baudrate: 400kbps */ I2cSetBaudrate(WIFI_IOT_I2C_IDX_1, 400000);
OLED驱动
相关代码在文末附件中。
在oled.c中初始化引脚:
//初始化 GpioInit(); //GPIO_10复用为I2C0_SDA IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_I2C0_SDA); //GPIO_9复用为I2C0_SCL IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_I2C0_SCL); //baudrate: 400kbps I2cInit(WIFI_IOT_I2C_IDX_0, 400000); I2cSetBaudrate(WIFI_IOT_I2C_IDX_0, 400000);
在主线程中获取mpu6050数据,并在oled显示
// 定义陀螺仪数据 Sensor_Data_TypeDef Sensor_Data; char array[64]; static int task_sensor_entry(void) { float k = 127.0/4200; OLED_Init(); Sensor_Init(); OLED_Clear(); while(1) { //OLED_Show(); usleep(100000); // 读取数据 Sensor_Read_Data(); // 逻辑处理 printf("Accel[0]:%6d Accel[1]:%6d Accel[2]:%6drn", (int)Sensor_Data.Accel[0],(int)Sensor_Data.Accel[1],(int)Sensor_Data.Accel[2]); // 显示实时数据 memset(array, 0, sizeof(array) - 1); sprintf(array, "x:%6d", (int)Sensor_Data.Accel[0]); OLED_ShowString(0,0,array,16); memset(array, 0, sizeof(array) - 1); sprintf(array, "y:%6d", (int)Sensor_Data.Accel[1]); OLED_ShowString(0,20,array,16); OLED_ProcessBar(0,40,(int)((Sensor_Data.Accel[1]+2100)*k)); OLED_Refresh(); } return 0; } static void OC_mpu6050_oled(void) { osThreadAttr_t attr; attr.name = "task_main_entry"; attr.attr_bits = 0U; attr.cb_mem = NULL; attr.cb_size = 0U; attr.stack_mem = NULL; attr.stack_size = 2048; attr.priority = 25; attr.name = "task_sensor_entry"; if (osThreadNew((osThreadFunc_t)task_sensor_entry, NULL, &attr) == NULL) { printf("Falied to create task_sensor_entry!n"); } } APP_FEATURE_INIT(OC_mpu6050_oled);
相关代码文件
完整代码在资源中
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
OLED
+关注
关注
119文章
6219浏览量
224706 -
MPU6050
+关注
关注
39文章
307浏览量
71617 -
Hi3861
+关注
关注
1文章
62浏览量
6595
发布评论请先 登录
相关推荐
第6节 Hi3861 OLED屏幕驱动 基于鸿蒙系统
`` 本帖最后由 jf_39160458 于 2020-10-2 22:37 编辑
Hi3861 OLED驱动Hispark WiFi开发套件又提供一个OLED屏幕,但是鸿蒙源码
发表于 10-02 22:33
【HarmonyOS HiSpark Wi-Fi IoT套件】I2C驱动 Hi3861 驱动OLED屏幕显示
,大家自己下载。(2)设置I2C引脚复用确定i2c引脚,查看原理图,可以看到OLED屏幕使用到的是I2C0,引脚是GPIO13、GPIO14所以我们需要修改源码,在vendor\hisi\hi
发表于 10-16 09:26
MPU6050模块
下载,在公众号:小白学移动机器人,发送:MPU6050,即可获得。2.4.1 解决的问题DMP库的移植(文件已被更改过,更好的移植)MPU6050数据的
发表于 08-09 07:17
利用小熊派获取MPU6050六轴原始数据的过程
摘要:使用小熊派开发板,通过硬件IIC与MPU6050六轴传感器模块通信,完成相应寄存器配置,成功获取陀螺仪、加速度计数据。本问主要讲述使用小熊派
发表于 02-10 07:00
STM32 MPU6050模块数据获取
下载,在公众号:小白学移动机器人,发送:MPU6050,即可获得。2.4.1 解决的问题DMP库的移植(文件已被更改过,更好的移植)MPU6050数据的
发表于 02-10 06:01
Hi3861润和开发板+小熊派,智能家居项目
+华为云IoTDA+Android APP......Haohanyh-HAMOS-ProjectX是我们的一个LiGHTs计划中的部分,目的就是开源我们在hi3861上与物联网(智能家居)上做的探索
发表于 04-30 00:37
MPU6050原始数据处理
我用MPU6050接到小熊派开发版上读取到加速度原始数据,按照网上说的公式转换成加速度,加速度基本上都是在0附近,要大力快速晃动MPU6050
发表于 05-17 19:28
轻量系统:小熊派BearPi-HM Nano(HI3861)
开发板名称(芯片型号)
小熊派BearPi-HM Nano(HI3861)
芯片架构
CPU频率
介绍(字数请控制在200字以内)
小熊派BearPi-HM Nano外型上延续了三
发表于 10-19 11:10
STM32 MPU6050数据获取、数据处理
下载,在公众号:小白学移动机器人,发送:MPU6050,即可获得。2.4.1 解决的问题DMP库的移植(文件已被更改过,更好的移植)MPU6050数据的
发表于 12-06 12:06
•33次下载
如何利用小熊派获取MPU6050六轴原始数据
摘要:使用小熊派开发板,通过硬件IIC与MPU6050六轴传感器模块通信,完成相应寄存器配置,成功获取陀螺仪、加速度计数据。本问主要讲述使用小熊派
发表于 12-06 14:21
•18次下载
K013 基于51/STM32 MPU6050测试 OLED0.96显示原始数据
. 接线六.代码说明1. MPU6050引脚配置2. MPU6050模块写数据与命令函数3. MPU6050模块初始化函数4. MPU6050
发表于 12-06 16:06
•29次下载
android 获取gpio电平值_STM32 MPU6050数据获取(IIC + DMP)
下载,在公众号:小白学移动机器人,发送:MPU6050,即可获得。2.4.1 解决的问题DMP库的移植(文件已被更改过,更好的移植)MPU6050数据的
发表于 12-06 17:06
•17次下载
评论