2 qq 34784245 qq_34784245 于 2016.04.25 14:24 提问

edison连接mpu6050代码看不大懂

#include "math.h"
#include "stdio.h"
#include "mraa.h"
#include "unistd.h"

#define MPU6050_I2C_ADDR 0x68
#define PWR_MGMT_1 0x6B
#define SMPLRT_DIV 0x19
#define CONFIG 0x1A
#define GYRO_CONFIG 0x1B
#define ACCEL_CONFIG 0x1C

int main(int argc, char *argv[]) {
uint8_t rx[6];
mraa_init();
mraa_i2c_context i2c;
i2c = mraa_i2c_init(0);
uint8_t rx_tx_buf[2];
if(mraa_i2c_address(i2c, MPU6050_I2C_ADDR)==MRAA_SUCCESS){
printf("found sensor!\n");
}

rx_tx_buf[0] = PWR_MGMT_1;
rx_tx_buf[1] = 0x00;
if(mraa_i2c_write(i2c,rx_tx_buf,2)==MRAA_SUCCESS){
    printf("initial POWER success!\n");
}

rx_tx_buf[0] = SMPLRT_DIV;
rx_tx_buf[1] = 0x07;//为什么要设置成0X07??
if(mraa_i2c_write(i2c,rx_tx_buf,2)==MRAA_SUCCESS){
    printf("initial SMPLRT_DIV success!\n");
}

rx_tx_buf[0] = CONFIG;
rx_tx_buf[1] = 0x06;//为什么是0x06?
if(mraa_i2c_write(i2c,rx_tx_buf,2)==MRAA_SUCCESS){
    printf("initial CONFIG_RIG success!\n");
}

rx_tx_buf[0] = GYRO_CONFIG;
rx_tx_buf[1] = 0x18;//为什么是0x18
if(mraa_i2c_write(i2c,rx_tx_buf,2)==MRAA_SUCCESS){
    printf("initial GYRO_CONFIG success!\n");
}

rx_tx_buf[0] = ACCEL_CONFIG;
rx_tx_buf[1] = 0x10;
if(mraa_i2c_write(i2c,rx_tx_buf,2)==MRAA_SUCCESS){
    printf("initial ACCEL_CONFIG success!\n");
}

while(1)
{
    if(mraa_i2c_write_byte(i2c,0x3B)==MRAA_SUCCESS){
    //  printf("write reg success!\n");
    }

    mraa_i2c_read(i2c,rx,6);
    printf("x=%f, ",(float)(short)((rx[0]<<8)+rx[1])/4096.0); //这个不明白
    printf("y=%f, ",(float)(short)((rx[2]<<8)+rx[3])/4096.0);
    printf("z=%f, ",(float)(short)((rx[4]<<8)+rx[5])/4096.0);
    printf("\n");
    sleep(1);
} 
return 0; 

}
代码如上 是可以运行的。但是有几处不懂. 我是大二学生 刚开始接触edison板子 请大神解答 越详细越好!

1个回答

dabocaiqq
dabocaiqq   2018.05.15 00:12
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
为什么懂市场的老板却做不大
国内有一部分小型互联网公司老板是做市场的,有个不错的想法,有一些订单,但总也做不大,有些还死掉了。这是为什么?我觉得可能有如下原因: 老板虽然一开始的想法很好,但是追求大而全的产品,产品堆积了太多无用的功能。 真把程序员当成搬砖的工具,各种逼迫程序员快速出东西,导致程序员没时间重构,产生各种临时方案,时间一长,效率降低产品质量下降。 只会讲故事,说市场有多好,以后有多美,但出
intel edison 设置wifi自动连接
1. 没有连接过wifi,使用一下命令连接:     # configure_edison --wifi     连接过一次后就会记住wifi账户和密码,以供一下功能使用; 2. wifi自动控制     # systemctl enable wpa_supplicant  (设置wifi上电自动连接)     # systemctl disable wpa_supplicant
看不大懂
如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量,这个道理不难想象!以static嵌套类很少使用。
Edison重新上手
Edison重新上手标签: Edison 此文是用于写给初期使用过一段时间的Edison,但是由于各种事情耽误了Edison的继续学习,导致部分遗忘的学习者,可以帮助他们较容易的拾起Edison继续学习。我在今年5月份用过一段时间Edison,仅仅是调通,后来由于其他事情耽搁了,现在暑假又有时间弄这个东西,但是感觉思路挺乱,所以,一来是给自己缕清思路,二来写给和我类似同样的人看,重新开始做Edi
[源码]51单片机读取MPU6050通过串口发送——源码
#include#include#include#include #define SMPLRT_DIV 0x19 //Gry filter rate:0x07(125Hz)#define CONFIG 0x1A //0x06(5Hz)#define GYRO_CONFIG 0x1B //Gry selfTask or not& detect range:0x18(no,2000deg/s)#def
51单片机 MPU6050读取并通过串口输出
MPU6050 51单片机读取并通过串口输出,KEIL4开发环境。
mpu6050+hmc5883l master mode 和 passthrough mode 详解
新手发帖,记录下自己的开发历程跟大家分享
STM32控制MPU6050
STM32控制MPU6050 1.硬件连接 实验采用正点原子公司的 AN1507 ATK-MPU6050 六轴传感器模块 MPU6050 STM32 VCC --> VCC GND --> GND SDA --> PB9 SCL --> PB8 INT -->
MPU6050参考代码
MPU-60X0 是全球首例 9轴运动处理传感器。它集成了 3轴 MEMS陀螺仪, 3轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其 I2C或 SPI接口 输出一个 9 轴的信号(SPI接口仅在 MPU-6000可用)。 MPU-
Web Service Patterns Java Edition
web Service 教程,只不过都是英文,看不大懂