/*Source: https://www.electroschematics.com/pressure-sensor-guide/*/
/*
#include "HX711.h"
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
HX711 scale;
void setup() {
Serial.begin(9600);
Serial.println("HX710B Demo with HX711 Library");
Serial.println("Initializing the scale");
Serial.begin(9600);
Wire.begin();
mpu.initialize();
// Uncomment the following line to calibrate the sensor
// mpu.calibrateGyro();
// mpu.calibrateAccel();
// parameter "gain" is ommited; the default value 128 is used by the library
// HX711.DOUT - pin #A1
// HX711.PD_SCK - pin #A0
scale.begin(A1, A0);}
void loop() {
int16_t ax, ay, az; // Variables to store acceleration values
int16_t gx, gy, gz; // Variables to store rotation values
int16_t temp; // Variable to store temperature value
Serial.println("Pressure:");
Serial.println(scale.read());
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Read acceleration and rotation values
temp = mpu.getTemperature(); // Read temperature value
// Print the values to Serial Monitor
Serial.print("Acceleration: ");
Serial.print("X="); Serial.print(ax); Serial.print(" Y="); Serial.print(ay); Serial.print(" Z="); Serial.print(az);
Serial.print(" | ");
Serial.print("Rotation: ");
Serial.print("X="); Serial.print(gx); Serial.print(" Y="); Serial.print(gy); Serial.print(" Z="); Serial.print(gz);
Serial.print(" | ");
Serial.print("Temperature: ");
Serial.print(temp / 340.00 + 36.53); // Temperature formula from the datasheet
Serial.println(" °C");
delay(1000); // Delay for 1 second before reading the sensor again
}
*/
#include <Wire.h>
#include <MPU6050.h>
#include <HX711.h>
#include <SD.h>
MPU6050 mpu;
HX711 scale;
const int MPU6050_SDA_PIN = A4; // Define the SDA pin for MPU6050
const int MPU6050_SCL_PIN = A5; // Define the SCL pin for MPU6050
const int HX711_DOUT_PIN = 1;
const int HX711_SCK_PIN = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
scale.begin(HX711_DOUT_PIN, HX711_SCK_PIN);
if (SD.begin(10)) { // Pin 10 is CS (Chip Select) pin for SD card module
Serial.println("SD card initialized.");
} else {
Serial.println("SD card initialization failed.");
return;
}
File dataFile = SD.open("data.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("Pressure,Acceleration_X,Acceleration_Y,Acceleration_Z,Rotation_X,Rotation_Y,Rotation_Z");
dataFile.close();
Serial.println("File created successfully.");
} else {
Serial.println("Error opening file.");
}
}
void loop() {
int16_t ax, ay, az;
int16_t gx, gy, gz;
float pressure;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
pressure = scale.get_units();
File dataFile = SD.open("data.csv", FILE_WRITE);
if (dataFile) {
dataFile.print(pressure);
dataFile.print(",");
dataFile.print(ax);
dataFile.print(",");
dataFile.print(ay);
dataFile.print(",");
dataFile.print(az);
dataFile.print(",");
dataFile.print(gx);
dataFile.print(",");
dataFile.print(gy);
dataFile.print(",");
dataFile.println(gz);
dataFile.close();
Serial.println("Data logged.");
} else {
Serial.println("Error opening file.");
}
delay(1000); // Delay for 1 second before logging the next set of data
}