#include #include #include #include HMC5883L capteur; int16_t mx, my, mz; // déclaration des variables sur les axes x, y, z float angle; void setup() { // initialisation de la liaison série I2C Wire.begin(); // communication série via l'usb de la carte leonardo Serial.begin(9600); while (!Serial) { } // initialisation du capteur capteur.initialize(); delay(1000); while (!capteur.testConnection()) { Serial.println("erreur connexion capteur HMC5883L.."); delay(500); } } void loop() { // lire les données sur les axes x,y,z du champs magnétique capteur.getHeading(&mx, &my, &mz); // affichage des données Serial.println("-------------"); Serial.print("mag:\t"); Serial.print(mx); Serial.print("\t"); Serial.print(my); Serial.print("\t"); Serial.print(mz); Serial.println("\t"); // calcul et affichage de l'angle en degrés par rapport au nord angle = atan2((double)mx, (double)my); Serial.print("angle:\t"); Serial.println(angle * 180 / PI); delay(1000); }