Neater data logging

Im working on a model rocket flight computer and my data logging is a little messy. During a flight the data values can go from 0 to 200 to -300 and it makes the data log messy and hard to read, how could i go about fixing this? Here are 2 pictures of the data log file during flight, and the part of my code data logging.


code:

dataFile.open("FlightData.csv", FILE_WRITE);
// dataFile2.open("GPSData.csv", FILE_WRITE);
// dataFile3.open("EventData.csv", FILE_WRITE);

dataFile.print(millis());
dataFile.print("   ");
dataFile.print("BMP390: ");
dataFile.print("   ");
dataFile.print("Alt ");
dataFile.print(bmp.readAltitude(1013.25) - alt);
dataFile.print("   ");
dataFile.print(" temp ");
dataFile.print(bmp.temperature);
dataFile.print("   ");
dataFile.print("Pressure ");
dataFile.print(bmp.pressure / 100.0 );
dataFile.print("   ");
dataFile.print(" Speed:");
dataFile.print(Speed);
dataFile.print("   ");
dataFile.print("  Pitch: ");
dataFile.print(average_pitch);
dataFile.print("   ");
dataFile.print(" Roll: ");
dataFile.print("   ");
dataFile.print(average_roll);
dataFile.print("   ");
dataFile.print("  Acc X: ");
dataFile.print(average_x);
dataFile.print("   ");
dataFile.print(" Acc Y:  ");
dataFile.print(average_y);
dataFile.print("   ");
dataFile.print("  Acc Z: ");
dataFile.print(average_z);
dataFile.print("   ");
dataFile.print("  Gyro X: ");
dataFile.print(average_x_gyro);
dataFile.print("   ");
dataFile.print(" Gyro Y:  ");
dataFile.print(average_y_gyro);
dataFile.print("   ");
dataFile.print("  Gyro Z: ");
dataFile.print(average_z_gyro);
dataFile.print("   ");
dataFile.print("  MAg: ");
dataFile.print("   ");
dataFile.print(lis3mdl.x);
dataFile.print(" \tY:  ");
dataFile.print(lis3mdl.y);
dataFile.print("   ");
dataFile.print(" \tZ  ");
dataFile.print(lis3mdl.z);
dataFile.print("   ");
dataFile.print(" uTesla \tX:  ");
dataFile.print(event.magnetic.x);
dataFile.print("   ");
dataFile.print(" uTesla \tY: ");
dataFile.print(event.magnetic.y);
dataFile.print("   ");
dataFile.print("  uTesla \tZ: ");
dataFile.print(event.magnetic.z);
dataFile.print("   ");
dataFile.print("  Heading: ");
dataFile.print(event.magnetic.heading);
dataFile.print("   ");
dataFile.print(" Pitch:  ");
dataFile.print(event.magnetic.pitch);
dataFile.print("   ");
dataFile.print("  Roll: ");
dataFile.print(event.magnetic.roll);
dataFile.print("   ");
dataFile.print("  Status: ");
dataFile.print(event.magnetic.status);
dataFile.print("   ");
dataFile.print(" LSM6:  ");
dataFile.print("   ");
dataFile.print(" Temp  ");
dataFile.print(temp.temperature);
dataFile.print("   ");
dataFile.print("  Accel X: ");
dataFile.print(accel.acceleration.x);
dataFile.print("   ");
dataFile.print(" Accel Y:  ");
dataFile.print(accel.acceleration.y);
dataFile.print("   ");
dataFile.print(" Accel Z: ");
dataFile.print(accel.acceleration.z);
dataFile.print("   ");
dataFile.print(" Gyro X:  ");
dataFile.print(gyro.gyro.x);
dataFile.print("   ");
dataFile.print(" Gyro Y: ");
dataFile.print(gyro.gyro.y);
dataFile.print("   ");
dataFile.print(" Gyro Z:  ");
dataFile.print(gyro.gyro.z);
dataFile.print("   ");
dataFile.print(" BMI270: ");
dataFile.print("   ");
dataFile.print("  Accel X: ");
dataFile.print(imu.data.accelX);
dataFile.print("   ");
dataFile.print(" Accel Y: ");
dataFile.print(imu.data.accelY);
dataFile.print("   ");
dataFile.print(" Accel Z: ");
dataFile.print(imu.data.accelZ);
dataFile.print("   ");
dataFile.print(" Gyro X  ");
dataFile.print(imu.data.gyroX);
dataFile.print("   ");
dataFile.print(" Gyro Y: ");
dataFile.print(imu.data.gyroY);
dataFile.print("   ");
dataFile.print(" Gyro Z: ");
dataFile.print(imu.data.gyroZ);
//.print("   ");
//dataFile.print(" INA260:  ");
//dataFile.print("   ");
//dataFile.print(" Voltage  ");
//dataFile.print(ina260.readBusVoltage() / 1000);
//dataFile.print("   ");
//dataFile.print(" Current  ");
//dataFile.print(ina260.readCurrent());
//dataFile.print("   ");
//dataFile.print(" Power  ");
//dataFile.print(ina260.readPower());
dataFile.print("   ");
dataFile.print("  MS8607: ");
dataFile.print("   ");
dataFile.print(" Temp  ");
dataFile.print(temp.temperature);
dataFile.print("   ");
dataFile.print(" Pressure  ");
dataFile.print(pressure.pressure);
dataFile.print("   ");
dataFile.print(" Humidity  ");
dataFile.print(humidity.relative_humidity);
dataFile.print("   ");
dataFile.print(" Launched:  ");
dataFile.print(launchlook);
dataFile.print("   ");
dataFile.print(" Landed:  ");
dataFile.print(landlook);
dataFile.print("   ");
dataFile.print("  Apogee: ");
dataFile.print(apogeelook);
dataFile.print("   ");
dataFile.print(" Ready for launch:  ");
dataFile.print(readylook);
dataFile.print(" drouge:  ");
dataFile.print(dstate);
dataFile.print("   ");
dataFile.print(" main:  ");
dataFile.println(mainstate);

Put a comma between each data item instead of spaces and BINGO ! you have data that can be imported into a spreadsheet

Wow.... didn't realize it was that simple, thanks!

Also print out your parameter names separated by commas once to the CSV file before logging any data and you will then have column headings in your spreadsheet too.

1 Like

I like to "right justify" changing values by padding the left.

void setup() {
  Serial.begin(115200);
}

void loop() {
  float value = random (-20000, 20000);
  pad (value);
}

void pad(float val) {
  if (val < 0) {
    for (int i = -10000; i < 0; i /= 10) {
      if (val > i)
        Serial.print(" ");
    }
  } else {
    for (long i = 100000; i > 0; i /= 10) {
      if (val < i)
        Serial.print(" ");
    }
  }
  Serial.println(val);
  delay(250);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.