0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

小熊派Hi3861获取mpu6050数据在oled屏幕中显示

聂小生 来源:聂小生 作者:聂小生 2023-08-14 14:39 次阅读

硬件

开发板:小熊派

主控MCU:Hi3861

接线:

MPU6050:

SCL:IO_01

SDA:IO_00

OLED

SCL:IO_09
SDA:IO_10

效果图:

wKgaomTXPKKAKOoBAPY6bJ6j_PA966.png运行效果图

软件方案:

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
    +关注

    关注

    118

    文章

    5986

    浏览量

    221444
  • MPU6050
    +关注

    关注

    38

    文章

    304

    浏览量

    69837
  • Hi3861
    +关注

    关注

    1

    文章

    54

    浏览量

    6223
收藏 人收藏

    评论

    相关推荐

    第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

    MPU6050简介

    MPU6050简介什么是MPU6050MPU6050的特点MPU6050框图MPU6050初始化MPU6050—DMP使用介绍
    发表于 12-06 11:51 67次下载
    <b class='flag-5'>MPU6050</b>简介

    STM32 MPU6050数据获取数据处理

    2.4 STM32 MPU6050数据获取(IIC + DMP)本篇文章主要针对廉价的MPU6050模块。我们这里完成了MPU6050
    发表于 12-06 12:06 33次下载
    STM32 <b class='flag-5'>MPU6050</b><b class='flag-5'>数据</b><b class='flag-5'>获取</b>、<b class='flag-5'>数据</b>处理

    STM32获取MPU6050数据

    STM32获取MPU6050数据
    发表于 12-06 13:06 48次下载
    STM32<b class='flag-5'>获取</b><b class='flag-5'>MPU6050</b><b class='flag-5'>数据</b>

    如何利用小熊派获取MPU6050六轴原始数据

    摘要:使用小熊派开发板,通过硬件IIC与MPU6050六轴传感器模块通信,完成相应寄存器配置,成功获取陀螺仪、加速度计数据。本问主要讲述使用小熊派
    发表于 12-06 14:21 15次下载
    如何利用<b class='flag-5'>小熊派</b><b class='flag-5'>获取</b><b class='flag-5'>MPU6050</b>六轴原始<b class='flag-5'>数据</b>

    K013 基于51/STM32 MPU6050测试 OLED0.96显示原始数据

    图五. 接线六.代码说明1. MPU6050引脚配置2. MPU6050模块写数据与命令函数3. MPU6050模块初始化函数4. MPU6050
    发表于 12-06 16:06 29次下载
    K013 基于51/STM32 <b class='flag-5'>MPU6050</b>测试 <b class='flag-5'>OLED</b>0.96<b class='flag-5'>显示</b>原始<b class='flag-5'>数据</b>

    android 获取gpio电平值_STM32 MPU6050数据获取(IIC + DMP)

    2.4 STM32 MPU6050数据获取(IIC + DMP)本篇文章主要针对廉价的MPU6050模块。我们这里完成了MPU6050
    发表于 12-06 17:06 17次下载
    android <b class='flag-5'>获取</b>gpio电平值_STM32 <b class='flag-5'>MPU6050</b><b class='flag-5'>数据</b><b class='flag-5'>获取</b>(IIC + DMP)

    小熊派Hi3861读取mpu6050数据并在oled显示

    基于小熊派相关代码,修改得到的读取mpu6050数据,并在oled显示
    发表于 08-14 15:00 4次下载