bonjour a tous et a toutes, j'ai un problème avec mon code sur mon capteur LSM6DS3+LIS3MDL. L'idée étant que si le capteur bouge dans l'espace ou capte une variation de champ magnétique alors une LED s'allume. Le code suivant est je pense incomplet et ne dispose de la partie IF capteur capte alors LED s'allume. De plus avec ce code je n'observe rien sur le moniteur série (115200).
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LIS3MDL.h>
#include <Adafruit_LSM6DS33.h>
// Créer des objets capteurs
Adafruit_LIS3MDL lis3mdl;
Adafruit_LSM6DS33 lsm6ds33;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10); // Attendre que le port série soit disponible
// Initialiser LIS3MDL
if (!lis3mdl.begin_I2C()) {
Serial.println("Échec de la détection du chip LIS3MDL");
while (1) { delay(10); }
}
Serial.println("LIS3MDL détecté!");
// Initialiser LSM6DS33
if (!lsm6ds33.begin_I2C()) {
Serial.println("Échec de la détection du chip LSM6DS33");
while (1) { delay(10); }
}
Serial.println("LSM6DS33 détecté!");
// Définir les plages si désiré, par défaut est +/- 4 gauss pour le magnétomètre, +/- 2 g pour l'accéléromètre, 250 dps pour le gyroscope
lis3mdl.setRange(LIS3MDL_RANGE_4_GAUSS);
lsm6ds33.setAccelRange(LSM6DS_ACCEL_RANGE_2_G);
lsm6ds33.setGyroRange(LSM6DS_GYRO_RANGE_250_DPS);
}
void loop() {
// Obtenir les données du magnétomètre
sensors_event_t magEvent;
lis3mdl.getEvent(&magEvent);
Serial.print("Mag X: "); Serial.print(magEvent.magnetic.x); Serial.print(" ");
Serial.print("Mag Y: "); Serial.print(magEvent.magnetic.y); Serial.print(" ");
Serial.print("Mag Z: "); Serial.println(magEvent.magnetic.z);
// Obtenir les données de l'accéléromètre et du gyroscope
sensors_event_t accelEvent, gyroEvent, tempEvent;
lsm6ds33.getEvent(&accelEvent, &gyroEvent, &tempEvent);
Serial.print("Accel X: "); Serial.print(accelEvent.acceleration.x); Serial.print(" ");
Serial.print("Accel Y: "); Serial.print(accelEvent.acceleration.y); Serial.print(" ");
Serial.print("Accel Z: "); Serial.println(accelEvent.acceleration.z);
Serial.print("Gyro X: "); Serial.print(gyroEvent.gyro.x); Serial.print(" ");
Serial.print("Gyro Y: "); Serial.print(gyroEvent.gyro.y); Serial.print(" ");
Serial.print("Gyro Z: "); Serial.println(gyroEvent.gyro.z);
Serial.println();
delay(500); // Délai pour lisibilité
}