#include <Wire.h>
#define MPU6050_ADDR 0x68
const int movementThreshold = 3000; // Adjust this threshold as needed
const int ledPin = 35;
void setup() {
Serial.begin(115200);
Wire.begin();
// Initialize MPU-6050
Wire.beginTransmission(MPU6050_ADDR);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // Wake up the sensor
Wire.endTransmission(true);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void loop() {
int16_t accelerometerValues[3];
readAccelerometer(accelerometerValues);
// Calculate the total acceleration by summing up the absolute values of each axis
float totalAcceleration = abs(accelerometerValues[0]) + abs(accelerometerValues[1]) + abs(accelerometerValues[2]);
Serial.print("Total acceleration: ");
Serial.println(totalAcceleration);
if (totalAcceleration > movementThreshold) {
digitalWrite(ledPin, HIGH); // Activate the LED
} else {
digitalWrite(ledPin, LOW); // Deactivate the LED
}
delay(10); // Adjust the delay as needed
}
void readAccelerometer(int16_t* values) {
Wire.beginTransmission(MPU6050_ADDR);
Wire.write(0x3B); // Starting register for accelerometer data
Wire.endTransmission(false);
Wire.requestFrom(MPU6050_ADDR, 6, true);
for (int i = 0; i < 3; ++i) {
values[i] = Wire.read() << 8 | Wire.read();
}
}