Tous les tutoriels

4 · Écrans & bus

Calculer l'inclinaison (roll/pitch)

Expert30 min

Objectif

Transformer les 3 axes d'accélération en angles d'inclinaison.

Pourquoi c'est utile

atan2() sur le vecteur gravité donne l'attitude : c'est la base d'un stabilisateur.

Matériel nécessaire

  • Carte Arduino UNO
  • Buzzer piézo
  • Centrale inertielle MPU6050

Aucun achat requis : tous ces composants sont simulés dans le navigateur.

Étapes

  1. 01Partez du sketch IMU.
  2. 02Calculez roll = atan2(ay, az) et pitch = atan2(-ax, √(ay²+az²)).
  3. 03Convertissez les radians en degrés (×57,2958).
  4. 04Filtrez légèrement le résultat pour le stabiliser.

Code de départ

// MPU6050 over I2C — raw register reads, no external library needed.
#include <Wire.h>

const uint8_t MPU = 0x68;

void writeReg(uint8_t reg, uint8_t val) {
  Wire.beginTransmission(MPU);
  Wire.write(reg);
  Wire.write(val);
  Wire.endTransmission();
}

int16_t readWord(uint8_t reg) {
  Wire.beginTransmission(MPU);
  Wire.write(reg);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU, (uint8_t)2);
  int16_t hi = Wire.read();
  int16_t lo = Wire.read();
  return (hi << 8) | lo;
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
  writeReg(0x6B, 0x00);   // wake up
  writeReg(0x1B, 0x00);   // gyro +/- 250 deg/s
  writeReg(0x1C, 0x00);   // accel +/- 2 g
  Serial.println("MPU6050 ready");
}

void loop() {
  float ax = readWord(0x3B) / 16384.0;
  float ay = readWord(0x3D) / 16384.0;
  float az = readWord(0x3F) / 16384.0;
  float gz = readWord(0x47) / 131.0;

  Serial.print("accel ");
  Serial.print(ax); Serial.print(" ");
  Serial.print(ay); Serial.print(" ");
  Serial.print(az);
  Serial.print("  gyroZ ");
  Serial.println(gz);

  delay(300);
}

Ce tutoriel se réalise dans le simulateur Circuitly : le montage et le code sont vérifiés automatiquement à chaque étape.

Questions fréquentes

Faut-il acheter du matériel pour suivre ce tutoriel ?
Non. Tout se fait dans le navigateur : Circuitly simule la carte, les composants et le code. Le matériel réel est optionnel si vous voulez reproduire le montage ensuite.
Quels composants sont utilisés ?
Carte Arduino UNO, Buzzer piézo, Centrale inertielle MPU6050. Ils sont déjà disponibles dans la bibliothèque du simulateur.
Combien de temps faut-il pour le terminer ?
Environ 30 minutes, niveau expert, en 4 étapes guidées.
Quelles connaissances faut-il avant de commencer ?
Le tutoriel précédent de la série, « Centrale inertielle MPU6050 », suffit comme préparation. Aucune installation de logiciel n'est nécessaire.
Le code est-il fourni et vérifié ?
Oui : un sketch de départ est fourni, et le simulateur vérifie automatiquement votre câblage et votre code à chaque étape.

Pour les enseignants

Recevez le pack pédagogique : 6 séances clés en main

Progression complète, objectifs, étapes élève et grille d'évaluation — prêt à imprimer, gratuit.

Une adresse, aucun spam : uniquement le pack et les nouveautés classe.

Dans la même série

Explorer les autres thèmes