Im working on a project where i need to data log to an sd card non stop and also get GPS data from a SAM-M10Q but for some reason the GPS chip cant get a fix if the data logging code is even just present, if i take the code out it works just fine. No idea why it wont work when data logging. Not sure how to fix this.
Here is my code:
#include <Wire.h>
#include <Adafruit_LIS3MDL.h>
#include <Adafruit_Sensor.h>
#include <SD.h>
#include "SparkFun_BMI270_Arduino_Library.h"
#include <SparkFun_u-blox_GNSS_v3.h>
#include "SdFat.h"
#include "RingBuf.h"
#include <SPI.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#include <Adafruit_MS8607.h>
#include <Adafruit_LSM6DSO32.h>
#include <Adafruit_INA260.h>
#include "Adafruit_BMP3XX.h"
#include <Arduino.h>
#include <Adafruit_BNO08x.h>
#include <MicroNMEA.h>
#define SEALEVELPRESSURE_HPA (1013.25)
#define SD_CONFIG SdioConfig(FIFO_SDIO)
const int chipSelect = BUILTIN_SDCARD;
// Interval between points for 25 ksps.
#define LOG_INTERVAL_USEC 40
boolean checkstop = false;
// Size to log 10 byte lines at 25 kHz for more than ten minutes.
#define LOG_FILE_SIZE 10*25000*600 // 150,000,000 bytes.
// Space to hold more than 800 ms of data for 10 byte lines at 25 ksps.
#define RING_BUF_CAPACITY 400*512
#define LOG_FILENAME "SdioLogger.csv"
unsigned long timenow7 = 0;
//SdFs sd;
//FsFile file;
// RingBuf for File type FsFile.
//RingBuf<FsFile, RING_BUF_CAPACITY> rb;
BMI270 imu;
uint8_t i2cAddress = BMI2_I2C_PRIM_ADDR;
Adafruit_INA260 ina260 = Adafruit_INA260();
Adafruit_LSM6DSO32 dso32;
Adafruit_LIS3MDL lis3mdl;
SFE_UBLOX_GNSS myGNSS;
Adafruit_BMP3XX bmp;
Adafruit_MS8607 ms8607;
#define PIN 4
#define NUMPIXELS 3
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int x, y, z;
double roll = 0.00, pitch = 0.00;
#define BNO08X_RESET -1
struct euler_t {
float yaw;
float pitch;
float roll;
} ypr;
Adafruit_BNO08x bno08x(BNO08X_RESET);
sh2_SensorValue_t sensorValue;
#ifdef FAST_MODE
// Top frequency is reported to be 1000Hz (but freq is somewhat variable)
sh2_SensorId_t reportType = SH2_GYRO_INTEGRATED_RV;
long reportIntervalUs = 2000;
#else
// Top frequency is about 250Hz but this report is more accurate
sh2_SensorId_t reportType = SH2_ARVR_STABILIZED_RV;
long reportIntervalUs = 5000;
#endif
void setReports(sh2_SensorId_t reportType, long report_interval) {
Serial.println("Setting desired reports");
if (! bno08x.enableReport(reportType, report_interval)) {
Serial.println("Could not enable stabilized remote vector");
}
}
boolean onetime = false;
boolean onetime1 = false;
boolean onetime2 = false;
boolean onetime3 = false;
boolean onetime4 = false;
boolean onetime5 = false;
boolean onetime6 = false;
boolean onetime7 = false;
boolean onetime8 = false;
boolean onetime9 = false;
boolean onetime10 = false;
boolean onetime11 = false;
boolean onetime12 = false;
boolean onetime13 = false;
boolean onetime14 = false;
boolean onetime15 = false;
boolean onetime16 = false;
boolean onetime17 = false;
boolean onetime18 = false;
boolean ready = false;
boolean launch = false;
boolean apogge = false;
boolean inflight = false;
boolean land = false;
const int buzzer = 8;
int alt = 0.10;
boolean dataloglock = false;
void setup(){
while(!Serial);
Wire.begin();
Serial.begin(115200);
Serial.println("Starting up");
tone(buzzer, 1000);
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
while (1) {
// No SD card, so don't do anything more - stay stuck here
}
}
Serial.println("card initialized.");
if (!bno08x.begin_I2C(0x4B)) {
Serial.println("BNO085 failed!");
while (1) { delay(10); }
}
setReports(reportType, reportIntervalUs);
Serial.println("BNO085 up");
while (myGNSS.begin() == false)
{
Serial.println("GPS Failed!");
while(1);
}
myGNSS.setI2COutput(COM_TYPE_UBX);
myGNSS.setNavigationFrequency(4);
myGNSS.setAutoPVT(true);
Serial.println("GPS up");
if (!bmp.begin_I2C()) {
Serial.println("BMP390 Failed!");
while (1);
}
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_50_HZ);
Serial.println("BMP390 up");
if (!ms8607.begin()) {
Serial.println("MS8607 Failed!");
while (1) { delay(10); }
}
ms8607.setHumidityResolution(MS8607_HUMIDITY_RESOLUTION_OSR_8b);
Serial.print("Humidity resolution set to ");
switch (ms8607.getHumidityResolution()){
case MS8607_HUMIDITY_RESOLUTION_OSR_12b: Serial.println("12-bit"); break;
case MS8607_HUMIDITY_RESOLUTION_OSR_11b: Serial.println("11-bit"); break;
case MS8607_HUMIDITY_RESOLUTION_OSR_10b: Serial.println("10-bit"); break;
case MS8607_HUMIDITY_RESOLUTION_OSR_8b: Serial.println("8-bit"); break;
}
// ms8607.setPressureResolution(MS8607_PRESSURE_RESOLUTION_OSR_4096);
Serial.print("Pressure and Temperature resolution set to ");
switch (ms8607.getPressureResolution()){
case MS8607_PRESSURE_RESOLUTION_OSR_256: Serial.println("256"); break;
case MS8607_PRESSURE_RESOLUTION_OSR_512: Serial.println("512"); break;
case MS8607_PRESSURE_RESOLUTION_OSR_1024: Serial.println("1024"); break;
case MS8607_PRESSURE_RESOLUTION_OSR_2048: Serial.println("2048"); break;
case MS8607_PRESSURE_RESOLUTION_OSR_4096: Serial.println("4096"); break;
case MS8607_PRESSURE_RESOLUTION_OSR_8192: Serial.println("8192"); break;
}
Serial.println("MS8607 up");
if (!lis3mdl.begin_I2C()) {
Serial.println("LIS3MDL Failed!");
while(1);
}
lis3mdl.setPerformanceMode(LIS3MDL_ULTRAHIGHMODE);
Serial.print("Performance mode set to: ");
switch (lis3mdl.getPerformanceMode()) {
case LIS3MDL_LOWPOWERMODE: Serial.println("Low"); break;
case LIS3MDL_MEDIUMMODE: Serial.println("Medium"); break;
case LIS3MDL_HIGHMODE: Serial.println("High"); break;
case LIS3MDL_ULTRAHIGHMODE: Serial.println("Ultra-High"); break;
}
lis3mdl.setOperationMode(LIS3MDL_CONTINUOUSMODE);
Serial.print("Operation mode set to: ");
// Single shot mode will complete conversion and go into power down
switch (lis3mdl.getOperationMode()) {
case LIS3MDL_CONTINUOUSMODE: Serial.println("Continuous"); break;
case LIS3MDL_SINGLEMODE: Serial.println("Single mode"); break;
case LIS3MDL_POWERDOWNMODE: Serial.println("Power-down"); break;
}
lis3mdl.setDataRate(LIS3MDL_DATARATE_1000_HZ);
// You can check the datarate by looking at the frequency of the DRDY pin
Serial.print("Data rate set to: ");
switch (lis3mdl.getDataRate()) {
case LIS3MDL_DATARATE_0_625_HZ: Serial.println("0.625 Hz"); break;
case LIS3MDL_DATARATE_1_25_HZ: Serial.println("1.25 Hz"); break;
case LIS3MDL_DATARATE_2_5_HZ: Serial.println("2.5 Hz"); break;
case LIS3MDL_DATARATE_5_HZ: Serial.println("5 Hz"); break;
case LIS3MDL_DATARATE_10_HZ: Serial.println("10 Hz"); break;
case LIS3MDL_DATARATE_20_HZ: Serial.println("20 Hz"); break;
case LIS3MDL_DATARATE_40_HZ: Serial.println("40 Hz"); break;
case LIS3MDL_DATARATE_80_HZ: Serial.println("80 Hz"); break;
case LIS3MDL_DATARATE_155_HZ: Serial.println("155 Hz"); break;
case LIS3MDL_DATARATE_300_HZ: Serial.println("300 Hz"); break;
case LIS3MDL_DATARATE_560_HZ: Serial.println("560 Hz"); break;
case LIS3MDL_DATARATE_1000_HZ: Serial.println("1000 Hz"); break;
}
lis3mdl.setRange(LIS3MDL_RANGE_16_GAUSS);
Serial.print("Range set to: ");
switch (lis3mdl.getRange()) {
case LIS3MDL_RANGE_4_GAUSS: Serial.println("+-4 gauss"); break;
case LIS3MDL_RANGE_8_GAUSS: Serial.println("+-8 gauss"); break;
case LIS3MDL_RANGE_12_GAUSS: Serial.println("+-12 gauss"); break;
case LIS3MDL_RANGE_16_GAUSS: Serial.println("+-16 gauss"); break;
}
lis3mdl.setIntThreshold(500);
lis3mdl.configInterrupt(false, false, true, // enable z axis
true, // polarity
false, // don't latch
true); // enabled!
Serial.println("LIS3MDL up");
if (!ina260.begin(0x45)) {
Serial.println("INA260 Failed!");
while (1);
}
Serial.println("INA260 up");
if (!dso32.begin_I2C()) {
Serial.println("LSM6DSO32 Failed!");
while(1);
}
dso32.setAccelRange(LSM6DSO32_ACCEL_RANGE_32_G);
Serial.print("Accelerometer range set to: ");
switch (dso32.getAccelRange()) {
case LSM6DSO32_ACCEL_RANGE_4_G:
Serial.println("+-4G");
break;
case LSM6DSO32_ACCEL_RANGE_8_G:
Serial.println("+-8G");
break;
case LSM6DSO32_ACCEL_RANGE_16_G:
Serial.println("+-16G");
break;
case LSM6DSO32_ACCEL_RANGE_32_G:
Serial.println("+-32G");
break;
}
// dso32.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS );
Serial.print("Gyro range set to: ");
switch (dso32.getGyroRange()) {
case LSM6DS_GYRO_RANGE_125_DPS:
Serial.println("125 degrees/s");
break;
case LSM6DS_GYRO_RANGE_250_DPS:
Serial.println("250 degrees/s");
break;
case LSM6DS_GYRO_RANGE_500_DPS:
Serial.println("500 degrees/s");
break;
case LSM6DS_GYRO_RANGE_1000_DPS:
Serial.println("1000 degrees/s");
break;
case LSM6DS_GYRO_RANGE_2000_DPS:
Serial.println("2000 degrees/s");
break;
case ISM330DHCX_GYRO_RANGE_4000_DPS:
break; // unsupported range for the DSO32
}
// dso32.setAccelDataRate(LSM6DS_RATE_12_5_HZ);
Serial.print("Accelerometer data rate set to: ");
switch (dso32.getAccelDataRate()) {
case LSM6DS_RATE_SHUTDOWN:
Serial.println("0 Hz");
break;
case LSM6DS_RATE_12_5_HZ:
Serial.println("12.5 Hz");
break;
case LSM6DS_RATE_26_HZ:
Serial.println("26 Hz");
break;
case LSM6DS_RATE_52_HZ:
Serial.println("52 Hz");
break;
case LSM6DS_RATE_104_HZ:
Serial.println("104 Hz");
break;
case LSM6DS_RATE_208_HZ:
Serial.println("208 Hz");
break;
case LSM6DS_RATE_416_HZ:
Serial.println("416 Hz");
break;
case LSM6DS_RATE_833_HZ:
Serial.println("833 Hz");
break;
case LSM6DS_RATE_1_66K_HZ:
Serial.println("1.66 KHz");
break;
case LSM6DS_RATE_3_33K_HZ:
Serial.println("3.33 KHz");
break;
case LSM6DS_RATE_6_66K_HZ:
Serial.println("6.66 KHz");
break;
}
// dso32.setGyroDataRate(LSM6DS_RATE_12_5_HZ);
Serial.print("Gyro data rate set to: ");
switch (dso32.getGyroDataRate()) {
case LSM6DS_RATE_SHUTDOWN:
Serial.println("0 Hz");
break;
case LSM6DS_RATE_12_5_HZ:
Serial.println("12.5 Hz");
break;
case LSM6DS_RATE_26_HZ:
Serial.println("26 Hz");
break;
case LSM6DS_RATE_52_HZ:
Serial.println("52 Hz");
break;
case LSM6DS_RATE_104_HZ:
Serial.println("104 Hz");
break;
case LSM6DS_RATE_208_HZ:
Serial.println("208 Hz");
break;
case LSM6DS_RATE_416_HZ:
Serial.println("416 Hz");
break;
case LSM6DS_RATE_833_HZ:
Serial.println("833 Hz");
break;
case LSM6DS_RATE_1_66K_HZ:
Serial.println("1.66 KHz");
break;
case LSM6DS_RATE_3_33K_HZ:
Serial.println("3.33 KHz");
break;
case LSM6DS_RATE_6_66K_HZ:
Serial.println("6.66 KHz");
break;
}
Serial.println("LSM6DSO32 up");
Serial.println("All done!");
pixels.begin();
noTone(buzzer);
}
void quaternionToEuler(float qr, float qi, float qj, float qk, euler_t* ypr, bool degrees = false) {
float sqr = sq(qr);
float sqi = sq(qi);
float sqj = sq(qj);
float sqk = sq(qk);
ypr->yaw = atan2(2.0 * (qi * qj + qk * qr), (sqi - sqj - sqk + sqr));
ypr->pitch = asin(-2.0 * (qi * qk - qj * qr) / (sqi + sqj + sqk + sqr));
ypr->roll = atan2(2.0 * (qj * qk + qi * qr), (-sqi - sqj + sqk + sqr));
if (degrees) {
ypr->yaw *= RAD_TO_DEG;
ypr->pitch *= RAD_TO_DEG;
ypr->roll *= RAD_TO_DEG;
}
}
void quaternionToEulerRV(sh2_RotationVectorWAcc_t* rotational_vector, euler_t* ypr, bool degrees = false) {
quaternionToEuler(rotational_vector->real, rotational_vector->i, rotational_vector->j, rotational_vector->k, ypr, degrees);
}
void quaternionToEulerGI(sh2_GyroIntegratedRV_t* rotational_vector, euler_t* ypr, bool degrees = false) {
quaternionToEuler(rotational_vector->real, rotational_vector->i, rotational_vector->j, rotational_vector->k, ypr, degrees);
}
void setReports(void) {
Serial.println("Setting desired reports");
if (!bno08x.enableReport(SH2_ACCELEROMETER)) {
Serial.println("Could not enable accelerometer");
}
if (!bno08x.enableReport(SH2_GYROSCOPE_CALIBRATED)) {
Serial.println("Could not enable gyroscope");
}
if (!bno08x.enableReport(SH2_MAGNETIC_FIELD_CALIBRATED)) {
Serial.println("Could not enable magnetic field calibrated");
}
if (!bno08x.enableReport(SH2_LINEAR_ACCELERATION)) {
Serial.println("Could not enable linear acceleration");
}
if (!bno08x.enableReport(SH2_GRAVITY)) {
Serial.println("Could not enable gravity vector");
}
if (!bno08x.enableReport(SH2_ROTATION_VECTOR)) {
Serial.println("Could not enable rotation vector");
}
if (!bno08x.enableReport(SH2_GEOMAGNETIC_ROTATION_VECTOR)) {
Serial.println("Could not enable geomagnetic rotation vector");
}
if (!bno08x.enableReport(SH2_GAME_ROTATION_VECTOR)) {
Serial.println("Could not enable game rotation vector");
}
if (!bno08x.enableReport(SH2_STEP_COUNTER)) {
Serial.println("Could not enable step counter");
}
if (!bno08x.enableReport(SH2_STABILITY_CLASSIFIER)) {
Serial.println("Could not enable stability classifier");
}
if (!bno08x.enableReport(SH2_RAW_ACCELEROMETER)) {
Serial.println("Could not enable raw accelerometer");
}
if (!bno08x.enableReport(SH2_RAW_GYROSCOPE)) {
Serial.println("Could not enable raw gyroscope");
}
if (!bno08x.enableReport(SH2_RAW_MAGNETOMETER)) {
Serial.println("Could not enable raw magnetometer");
}
if (!bno08x.enableReport(SH2_SHAKE_DETECTOR)) {
Serial.println("Could not enable shake detector");
}
if (!bno08x.enableReport(SH2_PERSONAL_ACTIVITY_CLASSIFIER)) {
Serial.println("Could not enable personal activity classifier");
}
}
void loop(){
if (bno08x.wasReset()) {
Serial.print("sensor was reset ");
setReports(reportType, reportIntervalUs);
}
if (bno08x.getSensorEvent(&sensorValue)) {
// in this demo only one report type will be received depending on FAST_MODE define (above)
switch (sensorValue.sensorId) {
case SH2_ARVR_STABILIZED_RV:
quaternionToEulerRV(&sensorValue.un.arvrStabilizedRV, &ypr, true);
case SH2_GYRO_INTEGRATED_RV:
// faster (more noise?)
quaternionToEulerGI(&sensorValue.un.gyroIntegratedRV, &ypr, true);
break;
}
}
sensors_event_t accel;
sensors_event_t gyro;
sensors_event_t temp;
dso32.getEvent(&accel, &gyro, &temp);
lis3mdl.read();
sensors_event_t event;
lis3mdl.getEvent(&event);
sensors_event_t pressure, humidity;
ms8607.getEvent(&pressure, &temp, &humidity);
imu.getSensorData();
if (myGNSS.getPVT() == true)
{
Serial.println();
int32_t latitude = myGNSS.getLatitude();
Serial.print(F("Lat: "));
Serial.print(latitude);
int32_t longitude = myGNSS.getLongitude();
Serial.print(F(" Long: "));
Serial.print(longitude);
Serial.print(F(" (degrees * 10^-7)"));
int32_t altitude = myGNSS.getAltitudeMSL(); // Altitude above Mean Sea Level
Serial.print(F(" Alt: "));
Serial.print(altitude);
Serial.print(F(" (mm)"));
Serial.println();
long speed = myGNSS.getGroundSpeed();
byte fixType = myGNSS.getFixType();
if(fixType == 3){
dataloglock = true;
Serial.println("mhm");
}
/*
File dataFile2 = SD.open("T0ver.csv", FILE_WRITE);
dataFile2.print(millis());
dataFile2.print(",");
dataFile2.print(latitude);
dataFile2.print(",");
dataFile2.print(longitude);
dataFile2.print(",");
dataFile2.print(bmp.readAltitude(1013.25) - alt);
dataFile2.print(",");
dataFile2.print(speed / 447.04);
dataFile2.print(",");
dataFile2.println(ypr.roll);
dataFile2.close();
*/
}
else
{
Serial.print(".");
delay(50);
}
File dataFile = SD.open("FlightData.csv", FILE_WRITE);
dataFile.print(millis());
dataFile.print(",");
dataFile.print("Alt: ");
dataFile.print(bmp.readAltitude(1013.25) - alt);
dataFile.print(",");
dataFile.print(" Voltage: ");
dataFile.print(ina260.readBusVoltage() / 1000);
dataFile.print(",");
dataFile.print(" MS8607: ");
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(pressure.pressure);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(temp.temperature);
dataFile.print(",");
dataFile.print(" Humidity: ");
dataFile.print(humidity.relative_humidity);
dataFile.print(",");
dataFile.print(" BMP390: ");
dataFile.print(",");
dataFile.print(" Alt Sealevel: ");
dataFile.print(bmp.readAltitude(1013.25));
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(bmp.readTemperature());
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(bmp.readPressure());
dataFile.print(",");
dataFile.print(" BNO085: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.accelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.accelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.accelerometer.z);
dataFile.print(",");
dataFile.print(" Linear Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.linearAcceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gyroscope.z);
dataFile.print(",");
dataFile.print(" MAG: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.magneticField.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.magneticField.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.magneticField.z);
dataFile.print(",");
dataFile.print(" Gravity: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gravity.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gravity.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gravity.z);
dataFile.print(",");
dataFile.print(" Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.rotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.rotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.rotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.rotationVector.k);
dataFile.print(",");
dataFile.print(" Geo-Magnetic Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.gameRotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.gameRotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.gameRotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.gameRotationVector.k);
dataFile.print(",");
dataFile.print(" Raw accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawAccelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawAccelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawAccelerometer.z);
dataFile.print(" Raw gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawGyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawGyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawGyroscope.z);
dataFile.print(",");
dataFile.print(" Raw mag: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawMagnetometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawMagnetometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawMagnetometer.z);
dataFile.print(",");
dataFile.print(" LSM6DOS32: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(accel.acceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(accel.acceleration.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(accel.acceleration.z);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(gyro.gyro.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(gyro.gyro.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(gyro.gyro.z);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.println(temp.temperature);
//dataFile.print(",");
if(ready == true){
if(bmp.readAltitude(1013.25) - alt >= 5.00){
if(onetime1 == false){
MCOLaunch();
Launchbeep();
onetime1 = true;
}
//----------------------launch stuff here
}
}else{
if(bmp.readAltitude(1013.25) >= alt){
alt++;
}
if(bmp.readAltitude(1013.25) <= alt){
alt--;
}
if(bmp.readAltitude(1013.25) - alt <= 0.30){
ready = true;
Readybeep();
MCOgreen();
}else{
MCOblue();
}
}
double x_Buff = float(accel.acceleration.x);
double y_Buff = float(accel.acceleration.y);
double z_Buff = float(accel.acceleration.z);
roll = atan2(y_Buff, z_Buff) * 57.3;
pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3;
}
void MCOgreen(){
pixels.setPixelColor(1, pixels.Color(23, 255, 0 ));
pixels.show();
}
void MCOred(){
pixels.setPixelColor(1, pixels.Color(255, 0, 0 ));
pixels.show();
}
void MCOblue(){
pixels.setPixelColor(1, pixels.Color(0, 97, 255 ));
pixels.show();
}
void MCOLaunch(){
pixels.setPixelColor(1, pixels.Color(255, 0, 209 ));
pixels.show();
}
void Readybeep(){
tone(buzzer, 1000);
delay(100);
noTone(buzzer);
delay(100);
tone(buzzer, 1000);
delay(100);
noTone(buzzer);
}
void Launchbeep(){
tone(buzzer, 1000);
}
Here is the code section that doesn't want to work:
if (myGNSS.getPVT() == true)
{
Serial.println();
int32_t latitude = myGNSS.getLatitude();
Serial.print(F("Lat: "));
Serial.print(latitude);
int32_t longitude = myGNSS.getLongitude();
Serial.print(F(" Long: "));
Serial.print(longitude);
Serial.print(F(" (degrees * 10^-7)"));
int32_t altitude = myGNSS.getAltitudeMSL(); // Altitude above Mean Sea Level
Serial.print(F(" Alt: "));
Serial.print(altitude);
Serial.print(F(" (mm)"));
Serial.println();
long speed = myGNSS.getGroundSpeed();
byte fixType = myGNSS.getFixType();
if(fixType == 3){
dataloglock = true;
Serial.println("mhm");
}
/*
File dataFile2 = SD.open("T0ver.csv", FILE_WRITE);
dataFile2.print(millis());
dataFile2.print(",");
dataFile2.print(latitude);
dataFile2.print(",");
dataFile2.print(longitude);
dataFile2.print(",");
dataFile2.print(bmp.readAltitude(1013.25) - alt);
dataFile2.print(",");
dataFile2.print(speed / 447.04);
dataFile2.print(",");
dataFile2.println(ypr.roll);
dataFile2.close();
*/
}
else
{
Serial.print(".");
delay(50);
}
File dataFile = SD.open("FlightData.csv", FILE_WRITE);
dataFile.print(millis());
dataFile.print(",");
dataFile.print("Alt: ");
dataFile.print(bmp.readAltitude(1013.25) - alt);
dataFile.print(",");
dataFile.print(" Voltage: ");
dataFile.print(ina260.readBusVoltage() / 1000);
dataFile.print(",");
dataFile.print(" MS8607: ");
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(pressure.pressure);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(temp.temperature);
dataFile.print(",");
dataFile.print(" Humidity: ");
dataFile.print(humidity.relative_humidity);
dataFile.print(",");
dataFile.print(" BMP390: ");
dataFile.print(",");
dataFile.print(" Alt Sealevel: ");
dataFile.print(bmp.readAltitude(1013.25));
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(bmp.readTemperature());
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(bmp.readPressure());
dataFile.print(",");
dataFile.print(" BNO085: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.accelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.accelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.accelerometer.z);
dataFile.print(",");
dataFile.print(" Linear Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.linearAcceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gyroscope.z);
dataFile.print(",");
dataFile.print(" MAG: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.magneticField.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.magneticField.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.magneticField.z);
dataFile.print(",");
dataFile.print(" Gravity: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gravity.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gravity.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gravity.z);
dataFile.print(",");
dataFile.print(" Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.rotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.rotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.rotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.rotationVector.k);
dataFile.print(",");
dataFile.print(" Geo-Magnetic Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.gameRotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.gameRotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.gameRotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.gameRotationVector.k);
dataFile.print(",");
dataFile.print(" Raw accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawAccelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawAccelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawAccelerometer.z);
dataFile.print(" Raw gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawGyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawGyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawGyroscope.z);
dataFile.print(",");
dataFile.print(" Raw mag: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawMagnetometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawMagnetometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawMagnetometer.z);
dataFile.print(",");
dataFile.print(" LSM6DOS32: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(accel.acceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(accel.acceleration.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(accel.acceleration.z);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(gyro.gyro.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(gyro.gyro.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(gyro.gyro.z);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.println(temp.temperature);
And here is the code that if i take out makes the GPS work.
File dataFile = SD.open("FlightData.csv", FILE_WRITE);
dataFile.print(millis());
dataFile.print(",");
dataFile.print("Alt: ");
dataFile.print(bmp.readAltitude(1013.25) - alt);
dataFile.print(",");
dataFile.print(" Voltage: ");
dataFile.print(ina260.readBusVoltage() / 1000);
dataFile.print(",");
dataFile.print(" MS8607: ");
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(pressure.pressure);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(temp.temperature);
dataFile.print(",");
dataFile.print(" Humidity: ");
dataFile.print(humidity.relative_humidity);
dataFile.print(",");
dataFile.print(" BMP390: ");
dataFile.print(",");
dataFile.print(" Alt Sealevel: ");
dataFile.print(bmp.readAltitude(1013.25));
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.print(bmp.readTemperature());
dataFile.print(",");
dataFile.print(" Pressure: ");
dataFile.print(bmp.readPressure());
dataFile.print(",");
dataFile.print(" BNO085: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.accelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.accelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.accelerometer.z);
dataFile.print(",");
dataFile.print(" Linear Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.linearAcceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.linearAcceleration.y);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gyroscope.z);
dataFile.print(",");
dataFile.print(" MAG: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.magneticField.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.magneticField.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.magneticField.z);
dataFile.print(",");
dataFile.print(" Gravity: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.gravity.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.gravity.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.gravity.z);
dataFile.print(",");
dataFile.print(" Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.rotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.rotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.rotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.rotationVector.k);
dataFile.print(",");
dataFile.print(" Geo-Magnetic Rotation Vector: ");
dataFile.print(",");
dataFile.print(" R: ");
dataFile.print(sensorValue.un.gameRotationVector.real);
dataFile.print(",");
dataFile.print(" I: ");
dataFile.print(sensorValue.un.gameRotationVector.i);
dataFile.print(",");
dataFile.print(" J: ");
dataFile.print(sensorValue.un.gameRotationVector.j);
dataFile.print(",");
dataFile.print(" K: ");
dataFile.print(sensorValue.un.gameRotationVector.k);
dataFile.print(",");
dataFile.print(" Raw accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawAccelerometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawAccelerometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawAccelerometer.z);
dataFile.print(" Raw gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawGyroscope.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawGyroscope.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawGyroscope.z);
dataFile.print(",");
dataFile.print(" Raw mag: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(sensorValue.un.rawMagnetometer.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(sensorValue.un.rawMagnetometer.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(sensorValue.un.rawMagnetometer.z);
dataFile.print(",");
dataFile.print(" LSM6DOS32: ");
dataFile.print(",");
dataFile.print(" Accelerometer: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(accel.acceleration.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(accel.acceleration.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(accel.acceleration.z);
dataFile.print(",");
dataFile.print(" Gyro: ");
dataFile.print(",");
dataFile.print(" X: ");
dataFile.print(gyro.gyro.x);
dataFile.print(",");
dataFile.print(" Y: ");
dataFile.print(gyro.gyro.y);
dataFile.print(",");
dataFile.print(" Z: ");
dataFile.print(gyro.gyro.z);
dataFile.print(",");
dataFile.print(" Temp: ");
dataFile.println(temp.temperature);