safwan092

Simple MPU6050 Code no Library Arduino IDE

Jan 12th, 2026
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. #include <Wire.h>
  2.  
  3. const int MPU_ADDR = 0x68;
  4.  
  5. // MPU6050 register addresses
  6. const int PWR_MGMT_1 = 0x6B;
  7. const int ACCEL_XOUT_H = 0x3B;
  8. const int GYRO_XOUT_H = 0x43;
  9.  
  10. void setup() {
  11. Serial.begin(115200);
  12. Wire.begin();
  13.  
  14. // Wake up MPU6050
  15. Wire.beginTransmission(MPU_ADDR);
  16. Wire.write(PWR_MGMT_1);
  17. Wire.write(0);
  18. Wire.endTransmission(true);
  19.  
  20. Serial.println("MPU6050 Sensor Readings");
  21. Serial.println("========================");
  22. }
  23.  
  24. void loop() {
  25. // Read raw sensor data
  26. int16_t rawAccelX = readSensor(ACCEL_XOUT_H);
  27. int16_t rawAccelY = readSensor(ACCEL_XOUT_H + 2);
  28. int16_t rawAccelZ = readSensor(ACCEL_XOUT_H + 4);
  29.  
  30. int16_t rawGyroX = readSensor(GYRO_XOUT_H);
  31. int16_t rawGyroY = readSensor(GYRO_XOUT_H + 2);
  32. int16_t rawGyroZ = readSensor(GYRO_XOUT_H + 4);
  33.  
  34. // Convert to readable units
  35. // Accelerometer: ±2g range, sensitivity = 16384 LSB/g
  36. float accelX_g = rawAccelX / 16384.0;
  37. float accelY_g = rawAccelY / 16384.0;
  38. float accelZ_g = rawAccelZ / 16384.0;
  39.  
  40. // Gyroscope: ±250°/s range, sensitivity = 131 LSB/°/s
  41. float gyroX_deg = rawGyroX / 131.0;
  42. float gyroY_deg = rawGyroY / 131.0;
  43. float gyroZ_deg = rawGyroZ / 131.0;
  44.  
  45. // Calculate acceleration magnitude
  46. float accelMagnitude = sqrt(accelX_g * accelX_g +
  47. accelY_g * accelY_g +
  48. accelZ_g * accelZ_g);
  49.  
  50. // Display readings
  51. Serial.println("=== MPU6050 Readings ===");
  52.  
  53. Serial.print("Acceleration: ");
  54. Serial.print("X="); Serial.print(accelX_g, 2); Serial.print("g, ");
  55. Serial.print("Y="); Serial.print(accelY_g, 2); Serial.print("g, ");
  56. Serial.print("Z="); Serial.print(accelZ_g, 2); Serial.print("g");
  57. Serial.print(" | Magnitude: "); Serial.print(accelMagnitude, 2); Serial.println("g");
  58.  
  59. Serial.print("Rotation: ");
  60. Serial.print("X="); Serial.print(gyroX_deg, 1); Serial.print("°/s, ");
  61. Serial.print("Y="); Serial.print(gyroY_deg, 1); Serial.print("°/s, ");
  62. Serial.print("Z="); Serial.print(gyroZ_deg, 1); Serial.println("°/s");
  63.  
  64. Serial.println("========================");
  65.  
  66. delay(500); // Update every 0.5 seconds
  67. }
  68.  
  69. int16_t readSensor(uint8_t reg) {
  70. Wire.beginTransmission(MPU_ADDR);
  71. Wire.write(reg);
  72. Wire.endTransmission(false);
  73. Wire.requestFrom(MPU_ADDR, 2, true);
  74. return (Wire.read() << 8) | Wire.read();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment