Code – Flight Computer

Libraries :

  • Adafruit BMP280 Library (for BMP280)
  • Adafruit Sensor Library MPU6050 by Electronic Cats (or MPU6050_simple)
  • SD Library (part of Arduino IDE)

 

Code:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <SD.h>
#include <MPU6050_light.h>

 

// BMP280 setup
Adafruit_BMP280 bmp;

 

// MPU6050 setup
MPU6050 mpu(Wire);

 

// SD card setup
const int chipSelect = 10;

 

void setup() {
  Serial.begin(9600);
  Wire.begin();

 

  // BMP280 initialization
  if (!bmp.begin(0x76)) {
    Serial.println(„BMP280 not detected!“);
    while (1);
  }

 

  // MPU6050 initialization
 if (mpu.begin() != 0) {
  Serial.println(„MPU6050 not detected!“);
  while (1);
}
mpu.calcGyroOffsets();

 

  // SD card initialization
  if (!SD.begin(chipSelect)) {
    Serial.println(„SD Card initialization failed!“);
    while (1);
  }
  Serial.println(„SD Card initialized.“);
}

 

void loop() {
  // BMP280 – Measure altitude
  float altitude = bmp.readAltitude(1013.25); // Adjust sea level pressure as needed

 

  // MPU6050 – Measure tilt and acceleration
  mpu.update();
  float accX = mpu.getAccX();
  float accY = mpu.getAccY();
  float accZ = mpu.getAccZ();
  float angleX = mpu.getAngleX();
  float angleY = mpu.getAngleY();
  float angleZ = mpu.getAngleZ();

 

  // Save data to SD card
  File dataFile = SD.open(„data.txt“, FILE_WRITE);
  if (dataFile) {
    dataFile.print(„Altitude: „);
    dataFile.print(altitude);
    dataFile.print(“ m, AccX: „);
    dataFile.print(accX);
    dataFile.print(“ m/s^2, AccY: „);
    dataFile.print(accY);
    dataFile.print(“ m/s^2, AccZ: „);
    dataFile.print(accZ);
    dataFile.print(“ m/s^2, AngleX: „);
    dataFile.print(angleX);
    dataFile.print(„°, AngleY: „);
    dataFile.print(angleY);
    dataFile.print(„°, AngleZ: „);
    dataFile.println(angleZ);
    dataFile.close();
  } else {
    Serial.println(„Error opening data.txt“);
  }

 

  delay(100); // Adjust sampling rate as needed
}