|
|
MPU6050读取陀螺仪数据为了保证100Hz采用定时器读取数据,但是用了定时器就会和串口打印冲突,之后就不能打印数据了,请问有解决的办法吗?如果不使用定时器如何确保采样频率在100Hz?用的普通官方库,其中也没有><
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU9150.h"
#include "MsTimer2.h"
MPU9150 accelGyroMag;
int16_t ax, ay, az;
int16_t gx, gy, gz;
//定时采样,10ms(100Hz)
void action();
void setup() {
Wire.begin();
Serial.begin(38400);
Serial.println("Initializing I2C devices...");
accelGyroMag.initialize();
Serial.println("Testing device connections...");
Serial.println(accelGyroMag.testConnection() ? "MPU9150 connection successful" : "MPU9150 connection failed");
//设置定时器每10ms调用一次action函数
// MsTimer2::set(10,action);
// MsTimer2::start();
}
void loop() {
}
//定时采样,10ms(100Hz)
void action()
{
//读加速度计,陀螺仪,地磁的值
accelGyroMag.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
//输出原始数据,加速度计,陀螺仪,地磁,横滚角,俯仰角,航向角
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.print(gz); Serial.print("\t");
// Serial.print(mx); Serial.print("\t");
// Serial.print(my); Serial.print("\t");
// Serial.print(mz); Serial.print("\n");
}
|
|