一、简介
续上文,电机驱动部分完成,接下来我们给他加上一个OLED的显示功能和MPU6050的姿态检测功能
二、姿态角显示开发
2.1 MPU6050简介
MPU6050是一种集成了3轴陀螺仪和3轴加速度计的数字运动处理器。它由英飞凌公司开发,可用于测量物体的角速度、加速度和方向,广泛应用于机器人、无人机、游戏手柄、智能手机和运动监测等领域。MPU6050采用I2C接口进行通信,具有低功耗、高精度、小尺寸等特点,是一款非常优秀的运动传感器。
2.2 OLED简介
OLED(Organic Light Emitting Diode)是有机发光二极管,是一种新型的显示技术。与传统的液晶显示屏相比,OLED显示屏具有更高的对比度、更快的响应速度、更广的视角、更薄的厚度和更低的功耗。
OLED显示屏是由一系列有机材料制成的薄膜堆叠而成,其中包括发光材料、电子传输材料和电极材料等。当电流通过这些材料时,它们会发出光,形成图像。OLED显示屏可以实现高分辨率、真实的颜色和高亮度。
2.3 驱动开发
OLED、MPU6050都是采用的IIC通信方式,我们简单介绍一下IIC通信的原理
2.3.1 IIC 通信
2.3.1.1 概念
IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。
2.3.1.2 实践—代码编写
我们通过SDA、SCL两条总线来进行数据传输通信,首先我们要确定OLED、MPU6050的设备地址,我们通过查看数据手册可得到,他们的地址分别为0x78、0X68,由此可写出他们的IIC驱动代码
/***********************0.96OLED******************************** void OLED_Write_IIC_Command(unsigned char IIC_Command) { OLED_IIC_Start(); OLED_Write_IIC_Byte(0x78); //Slave address,SA0=0 OLED_IIC_Wait_Ack(); OLED_Write_IIC_Byte(0x00); //write command OLED_IIC_Wait_Ack(); OLED_Write_IIC_Byte(IIC_Command); OLED_IIC_Wait_Ack(); OLED_IIC_Stop(); } ***********************************************************/ /*************************MPU6050**************************** u8 MPU_Write_Byte(u8 reg,u8 data) { MPU_IIC_Start(); MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令 if(MPU_IIC_Wait_Ack()) //等待应答 { MPU_IIC_Stop(); return 1; } MPU_IIC_Send_Byte(reg); //写寄存器地址 MPU_IIC_Wait_Ack(); //等待应答 MPU_IIC_Send_Byte(data);//发送数据 if(MPU_IIC_Wait_Ack()) //等待ACK { MPU_IIC_Stop(); return 1; } MPU_IIC_Stop(); return 0; } ***********************************************************/
2.4 效果演示
审核编辑:汤梓红
-
传感器
+关注
关注
2550文章
51041浏览量
753101 -
处理器
+关注
关注
68文章
19264浏览量
229665 -
OLED
+关注
关注
119文章
6198浏览量
224119 -
STM32
+关注
关注
2270文章
10896浏览量
355759 -
平衡小车
+关注
关注
1文章
39浏览量
12500
发布评论请先 登录
相关推荐
评论