零知开源分享-MPU6050六轴数据输出-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4808|回复: 1

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

[复制链接]
发表于 2019-5-24 14:22 | 显示全部楼层 |阅读模式
本帖最后由 零知实验室-roc 于 2019-5-24 14:57 编辑

MPU6050模块应用于零知平台,使用该模块测量三轴加速度和三轴陀螺仪数据。
硬件准备
(1)零知开发板-标准板
好看的标准板 (2).jpg
(2)MPU6050模块
MPU6050模块.png
(3)杜邦线若干
1、电路连接
模块的SCL和SDA分别与零知标准板的I2C接口连接即可,供电连接3.3V,其他脚默认。
接线.png
2、打开零知开发工具,找到对应代码即可。
零知界面.png 界面.png
3、核心代码如下:
[mw_shl_code=arduino,true]/* I2C interface MPU6050 demo
* powered by www.lingzhilab.com
*/
#include "MPU6050.h"

// 默认I2C地址为 0x68
// AD0 low = 0x68
// AD0 high = 0x69

MPU6050 accelgyro;

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

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

#define LED_PIN LED_BUILTIN
bool blinkState = false;

void setup() {

    Serial.begin(9600);

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

    // verify connection
    Serial.println("Testing device connections...");
        if(accelgyro.testConnection()){
                Serial.println("MPU6050 connection successful");
        }else{
                Serial.println("MPU6050 connection failed");
        }
     
    //使用LED进行指示
    pinMode(LED_PIN, OUTPUT);
         
//        accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度参数
//        accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺仪
}

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

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

    // 显示打印
    Serial.print(" acc:\t");
    Serial.print(ax); Serial.print("\t");
    Serial.print(ay); Serial.print("\t");
    Serial.print(az); Serial.print("\t");
        Serial.print("\t gyro:\t");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.println(gz);
         
        //实际数值转换
        accelgyro.readNormalizeAccel(&nax,&nay,&naz);
        accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
        Serial.print("Normalize acc:\t");
    Serial.print(nax); Serial.print("\t");
    Serial.print(nay); Serial.print("\t");
    Serial.print(naz); Serial.print("\t");
        Serial.print("\t Normalize gyro:\t");
    Serial.print(ngx); Serial.print("\t");
    Serial.print(ngy); Serial.print("\t");
    Serial.println(ngz);

    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);

    delay(300);
}[/mw_shl_code]
完整代码可到零知实验室官网免费获取。
4、当我们读取到原始数值后需要进行转换才能得到实际的值,完整代码已经做了转换,结果如下:
结果.png
更多详细资料可到零知实验室官网免费获取。


发表于 2019-5-29 22:30 | 显示全部楼层
官网里给的压缩文件链接没有,我想看看头文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:37 , Processed in 0.079367 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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