怎样读取Gy-521 Z轴的角速度及加速度
无论怎样动,az、gz读数好像都没有变化代码如下
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
float Ax,Ay,Az;
float Gx,Gy,Gz;
#define LED_PIN 13
bool blinkState = false;
void setup() {
Wire.begin();
Serial.begin(38400);
Serial.println("Initializing I2C devices...");
accelgyro.initialize();
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
pinMode(LED_PIN, OUTPUT);
}
void loop() {
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
Ax=float(ax)/131.00;
Ay=float(ay)/131.00;
Az=float(az)/131.00;
Gx=float(gx)/16384.00;
Gy=float(gy)/16384.00;
Gz=float(gz)/16384.00;
Serial.print("a/g:\t");
Serial.print(Ax); Serial.print("\t");
Serial.print(Ay); Serial.print("\t");
Serial.print(Az); Serial.print("\t");
Serial.print(Gx); Serial.print("\t");
Serial.print(Gy); Serial.print("\t");
Serial.println(Gz);
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
}
代碼已試過沒問題,應是硬件接線的問題。
另外,為甚麼 Gx,Gy,Gz 要除 16384.00? eddiewwm 发表于 2014-9-13 19:47 static/image/common/back.gif
代碼已試過沒問題,應是硬件接線的問題。
另外,為甚麼 Gx,Gy,Gz 要除 16384.00?
gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g, 对应 16384 LSB/g,
就像单位换算一样,要读出来数据要除以16384,才是真正的通常的加速度值。
不同量程,除以的数值不一样! 我手上的GY-521是10元左右的板子,我怀疑引用的函数库不正确!
请高手们赐教! gump80 发表于 2014-9-16 13:03 static/image/common/back.gif
gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g, 对应 16384 LSB/g,
就像 ...
但除以 16384.00 這樣大的數,出來的結果就變得很小了,這個要小心啊!
若擔心手上的庫有問題,可用以下這個。
另外注意要連接 INT 啊。 INT我没有接,我只接SDA--A4、SCL--A5、VCC--5v、GND这四根线。INT 接arduino板的哪只脚? gump80 发表于 2014-9-16 13:03
gx,gy,gz是直接从寄存器读出来的数据,其只是mpu对应g的值
g量程为±2g, 对应 16384 LSB/g,
就 ...
楼主不对吧,加速度计的典型值是16384,陀螺仪的典型值是131你是除反了吧 gump80 发表于 2014-9-17 14:32
INT我没有接,我只接SDA--A4、SCL--A5、VCC--5v、GND这四根线。INT 接arduino板的哪只脚?
请问6050和Arduino mage 2560怎么接线呢?我也只是接了SDL,SCL,VCC,GND
页:
[1]