Bonjour GiLe,
votre remarque m’a intrigué, j’ai donc fait un “main.c” avec le code ci-dessous ;
il en résulte dans l’affichage des résultats, que seul le premier capteur renvoie ses valeurs ; je pense que c’est dû au fait que l’exécution ne peut sortir de la première boucle sans fin ; seul un autre thread tournant en parallèle permet donc d’activer la lecture du deuxième capteur.
Cordialement.
int main(void)
{
/* Initialize the lps331ap sensor here */
lpsxxx_init(&lpsxxx, &lpsxxx_params[0]);
/* Initialize the lsm303dlhc sensor here */
lsm303dlhc_init(&lsm303dlhc, lsm303dlhc_params);
/* Add the lps331ap sensor polling endless loop here */
while (1) {
uint16_t pres = 0;
int16_t temp = 0;
lpsxxx_read_temp(&lpsxxx, &temp);
lpsxxx_read_pres(&lpsxxx, &pres);
printf("Pressure: %uhPa, Temperature: %u.%u°C\n",
pres, (temp / 100), (temp % 100));
xtimer_sleep(2);
}
/* Add the lsm303dlhc sensor polling endless loop here */
while (1) {
lsm303dlhc_3d_data_t mag_value;
lsm303dlhc_3d_data_t acc_value;
lsm303dlhc_read_acc(&lsm303dlhc, &acc_value);
printf("Accelerometer x: %i y: %i z: %i\n",
acc_value.x_axis, acc_value.y_axis, acc_value.z_axis);
lsm303dlhc_read_mag(&lsm303dlhc, &mag_value);
printf("Magnetometer x: %i y: %i z: %i\n",
mag_value.x_axis, mag_value.y_axis, mag_value.z_axis);
xtimer_usleep(500 * US_PER_MS);
}
return 0;
}