J'ai programmé en c sur un RP zéro un programme pour lire les données d'un QMC5883L. Le programme semble fonctionner, mais les valeurs renvoyées tournent toujours autour des mêmes valeurs pour chaque axes. Qui pour m'aider?
Voici le programme :
#include <stdint.h>
#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
// Initialisation du capteur QMC5883L
void QMC5883L_Init(int fd) {
// Configuration du capteur
if (wiringPiI2CWriteReg8(fd, 0x0A, 0x10) == -1) {
printf("Erreur lors de l'écriture dans le registre de configuration (0x0A)\n");
}
if (wiringPiI2CWriteReg8(fd, 0x09, 0x1D) == -1) {
printf("Erreur lors de l'écriture dans le registre de configuration (0x09)\n");
}
}
// Lire les données brutes d'un axe
int16_t QMC5883L_ReadRawAxis(int fd, int lsb_reg, int msb_reg) {
int16_t lsb = wiringPiI2CReadReg8(fd, lsb_reg);
int16_t msb = wiringPiI2CReadReg8(fd, msb_reg);
if (msb == -1 || lsb == -1) {
printf("Erreur lors de la lecture des registres de l'axe (LSB: %d, MSB: %d)\n", lsb, msb);
return -1;
}
return (msb << 8) | lsb;
}
int main() {
// Initialisation de WiringPi
if (wiringPiSetup() == -1) {
printf("Erreur d'initialisation de WiringPi\n");
return -1;
}
// Configuration de l'I2C pour l'adresse 0x0D
int fd = wiringPiI2CSetup(0x0D);
if (fd == -1) {
printf("Erreur d'initialisation de l'I2C pour l'adresse 0x%02X\n", 0x0D);
return -1;
}
// Initialisation du capteur
QMC5883L_Init(fd);
while (1) {
// Lire les axes X, Y, Z
int16_t x_raw = QMC5883L_ReadRawAxis(fd, 0x00, 0x01);
int16_t y_raw = QMC5883L_ReadRawAxis(fd, 0x02, 0x03);
int16_t z_raw = QMC5883L_ReadRawAxis(fd, 0x04, 0x05);
if (x_raw != -1 && y_raw != -1 && z_raw != -1) {
// Afficher les valeurs brutes des axes X, Y et Z
printf("Valeurs brutes - X: %d, Y: %d, Z: %d\n", x_raw, y_raw, z_raw);
} else {
printf("Erreur lors de la lecture des données\n");
}
delay(100); // Lecture toutes les 0,1 seconde
}
return 0;
}
- Edité par AntoinePaitier1 7 septembre 2024 à 20:33:00
Problème lecture QMC5883L
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.