c语言-edison连接mpu6050代码看不大懂

问题描述

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板子 请大神解答 越详细越好!

时间: 2024-10-27 22:13:21

c语言-edison连接mpu6050代码看不大懂的相关文章

位图-mfc显示透明背景代码看不大懂

问题描述 mfc显示透明背景代码看不大懂 /*-----------------显示透明背景图片-------------------*/ void CHIT_MOUSE::TransparentBitmap(HDC hdc HBITMAP hBitmap short xStart short yStart short xadd short yadd COLORREF cTransparentColor){ BITMAP m_bm; COLORREF cColor; // 创建临时DC HDC

别人写的代码看起来容易,自己写未必写得好

别人写的代码看起来容易,自己写未必写得好              古人云说起来容易,做起来难.就像我们看小说一样,我们看完小说都看得懂,里面的人物事件都搞得清清楚楚,可这不代表我们能写得出来.对于我们这些码农来说,有些代码是看起来容易,做起来也不容易.记得刚参加工作的时候,一个牛人跟我说过,一件简单的事情做起来是简单,一万件简单的事情堆在一起就不简单了.就行linux内核一样,单独哪一行,对于任何一个会C语言的程序员都看得懂吧!可是由这些一行行简单的代码组成的东西又有多少人能深入理解呢?   

c语言acm1003 求大神看看我的代码哪错了

问题描述 c语言acm1003 求大神看看我的代码哪错了 Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14. Input The first line of the input

数学-c语言题目求助~~~大家帮忙看一下这个代码有啥错误

问题描述 c语言题目求助~~~大家帮忙看一下这个代码有啥错误 **1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数. **它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字. 但是,它发散的很慢: 前1项和达到 1.0前4项和才超过 2.0前83项的和才超过 5.0 那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?** 请填写这个整数. 注意:只需要填写一个整数,不要填写任何多余的内容.比如说明文字.** #include<stdio

Redis教程(十五):C语言连接操作代码实例_Redis

在之前的博客中已经非常详细的介绍了Redis的各种操作命令.运行机制和服务器初始化参数配置.本篇博客是该系列博客中的最后一篇,在这里将给出基于Redis客户端组件访问并操作Redis服务器的代码示例.然而需要说明的是,由于Redis官方并未提供基于C接口的Windows平台客户端,因此下面的示例仅可运行于Linux/Unix平台.但是对于使用其它编程语言的开发者而言,如C#和Java,Redis则提供了针对这些语言的客户端组件,通过该方式,同样可以达到基于Windows平台与Redis服务器进行

c语言-九宫格问题,任意的输入9个数,写个代码判断是否可以横竖斜同于用一个数。可以的话给出代码看下

问题描述 九宫格问题,任意的输入9个数,写个代码判断是否可以横竖斜同于用一个数.可以的话给出代码看下 九宫格问题,任意的输入9个数,写个代码判断是否可以横竖斜同于用一个数.可以的话给出代码看下 解决方案 假设你的九宫格放在一个二维数组中,那么可以这么写 int sum[8]; for (int i = 0; i < 8; i++) sum[i] = 0; for (i = 0; i < 3; i++) { sum[0] += arr[0, i]; sum[1] += arr[1, i]; su

设计-学生在线答疑排队模拟C语言版的程序代码有木有呢?

问题描述 学生在线答疑排队模拟C语言版的程序代码有木有呢? 程序设计思路: 1.主函数main( ),打印输出主控程序菜单选项,并接收用户的选择项 2.定义学生信息(学号.姓名)的数据存储结构 3.设计学生在线答疑排队模拟程序的功能函数EnQueue( ),处理新学生加入排队的情况 4.设计学生在线答疑排队模拟程序的功能函数AnsQ( ),处理队列中第一个学生出队列答疑的情况 5.设计功能函数PrintQ( ),输出队列中所有正在排队的学生信息. 6.当用户退出答疑程序时,检查队列是否为空.如仍

insert-jsp语言如何连接mysql数据库

问题描述 jsp语言如何连接mysql数据库 jsp语言如何连接mysql数据库,进行表的增删改查?OA系统设计连接数据库,mysql驱动包在哪儿下载? 解决方案 在页面嵌入脚本代码,然后和在java中操作一样.只是,为什么要在页面上操作呢?这样页面编码可读性变得很糟糕,而且对于后期维护影响非常不好.最主要的是,这么设计没有主次,没有模式,对于横向扩展或者代码复用性都很不好. 解决方案二: jsp连接mysql数据库JSP 连接MYSQL数据库JSP连接MYSQL数据库 解决方案三: 建议你搜索

Win7网络连接出错代码629怎么办

  Win7网络连接出错代码629的解决方法. 方法如下: 1.检查用户名和密码:如果你的用户名和密码输入错误的话,很可能会引起629错误,我们可以重新输入用户名和密码,输入的时候看你的大写键是否开启了导致输入用户名出错,输入完成之后双击用户名,看看有没有多出空格. 2.更换线路:连接网络的线路老化或者水晶头故障都有可能导致我们连接网络失败,出现629错误,此时我们只要更换老化的线路或者是故障的水晶头之后即可解决问题,此故障原因不好判断,如果其他方法不能解决问题再来考虑是否是线路问题. 3.更换