Arduino数据输出到excel

来源:互联网 发布:ie3.0弹道优化 瞄头 编辑:程序博客网 时间:2024/05/16 04:10

在用MPU6050的时候想要把加速度和角速度的信息做成图表,但SerialChart只能实时的显示图形但貌似不能一个个导出来,我在网上找了一下发现没有特别好的输出到excel的方法,翻出去后看到一篇英文博客在讲用一个叫PLX-DAQ的软件来输出,我下下来用了而且成功了!操作非常简单,在这里记录一下。

首先下载PLX-DAQ(附件在最后),安装好后是一个文件夹,里面有一个叫做Spreadsheet的excel文件。注意一定要用office的excel打开,wps那个不行。进去后让加载什么X控件,加载它,之后就是这么个东西。

很明显,串口和波特率设为和arduino的一样,右边是重置时间和清空列表。

在arduino setup()函数里写下这些

   Serial.print("DATA,TIME,TIMER,");
Serial.print(aax);Serial.print(",");
Serial.print(aaz);Serial.print(",");
Serial.print(ggx);Serial.print(",");
Serial.print(ggy);Serial.print(",");
Serial.println(ggz);

注意Label是必须的

在loop()函数中

    Serial.print("DATA,TIME,TIMER,");
    Serial.print(aax);Serial.print(",");
    Serial.print(aaz);Serial.print(",");
    Serial.print(ggx);Serial.print(",");
    Serial.print(ggy);Serial.print(",");
    Serial.println(ggz);

DATA也是必须的,Time是当前时间,Timer是从启动后开始算时间,从0开始

下面是MPU6050的示例

//设置偏移量
#define accX_Offset 0
#define accZ_Offset 0.95
#define gccX_Offset -2.05
#define gccY_Offset -1.05
#define gccZ_Offset 1.12


// 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;


float aax,aay,aaz;
float ggx,ggy,ggz;


#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(9600);


    // 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");


    //清空数据
    Serial.println("CLEARDATA");
    //Label后面的就是要在excel中列的名字
    Serial.println("LABEL,Time,Timer,ACC_X,ACC_Z,GCC_X,GCC_Y,GCC_Z");
    //重置时间
    Serial.println("RESETTIMER");
    // 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);
    aax=ax/16384.00;
    aaz=az/16384.00-accZ_Offset;
    ggx=gx/131.00-gccX_Offset;
    ggy=gy/131.00-gccY_Offset;
    ggz=gz/131.00-gccZ_Offset;


    Serial.print("DATA,TIME,TIMER,");
    Serial.print(aax);Serial.print(",");
    Serial.print(aaz);Serial.print(",");
    Serial.print(ggx);Serial.print(",");
    Serial.print(ggy);Serial.print(",");
    Serial.println(ggz);
     // display tab-separated accel/gyro x/y/z values
    /*Serial.print(ax/16384.00); Serial.print(",");
    Serial.print(ay/16384.00); Serial.print(",");
    Serial.print(az/16384.00); Serial.print(",");
    Serial.print(gx/131.00); Serial.print(",");
    Serial.print(gy/131.00); Serial.print(",");
    Serial.println(gz/131.00);*/


    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);


}


之后在PLX-DAQ中设置好端口和波特率,按connect,数据就开始自动加载了

就是这样

PLX-DAQhttps://www.parallax.com/downloads/plx-daq 

0 0
原创粉丝点击