极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14245|回复: 9

求助 MPU6050

[复制链接]
发表于 2015-5-3 19:47:08 | 显示全部楼层 |阅读模式
本帖最后由 GSCmax 于 2015-5-3 19:53 编辑

最近在研究MPU6050,检测物体姿态,纯新手,但是有问题来了。看代码


  1. //这是完好的代码
  2. #include "Wire.h"
  3. #include "I2Cdev.h"
  4. #include "MPU6050.h"
  5. MPU6050 accelgyro;

  6. int16_t ax, ay, az;
  7. int16_t gx, gy, gz;
  8. float Ax, Ay, Az; //单位 g(9.8m/s^2)
  9. float JiaoDu; //存储加速度计算出的角度

  10. bool blinkState = false;

  11. void setup() {
  12.   Wire.begin();
  13.   Serial.begin(9600);
  14.   Serial.println("Start");
  15.   accelgyro.initialize();
  16. }

  17. void loop() {
  18.   ZiTaiJianCe();
  19.   delay(10);
  20. }

  21. void ZiTaiJianCe() {
  22.   accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  23.   Ax = ax / 16384.00;
  24.   Ay = ay / 16384.00;
  25.   Az = az / 16384.00;
  26.   JiaoDu = atan(Ax / sqrt(Az * Az + Ay * Ay)) * 180 / 3.14;
  27.   Serial.println(JiaoDu);
  28.   blinkState = !blinkState;
  29. }



  30. /*----------------------------------------------------
  31. SerialChart的代码

  32. [_setup_]
  33. port=COM3
  34. baudrate=9600

  35. width=1366
  36. height=200
  37. background_color = black

  38. grid_h_origin = 100
  39. grid_h_step = 50
  40. grid_h_color = #EEE
  41. grid_h_origin_color = #CCC

  42. grid_v_origin = 0
  43. grid_v_step = 200
  44. grid_v_color = #EEE
  45. grid_v_origin_color = transparent

  46. [_default_]
  47. min=-1
  48. max=1

  49. [ax]
  50. color=gold
  51. min=-90
  52. max=90

  53. ----------------------------------------------------*/
复制代码
  1. //这是把MPU6050放在中断里的代码
  2. #include "Wire.h"
  3. #include "I2Cdev.h"
  4. #include "MPU6050.h"
  5. MPU6050 accelgyro;

  6. int pbIn = 1;// 定义中断引脚为1,也就是D3引脚
  7. int16_t ax, ay, az;
  8. int16_t gx, gy, gz;
  9. float Ax, Ay, Az; //单位 g(9.8m/s^2)
  10. float JiaoDu; //存储加速度计算出的角度

  11. bool blinkState = false;

  12. void setup() {
  13.   Wire.begin();
  14.   Serial.begin(9600);
  15.   Serial.println("Start");
  16.   accelgyro.initialize();
  17.   attachInterrupt(pbIn, ZiTaiJianCe, RISING); // 监视中断输入引脚的变化
  18. }

  19. void loop() {
  20.   //ZiTaiJianCe();
  21.   delay(10);
  22. }

  23. void ZiTaiJianCe() {
  24.   accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  25.   Ax = ax / 16384.00;
  26.   Ay = ay / 16384.00;
  27.   Az = az / 16384.00;
  28.   JiaoDu = atan(Ax / sqrt(Az * Az + Ay * Ay)) * 180 / 3.14;
  29.   Serial.println(JiaoDu);
  30.   blinkState = !blinkState;
  31. }



  32. /*----------------------------------------------------
  33. SerialChart的代码

  34. [_setup_]
  35. port=COM3
  36. baudrate=9600

  37. width=1366
  38. height=200
  39. background_color = black

  40. grid_h_origin = 100
  41. grid_h_step = 50
  42. grid_h_color = #EEE
  43. grid_h_origin_color = #CCC

  44. grid_v_origin = 0
  45. grid_v_step = 200
  46. grid_v_color = #EEE
  47. grid_v_origin_color = transparent

  48. [_default_]
  49. min=-1
  50. max=1

  51. [ax]
  52. color=gold
  53. min=-90
  54. max=90

  55. ----------------------------------------------------*/
复制代码


两份代码都可以通过编译,但是第二个实验并不能输出MPU6050的数据,希望大神帮我看一下哪里有错
回复

使用道具 举报

发表于 2015-5-3 22:51:49 | 显示全部楼层
程序不错,关键是否有中断启动。
回复 支持 反对

使用道具 举报

发表于 2015-5-4 10:04:30 | 显示全部楼层
        中断使能了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 20:10:54 | 显示全部楼层
suoma 发表于 2015-5-4 10:04
中断使能了吗?

放别的函数可以,就是放MPU6050的不能。。。
回复 支持 反对

使用道具 举报

发表于 2015-5-7 22:40:57 | 显示全部楼层
你的中断脚pbIn,连到哪的?  用什么信号触发的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-10 18:06:50 | 显示全部楼层
enots 发表于 2015-5-7 22:40
你的中断脚pbIn,连到哪的?  用什么信号触发的?

D3,触发肯定正常,高电平触发
回复 支持 反对

使用道具 举报

发表于 2015-5-11 22:58:36 | 显示全部楼层
本帖最后由 enots 于 2015-5-11 23:00 编辑

好吧, 谁告诉你的中断里面 可以做这么多事了:  读取MPU值, 做浮点乘法,还要做三角函数, 还要串口打印输出.等你做完这些,黄花菜都凉咯. 尤其是那个serial.print, 它要是也靠中断工作的. 你上一个中断还没整完,它不就傻了.

现在,在某个中断里有个if语句我都很难担心它的任务太重了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-12 20:33:25 | 显示全部楼层
enots 发表于 2015-5-11 22:58
好吧, 谁告诉你的中断里面 可以做这么多事了:  读取MPU值, 做浮点乘法,还要做三角函数, 还要串口打印输出.等 ...

看起来有道理,但是根据中断定义,中断函数里面应该没什么要求啊,还是不太能理解
回复 支持 反对

使用道具 举报

发表于 2015-5-12 23:21:10 | 显示全部楼层
中断里面不要做耗时操作, avr的中断默认没有嵌套,只有优先级,你在中断里做耗时操作,且不做特别的处理,那么别的中断就可能不生效了.
回复 支持 反对

使用道具 举报

发表于 2016-2-16 21:31:47 | 显示全部楼层
那里注释掉了,这个有关系吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 00:52 , Processed in 0.037884 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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