From 0cd6b9b6dbe8c9e149ed559eb33d792e820fd72c Mon Sep 17 00:00:00 2001 From: Samuel Date: Thu, 18 May 2023 10:50:00 +0200 Subject: [PATCH] Prise en compte du "Range status" lors de la lecture des mesures --- VL53L1X_Fonctions.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/VL53L1X_Fonctions.c b/VL53L1X_Fonctions.c index dae70a7..142a04e 100644 --- a/VL53L1X_Fonctions.c +++ b/VL53L1X_Fonctions.c @@ -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);