CCCPaste

Sensor Logging rev_01

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: Sensor Logging
	- Source Code NOT compiled for: Arduino Uno
	- Source Code created on: 2024-08-17 00:22:59

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Strat and log data intonsd card */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include 
#include 
#include     // Include the MPU6050 library
#include       // Include the SdFat library

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);

/***** DEFINITION OF I2C PINS *****/
const uint8_t Accmano_MPU6050_I2C_PIN_SDA_A4        = A4; // SDA pin for I2C
const uint8_t Accmano_MPU6050_I2C_PIN_SCL_A5        = A5; // SCL pin for I2C
const uint8_t Accmano_MPU6050_I2C_SLAVE_ADDRESS      = 104; // I2C address for MPU6050

/***** DEFINITION OF SPI PINS *****/
const uint8_t Sd_SDCardModule_SPI_PIN_MOSI_D11       = 11; // MOSI pin for SD card
const uint8_t Sd_SDCardModule_SPI_PIN_MISO_D12       = 12; // MISO pin for SD card
const uint8_t Sd_SDCardModule_SPI_PIN_SCLK_D13       = 13; // SCLK pin for SD card
const uint8_t Sd_SDCardModule_SPI_PIN_CS_D10         = 10; // CS pin for SD card

/****** DEFINITION OF LIBRARIES CLASS INSTANCES *****/
MPU6050 mpu; // Create an instance of the MPU6050 class
SdFs sd;     // Create an instance of the SdFs class (corrected from SdFat to SdFs)
FsFile file; // Create an instance of the FsFile class to handle file operations

void setup(void)
{
    // Initialize Serial communication for debugging
    Serial.begin(115200);
    while (!Serial) {
        ; // Wait for serial port to connect
    }

    // Initialize I2C communication for MPU6050
    Wire.begin();
    mpu.initialize(); // Initialize the MPU6050

    // Check if the MPU6050 is connected
    if (mpu.testConnection()) {
        Serial.println("MPU6050 connection successful");
    } else {
        Serial.println("MPU6050 connection failed");
    }

    // Initialize SPI for SD card
    pinMode(Sd_SDCardModule_SPI_PIN_CS_D10, OUTPUT);
    SPI.begin();

    // Initialize SD card
    if (!sd.begin(Sd_SDCardModule_SPI_PIN_CS_D10)) { // Use sd object for initialization
        Serial.println("SD card initialization failed!");
        return; // Stop if SD card initialization fails
    }
    Serial.println("SD card initialized successfully");

    // Open a file for writing
    if (!file.open("data.txt", FILE_WRITE)) {
        Serial.println("Failed to open file for writing");
        return; // Stop if file opening fails
    }
    Serial.println("File opened successfully");
}

void loop(void)
{
    // Read data from the MPU6050
    Vector rawAccel = mpu.getAcceleration();
    Vector rawGyro = mpu.getRotation();

    // Log data to the serial monitor
    Serial.print("Accel: ");
    Serial.print(rawAccel.XAxis);
    Serial.print(", ");
    Serial.print(rawAccel.YAxis);
    Serial.print(", ");
    Serial.print(rawAccel.ZAxis);
    Serial.print(" | Gyro: ");
    Serial.print(rawGyro.XAxis);
    Serial.print(", ");
    Serial.print(rawGyro.YAxis);
    Serial.print(", ");
    Serial.println(rawGyro.ZAxis);

    // Write data to the SD card
    file.print("Accel: ");
    file.print(rawAccel.XAxis);
    file.print(", ");
    file.print(rawAccel.YAxis);
    file.print(", ");
    file.print(rawAccel.ZAxis);
    file.print(" | Gyro: ");
    file.print(rawGyro.XAxis);
    file.print(", ");
    file.print(rawGyro.YAxis);
    file.print(", ");
    file.println(rawGyro.ZAxis);
    
    // Flush the file buffer to ensure data is written
    file.flush();

    // Delay for a while before the next reading
    delay(1000); // Adjust the delay as needed
}

/* END CODE */