// --- Wokwi Arduino Sketch (Edge Impulse Data Collection) ---
#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
Adafruit_MPU6050 mpu;
// Sampling frequency (20 ms = 50 Hz)
const int SAMPLE_DELAY_MS = 20;
void setup() {
Serial.begin(115200);
while (!Serial);
Wire.begin(); // ✅ Ensure I2C is initialized
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
// Configure sensor settings
mpu.setAccelerometerRange(MPU6050_RANGE_4_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(1000);
Serial.println("MPU6050 Initialized. Starting data stream...");
// Optional: Print header (useful for CSV uploads)
Serial.println("accX,accY,accZ,gyroX,gyroY,gyroZ");
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// Accelerometer (m/s²)
Serial.print(a.acceleration.x, 3); Serial.print(',');
Serial.print(a.acceleration.y, 3); Serial.print(',');
Serial.print(a.acceleration.z, 3); Serial.print(',');
// Gyroscope (convert rad/s → deg/s)
Serial.print(g.gyro.x * 57.2957795, 3); Serial.print(',');
Serial.print(g.gyro.y * 57.2957795, 3); Serial.print(',');
Serial.println(g.gyro.z * 57.2957795, 3);
delay(SAMPLE_DELAY_MS);
}