Je souhaiterai programmer 2 capteurs VLL53L0X avec un seul et unique programme qui mesure la distance. J'ai fait un programme qui permet d'en programmer un seul, le voici:
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(115200);
// wait until serial port opens for native USB devices
while (! Serial) {
delay(1);
}
Serial.println("Adafruit VL53L0X test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// power
Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
Serial.print("Reading a measurement... ");
lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
if (measure.RangeStatus != 4) { // phase failures have incorrect data
Serial.print("Distance (cm): "); Serial.println(measure.RangeMilliMeter/10.0);
} else {
Serial.println(" out of range ");
}
delay(100);
}
Quelqu'un saurait-il comment faire pour 2 capteurs ?
Merci et bonne journée.
Si l'adresse I2C n'est pas configurable (switch ou registre interne) il faut passer par un multiplexeur I2C pour gérer sur le même bus des composants d'adresses identiques.
Je mets à part les détournements de multiplexeurs analogiques (CD405x) pour faire du multiplexage de signaux I2C........ ça peut parfois marcher.....pour de l'I2C lent et sous réserve que leur résistance à l'état ON soit assez faible.....Avec ces réserves voilà le genre (trouvé sur le net et non testé):
Si l'adresse I2C n'est pas configurable (switch ou registre interne) il faut passer par un multiplexeur I2C
Or la note d'application mentionne une possibilité de redéfinition de l'adresse d'un VL53L0X, rendant alors possible la cohabitation de plusieurs d'entre eux sur un bus I2C unique.
Since the VL53L0X can have the I2C device address changed by doing an I2C write once it is booted, a unique reset pin would be needed for each VL53L0X used in a design. Each device is then taken out of reset one at a time, and then the I2C Device Address is changed to a new unique address. This can be done by using multiple GPIO pins from the microprocessor on the board
Un retour à la notice technique du composant permettra peut être de trouver la procédure détaillée pour indiquer à chaque capteur sa nouvelle adresse puis le resetter pour que cette adresse soit activée.
Il faut donc 2 GPIO pour reseter individuellement les 2 capteurs
la librairie Pololu pour ce capteur comporte une fonction de redéfinition d'adresse I2C :
Peut être faut-il :
-mettre l'un des capteurs en veille par XSHUT
-aciver l'autre (XSHUT)
-lui envoyer (à l'adresse par défaut) sa nouvelle adresse, puis le resetter (actualisation d'adresse)
-réveiller l'autre capteur (XSHUT)
-lui envoyer (à l'adresse par défaut) sa nouvelle adresse et ensuite le resetter (XSHUT)
par la suite les deux capteurs sont individualisés....... ou pas ..... si la procédure à suivre diffère !!
N.B : je n'ai pas de capteur pour tester cette procédure !!
peux-tu, s'il te plait :
-ajouter Résolu dans le titre de ton message initial
-poster le code d'intitialisation utilisé avec succès pour séparer les adresses des deux capteurs, ça fera gagner du temps à un prochain utlisateur (librairie Adafruit ou Plololu ? code trouvé sur le forum Pololu ou code perso ?)