From 75443c2d2290eec373dc0817875be8c860db22f0 Mon Sep 17 00:00:00 2001 From: Samuel Date: Tue, 28 Feb 2023 22:43:41 +0100 Subject: [PATCH] =?UTF-8?q?Le=20code=20d'initialisation=20(i)=20et=20le=20?= =?UTF-8?q?code=20de=20lecture=20(j)=20semble=20marcher=20=C3=A0=20tous=20?= =?UTF-8?q?les=20coups.=20A=20confirmer=20+=20faire=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SelectionCapteur.c | 2 +- main.c | 33 ++++++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/SelectionCapteur.c b/SelectionCapteur.c index 4730fa3..ee1b6bf 100644 --- a/SelectionCapteur.c +++ b/SelectionCapteur.c @@ -43,5 +43,5 @@ void Selection_capteur_init_pin_low(uint pin){ } void Selection_capteur_deselect(){ - Selection_capteur_select(15); + Selection_capteur_select(16); } \ No newline at end of file diff --git a/main.c b/main.c index 00014e6..43fdee6 100644 --- a/main.c +++ b/main.c @@ -24,6 +24,7 @@ void init_sensors(void); void display_menu(); +uint8_t statu_capteurs[13]; void main(void) { @@ -92,11 +93,13 @@ void main(void) void initialise_adresses(void){ const uint8_t tmp_i2c_adresse = 0x28; const uint8_t default_i2c_adresse = 0x29; - uint8_t VL53L1X_device = 0x29; + uint8_t adresse = default_i2c_adresse; + + // On change l'adresse de tous les capteurs Selection_capteur_deselect(); - change_address(&VL53L1X_device, tmp_i2c_adresse); + change_address(&adresse, tmp_i2c_adresse); // Pour chaque capteur for(uint capteur=1; capteur<=12; capteur++){ @@ -105,21 +108,21 @@ void initialise_adresses(void){ sleep_ms(1); Selection_capteur_deselect(); sleep_ms(1); - VL53L1X_device = 0x29; + uint8_t VL53L1X_device = 0x29; if(change_address(&VL53L1X_device, 0x30 + capteur)){ printf("Erreur change adresse : %x => %x, capteur : %d\n", VL53L1X_device, 0x30 + capteur, capteur); ws2812_set_buffer_rgb(0x4, 0, 0, capteur-1); + statu_capteurs[capteur]=0; }else{ if(VL53L1X_SensorInit(VL53L1X_device)){ // bad init ws2812_set_buffer_rgb(0x4, 0, 0, capteur-1); + statu_capteurs[capteur]=0; }else{ // good init + statu_capteurs[capteur]=1; int status; - ws2812_set_buffer_rgb(0, 0x4, 0, capteur-1); - - // Custom configuration status = VL53L1X_SetDistanceMode (VL53L1X_device, 1); // Short mode status |= VL53L1X_SetInterMeasurementInMs(VL53L1X_device, 200); status |= VL53L1X_SetTimingBudgetInMs(VL53L1X_device, 200); @@ -131,15 +134,28 @@ void initialise_adresses(void){ } status=VL53L1X_StartRanging(VL53L1X_device); + if(!status){ + ws2812_set_buffer_rgb(0, 0x4, 0, capteur-1); + }else{ + ws2812_set_buffer_rgb(0x2, 0x2, 0, capteur-1); + } + + } } } ws2812_affiche_buffer(); + + ws2812_affiche_buffer(); + } int continuous_multiple_reading(){ - for(uint8_t device=0x31; device<0x34; device++){ + for(uint8_t device=0x31; device<0x31+12; device++){ + if(statu_capteurs[device-0x31+1]==0){ + continue; + } int status; uint8_t data_ready = 0; uint16_t distance; @@ -147,7 +163,6 @@ int continuous_multiple_reading(){ status=VL53L1X_CheckForDataReady(device, &data_ready); if(status){ printf("CheckForDataReady KO, error %d, capteur:%x\n", status, device); - return 0; } } @@ -167,7 +182,7 @@ int continuous_multiple_reading(){ int lettre = getchar_timeout_us(0); if(lettre != PICO_ERROR_TIMEOUT && lettre != 0){ - return 0; + //return 0; } } return 1;