社区导航

 

搜索
查看: 142|回复: 0

零知开源分享 - MPU6050六轴数据输出

[复制链接]

65

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-5-24 16:08 | 显示全部楼层 |阅读模式
MPU6050模块应用于零知平台,使用该模块测量三轴加速度和三轴陀螺仪数据。
硬件准备
(1)零知开发板-标准板
好看的标准板 (2).jpg
(2)MPU6050模块
MPU6050模块.png
(3)杜邦线若干
1、电路连接
模块的SCL和SDA分别与零知标准板的I2C接口连接即A5和A4脚,供电3.3V,其他脚默认。

接线.png
2、程序烧录
打开零知开发工具,找到相应代码即可。

零知界面.png
界面.png

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
更多详细资料可到零知实验室官网免费获取。




此内容由EEWORLD论坛网友roc2原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自信息发布论坛


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-6-24 21:30 , Processed in 0.085117 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表