#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;
sensors_event_t referenceAcc;  // Store reference accelerometer data here
sensors_event_t referenceGyro; // Store reference gyro data here
sensors_event_t referenceTemp; // Store reference temperature data here

void setup() {
  Serial.begin(115200);
  while (!Serial);

  if (!mpu.begin()) {
    while (1) {
      delay(20);
    }
  }

  // Calibration step: Read and store reference sensor data
  mpu.getEvent(&referenceAcc, &referenceGyro, &referenceTemp);

  // Send the reference data to the GUI (replace with your communication method)
  sendReferenceData(referenceAcc, referenceGyro, referenceTemp);
}

void loop() {
  sensors_event_t acc, gyro, temp;
  mpu.getEvent(&acc, &gyro, &temp);

  // Send the real-time sensor data to the GUI (replace with your communication method)
  sendSensorData(acc, gyro, temp);

  delay(1000);
}

void sendReferenceData(const sensors_event_t &accData, const sensors_event_t &gyroData, const sensors_event_t &tempData) {
  // Implement your code to send reference data to the GUI here
}

void sendSensorData(const sensors_event_t &accData, const sensors_event_t &gyroData, const sensors_event_t &tempData) {
  // Implement your code to send real-time sensor data to the GUI here
}