“Motion模块姿态测试示例”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
第20行: 第20行:
 
*打开'''文件'''->'''示例'''->'''_05_Microduino_10DOF'''->'''sensor_MPU6050'''的“MPU6050_raw”程序
 
*打开'''文件'''->'''示例'''->'''_05_Microduino_10DOF'''->'''sensor_MPU6050'''的“MPU6050_raw”程序
 
[[File:motion-weather-bmp180.jpg|800px|thumb|center]]
 
[[File:motion-weather-bmp180.jpg|800px|thumb|center]]
*将下面代码更改,除以180.
 
 
<source lang="cpp">
 
<source lang="cpp">
     Serial.print(ax/180); Serial.print("\t");
+
#include <MPU6050.h>
     Serial.print(ay/180); Serial.print("\t");
+
 
     Serial.print(az/180); Serial.print("\t");
+
// class default I2C address is 0x68
     Serial.print(gx/180); Serial.print("\t");
+
// specific I2C addresses may be passed as a parameter here
     Serial.print(gy/180); Serial.print("\t");
+
// AD0 low = 0x68 (default for InvenSense evaluation board)
     Serial.println(gz/180);
+
// AD0 high = 0x69
 +
MPU6050 accelgyro;
 +
 
 +
int16_t ax, ay, az;
 +
int16_t gx, gy, gz;
 +
 
 +
#define LED_PIN 13
 +
bool blinkState = false;
 +
 
 +
void setup() {
 +
    // join I2C bus (I2Cdev library doesn't do this automatically)
 +
    Wire.begin();
 +
 
 +
    // initialize serial communication
 +
    // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
 +
    // it's really up to you depending on your project)
 +
    Serial.begin(115200);
 +
 
 +
    // initialize device
 +
    Serial.println("Initializing I2C devices...");
 +
    accelgyro.initialize();
 +
 
 +
    // verify connection
 +
    Serial.println("Testing device connections...");
 +
    Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
 +
 
 +
    // configure Arduino LED for
 +
    pinMode(LED_PIN, OUTPUT);
 +
}
 +
 
 +
void loop() {
 +
    // read raw accel/gyro measurements from device
 +
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
 +
 
 +
    // these methods (and a few others) are also available
 +
    //accelgyro.getAcceleration(&ax, &ay, &az);
 +
    //accelgyro.getRotation(&gx, &gy, &gz);
 +
 
 +
    // display tab-separated accel/gyro x/y/z values
 +
    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);
 +
 
 +
    // blink LED to indicate activity
 +
    blinkState = !blinkState;
 +
    digitalWrite(LED_PIN, blinkState);
 +
}
 
</source>
 
</source>
 
*将程序下载到核心,打开串口监视器,可以看到数据,前面三个对应的是X,Y,Z的角度,后三个对应的是X,Y,Z的加速度。
 
*将程序下载到核心,打开串口监视器,可以看到数据,前面三个对应的是X,Y,Z的角度,后三个对应的是X,Y,Z的加速度。

2017年12月18日 (一) 07:14的版本


本示例给出了Motion获取姿态的一些基本方法



硬件清单



将Battery、Core、Motion模块堆叠在一起,通过MicroUSB数据线接入电脑。


测试MPU6050姿态传感器

  • 打开文件->示例->_05_Microduino_10DOF->sensor_MPU6050的“MPU6050_raw”程序
#include <MPU6050.h>

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

int16_t ax, ay, az;
int16_t gx, gy, gz;

#define LED_PIN 13
bool blinkState = false;

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

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

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

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

    // configure Arduino LED for
    pinMode(LED_PIN, OUTPUT);
}

void loop() {
    // read raw accel/gyro measurements from device
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

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

    // display tab-separated accel/gyro x/y/z values
    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);

    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
}
  • 将程序下载到核心,打开串口监视器,可以看到数据,前面三个对应的是X,Y,Z的角度,后三个对应的是X,Y,Z的加速度。


测试BMP180气压传感器

  • 打开文件->示例->_05_Microduino_10DOF->sensor_BMP085的“BMP085_basic”程序
  • 将程序下载到核心,打开串口监视器,可以看到温度,气压,海拔数据。


返回MCookie-Motion界面

返回MCookie-Motion_Reference界面