Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- const int MPU_ADDR = 0x68;
- // MPU6050 register addresses
- const int PWR_MGMT_1 = 0x6B;
- const int ACCEL_XOUT_H = 0x3B;
- const int GYRO_XOUT_H = 0x43;
- void setup() {
- Serial.begin(115200);
- Wire.begin();
- // Wake up MPU6050
- Wire.beginTransmission(MPU_ADDR);
- Wire.write(PWR_MGMT_1);
- Wire.write(0);
- Wire.endTransmission(true);
- Serial.println("MPU6050 Sensor Readings");
- Serial.println("========================");
- }
- void loop() {
- // Read raw sensor data
- int16_t rawAccelX = readSensor(ACCEL_XOUT_H);
- int16_t rawAccelY = readSensor(ACCEL_XOUT_H + 2);
- int16_t rawAccelZ = readSensor(ACCEL_XOUT_H + 4);
- int16_t rawGyroX = readSensor(GYRO_XOUT_H);
- int16_t rawGyroY = readSensor(GYRO_XOUT_H + 2);
- int16_t rawGyroZ = readSensor(GYRO_XOUT_H + 4);
- // Convert to readable units
- // Accelerometer: ±2g range, sensitivity = 16384 LSB/g
- float accelX_g = rawAccelX / 16384.0;
- float accelY_g = rawAccelY / 16384.0;
- float accelZ_g = rawAccelZ / 16384.0;
- // Gyroscope: ±250°/s range, sensitivity = 131 LSB/°/s
- float gyroX_deg = rawGyroX / 131.0;
- float gyroY_deg = rawGyroY / 131.0;
- float gyroZ_deg = rawGyroZ / 131.0;
- // Calculate acceleration magnitude
- float accelMagnitude = sqrt(accelX_g * accelX_g +
- accelY_g * accelY_g +
- accelZ_g * accelZ_g);
- // Display readings
- Serial.println("=== MPU6050 Readings ===");
- Serial.print("Acceleration: ");
- Serial.print("X="); Serial.print(accelX_g, 2); Serial.print("g, ");
- Serial.print("Y="); Serial.print(accelY_g, 2); Serial.print("g, ");
- Serial.print("Z="); Serial.print(accelZ_g, 2); Serial.print("g");
- Serial.print(" | Magnitude: "); Serial.print(accelMagnitude, 2); Serial.println("g");
- Serial.print("Rotation: ");
- Serial.print("X="); Serial.print(gyroX_deg, 1); Serial.print("°/s, ");
- Serial.print("Y="); Serial.print(gyroY_deg, 1); Serial.print("°/s, ");
- Serial.print("Z="); Serial.print(gyroZ_deg, 1); Serial.println("°/s");
- Serial.println("========================");
- delay(500); // Update every 0.5 seconds
- }
- int16_t readSensor(uint8_t reg) {
- Wire.beginTransmission(MPU_ADDR);
- Wire.write(reg);
- Wire.endTransmission(false);
- Wire.requestFrom(MPU_ADDR, 2, true);
- return (Wire.read() << 8) | Wire.read();
- }
Advertisement
Add Comment
Please, Sign In to add comment