极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17248|回复: 4

请教:MPU-6050数据读取

[复制链接]
发表于 2012-6-20 14:02:08 | 显示全部楼层 |阅读模式
本帖最后由 我爱胆机妙音 于 2012-6-21 21:15 编辑

先上代码:
  1. #include "Wire.h"

  2. // I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
  3. // for both classes must be in the include path of your project
  4. #include "I2Cdev.h"
  5. #include "MPU6050.h"

  6. // class default I2C address is 0x68
  7. // specific I2C addresses may be passed as a parameter here
  8. // AD0 low = 0x68 (default for InvenSense evaluation board)
  9. // AD0 high = 0x69
  10. MPU6050 accelgyro;

  11. int16_t ax, ay, az;
  12. int16_t gx, gy, gz;

  13. float final_ax;
  14. float final_ay;
  15. float final_az;
  16. float final_gx;
  17. float final_gy;
  18. float final_gz;

  19. #define LED_PIN 13
  20. bool blinkState = false;

  21. void setup() {
  22.     // join I2C bus (I2Cdev library doesn't do this automatically)
  23.     Wire.begin();

  24.     // initialize serial communication
  25.     // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
  26.     // it's really up to you depending on your project)
  27.     Serial.begin(38400);

  28.     // initialize device
  29.     Serial.println("Initializing I2C devices...");
  30.     accelgyro.initialize();

  31.     // verify connection
  32.     Serial.println("Testing device connections...");
  33.     Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");

  34.     // configure Arduino LED for
  35.     pinMode(LED_PIN, OUTPUT);
  36. }

  37. void loop() {
  38.     // read raw accel/gyro measurements from device
  39.     accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  40.    final_ax=ax/16384;
  41.    final_ay=ay/16384;
  42.    final_az=az/16384;
  43.    final_gx=gx/131;
  44.    final_gy=gy/131;
  45.    final_gz=gz/131;

  46.     // these methods (and a few others) are also available
  47.     //accelgyro.getAcceleration(&ax, &ay, &az);
  48.     //accelgyro.getRotation(&gx, &gy, &gz);

  49.     // display tab-separated accel/gyro x/y/z values
  50.     Serial.print("a/g:\t");
  51.     Serial.print(final_ax); Serial.print("\t");
  52.     Serial.print(final_ay); Serial.print("\t");
  53.     Serial.print(final_az); Serial.print("\t");
  54.     Serial.print(final_gx); Serial.print("\t");
  55.     Serial.print(final_gy); Serial.print("\t");
  56.     Serial.println(final_gz);

  57.     // blink LED to indicate activity
  58.     blinkState = !blinkState;
  59.     digitalWrite(LED_PIN, blinkState);
  60. }
复制代码
已经添加过简单的算法,但为什么读出的数据全是整数?用力摇晃传感器时加速度显示为1g或-1g
怎样显示小数?谢谢各位
回复

使用道具 举报

发表于 2012-6-20 14:34:34 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-9-26 14:51:24 | 显示全部楼层
final_ax=ax/16384.0;
都这样修改一下吧!  后面加.0
回复 支持 反对

使用道具 举报

发表于 2013-5-22 17:49:39 | 显示全部楼层
。。。。真郁闷。一天数据还是没调取出来
回复 支持 反对

使用道具 举报

发表于 2013-5-27 20:14:49 | 显示全部楼层
改成:final_ax=ax/16384.00;
   final_ay=ay/16384.00;
   final_az=az/16384.00;
   final_gx=gx/131.00;
   final_gy=gy/131.00;
   final_gz=gz/131.00;
试一试
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 13:31 , Processed in 0.036454 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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