Le MPU-6050 est un capteur inertiel combinant un accéléromètre 3 axes et un gyroscope 3 axes pour mesurer le mouvement et l’orientation. Il communique via l’interface I2C avec SDA et SCL (avec sélection d’adresse via AD0) et peut fournir une sortie d’interruption (INT) pour des lectures déclenchées par événement. Utilisez VCC et GND pour l’alimentation et connectez ses lignes I2C aux broches I2C correspondantes de l’Arduino/ESP32.
| Broche | Signal | Description |
|---|---|---|
INT |
interrupt | Interrupt output from MPU-6050 for data-ready or motion events. |
AD0 |
digital | I2C address select input; low=0x68, high=0x69. |
XCL |
SCL | Auxiliary I2C clock for external sensors connected through MPU-6050. |
XDA |
SDA | Auxiliary I2C data for external sensors connected through MPU-6050. |
SDA |
SDA | Main I2C data line to the host microcontroller. |
SCL |
SCL | Main I2C clock line from the host microcontroller. |
GND |
ground | Ground reference for power and I2C signals. |
VCC |
power | Module power input, typically 3.3V to 5V depending on board regulator. |
| De | Vers | Fil |
|---|---|---|
board:5V |
x1:VCC |
red |
board:GND |
x1:GND |
black |
board:SDA |
x1:SDA |
green |
board:SCL |
x1:SCL |
blue |
Cet exemple a été écrit et vérifié à la compilation pour le arduino-uno. Codey Online l'adapte pour vous à toute autre carte prise en charge.
#include <Wire.h>
const uint8_t MPU_ADDR = 0x68; // AD0 low on the module
const uint8_t PWR_MGMT_1 = 0x6B;
const uint8_t ACCEL_XOUT_H = 0x3B;
void writeRegister(uint8_t reg, uint8_t value) {
Wire.beginTransmission(MPU_ADDR);
Wire.write(reg);
Wire.write(value);
Wire.endTransmission(true);
}
void readBytes(uint8_t reg, uint8_t count, uint8_t *buffer) {
Wire.beginTransmission(MPU_ADDR);
Wire.write(reg);
Wire.endTransmission(false);
Wire.requestFrom(MPU_ADDR, count, true);
for (uint8_t i = 0; i < count && Wire.available(); i++) {
buffer[i] = Wire.read();
}
}
int16_t toInt16(uint8_t highByte, uint8_t lowByte) {
return (int16_t)((highByte << 8) | lowByte);
}
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
Wire.begin();
Wire.setClock(400000);
// Wake up the MPU-6050 because it starts in sleep mode.
writeRegister(PWR_MGMT_1, 0x00);
delay(100);
Serial.println("MPU-6050 accelerometer + gyroscope demo");
Serial.println("Reading raw acceleration and gyroscope data...");
}
void loop() {
uint8_t raw[14];
readBytes(ACCEL_XOUT_H, 14, raw);
int16_t accelX = toInt16(raw[0], raw[1]);
int16_t accelY = toInt16(raw[2], raw[3]);
int16_t accelZ = toInt16(raw[4], raw[5]);
int16_t tempRaw = toInt16(raw[6], raw[7]);
int16_t gyroX = toInt16(raw[8], raw[9]);
int16_t gyroY = toInt16(raw[10], raw[11]);
int16_t gyroZ = toInt16(raw[12], raw[13]);
float tempC = (tempRaw / 340.0) + 36.53;
Serial.print("Accel [LSB] X:");
Serial.print(accelX);
Serial.print(" Y:");
Serial.print(accelY);
Serial.print(" Z:");
Serial.print(accelZ);
Serial.print(" Gyro [LSB] X:");
Serial.print(gyroX);
Serial.print(" Y:");
Serial.print(gyroY);
Serial.print(" Z:");
Serial.print(gyroZ);
Serial.print(" Temp:");
Serial.print(tempC, 2);
Serial.println(" C");
delay(500);
}
Décrivez ce que vous voulez créer. Codey Online écrit le code, dessine le schéma de câblage, le compile et flashe votre carte directement depuis le navigateur.
Commencez gratuitement