原创 [Studio] 零知开源分享 - MPU6050六轴数据输出

2019-10-11 13:50 2419 9 2 分类: MCU/ 嵌入式 文集: 测试测量
MPU6050模块应用于零知平台,使用该模块测量三轴加速度和三轴陀螺仪数据。
硬件准备
(1)零知开发板 
 
(2)MPU6050模块
 
(3)杜邦线若干
1、电路连接
电路连接很简单,把模块的SCL和SDA引脚分别接到零知标准板的A5和A4引脚,即用I2C接口,供电3.3V即可。
 
2、程序烧录
打开零知开发工具,找到相应代码即可。

 
 
3、核心代码如下:
  1. /* I2C interface MPU6050 demo
  2. * powered by   零知实验室
  3. */
  4. #include "MPU6050.h"

  5. // 默认I2C地址为 0x68
  6. // AD0 low = 0x68
  7. // AD0 high = 0x69

  8. MPU6050 accelgyro;

  9. int16_t ax, ay, az;//三轴加速度值
  10. int16_t gx, gy, gz;//三轴陀螺仪值

  11. float nax,nay,naz;
  12. float ngx,ngy,ngz;//转换后的实际值

  13. #define LED_PIN LED_BUILTIN
  14. bool blinkState = false;

  15. void setup() {

  16.     Serial.begin(9600);

  17.     // MPU6050初始化设置
  18.     Serial.println("Initializing I2C devices...");
  19.     accelgyro.initialize();

  20.     // verify connection
  21.     Serial.println("Testing device connections...");
  22.         if(accelgyro.testConnection()){
  23.                 Serial.println("MPU6050 connection successful");
  24.         }else{
  25.                 Serial.println("MPU6050 connection failed");
  26.         }
  27.      
  28.     //使用LED进行指示
  29.     pinMode(LED_PIN, OUTPUT);
  30.          
  31. //        accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度参数
  32. //        accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺仪
  33. }

  34. void loop() {
  35.     // 获取原始的数值:三轴加速度值和三轴陀螺仪数值
  36.     accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  37.     // 分别获取
  38.     //accelgyro.getAcceleration(&ax, &ay, &az);
  39.     //accelgyro.getRotation(&gx, &gy, &gz);

  40.     // 显示打印
  41.     Serial.print(" acc:\t");
  42.     Serial.print(ax); Serial.print("\t");
  43.     Serial.print(ay); Serial.print("\t");
  44.     Serial.print(az); Serial.print("\t");
  45.         Serial.print("\t gyro:\t");
  46.     Serial.print(gx); Serial.print("\t");
  47.     Serial.print(gy); Serial.print("\t");
  48.     Serial.println(gz);
  49.          
  50.         //实际数值转换
  51.         accelgyro.readNormalizeAccel(&nax,&nay,&naz);
  52.         accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
  53.         Serial.print("Normalize acc:\t");
  54.     Serial.print(nax); Serial.print("\t");
  55.     Serial.print(nay); Serial.print("\t");
  56.     Serial.print(naz); Serial.print("\t");
  57.         Serial.print("\t Normalize gyro:\t");
  58.     Serial.print(ngx); Serial.print("\t");
  59.     Serial.print(ngy); Serial.print("\t");
  60.     Serial.println(ngz);

  61.     // blink LED to indicate activity
  62.     blinkState = !blinkState;
  63.     digitalWrite(LED_PIN, blinkState);

  64.     delay(300);
  65. }
复制代码
完整代码可到零知实验室官网免费获取,完整工程需放到lingzhi_library下的project文件夹下。

4、当我们读取到原始数值后需要转换才可得到实际的值,完整代码已经做了转换,结果如下:

 

结果.png (189.51 KB, 下载次数: 1)

下载附件  保存到相册

2019-5-24 16:18 上传


 
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

curton 2019-10-12 21:44

独立的开发工具
相关推荐阅读
minicaihong 2020-10-22 16:44
场效应管放大电路的直流偏置电路详解
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:37
场效应管偏置电路-场效应管偏置电路的工作原理及作用分析
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:27
MOS管偏置电路-MOS管直流、恒流等偏置电路图文及方程详解
MOS管偏置电路MOS管直流偏置电路MOS管的单电源直流偏置电路有两种:1、只能用于结型和耗尽型MOS管的自给偏置电路。2、可用于各种MOS管的分压式偏置电路自给MOS管偏置电路(1)图解法根据图中电...
minicaihong 2020-05-27 09:50
sprintf 格式化字符串
sprintf 格式化字符串好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下定义和用法sprintf() 函数把格式化的字符串写入变量中。arg1、arg2、++ 参数将被插入...
minicaihong 2020-05-25 15:07
12T和1T的单片机
标准51是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令度周期,刚好就是1/12M*12=1uS,常见指令例如nop就是一个周期,刚好1uS,其他的...
minicaihong 2020-05-23 16:22
4HC595驱动8*8点阵屏
74HC595驱动8*8点阵屏置顶 菜袅1号 2020-05-19 10:00:03   52   收藏展开该项目使用国产M0核单片机,驱动方式类似于stm32平台;点阵驱动芯片:...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /3 下一条