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;