Prise en compte du "Range status" lors de la lecture des mesures

This commit is contained in:
Samuel 2023-05-18 10:50:00 +02:00
parent c3580f9525
commit 0cd6b9b6db

View File

@ -130,18 +130,30 @@ int capteur_pret(uint8_t capteur){
int capteur_lire_distance_cm(uint8_t capteur, uint8_t * distance_cm){
int status;
uint16_t distance_mm;
uint8_t range_status;
status=VL53L1X_GetDistance(capteur + ADRESSE_I2C_BASE, &distance_mm);
if(status){
printf("GetDistance KO, error %d, capteur:%x\n", status, capteur + ADRESSE_I2C_BASE);
return 0;
}else{
}
status=VL53L1X_GetRangeStatus(capteur + ADRESSE_I2C_BASE, &range_status);
if(status){
printf("GetRangeStatus KO, error %d, capteur:%x\n", status, capteur + ADRESSE_I2C_BASE);
return 0;
}
if(range_status == 0){
if(distance_mm/10 < (uint16_t) DISTANCE_TROP_LOIN_CM){
*distance_cm = distance_mm / 10;
}else{
*distance_cm = DISTANCE_TROP_LOIN_CM;
}
}else{
*distance_cm = DISTANCE_TROP_LOIN_CM;
}
status=VL53L1X_ClearInterrupt(capteur + ADRESSE_I2C_BASE);
if(status){
printf("ClearInterrupt KO, error %d, capteur:%x\n", status, capteur + ADRESSE_I2C_BASE);