Voici le code du capteur (que j'ai rentré dans mon vrai programme mais c'est tellement un chantier que ça ne servirait pas à grand chose que je vous le mette)
Votre réponse m'a un peu mis sur la voie des librairies et je vais me documenter de ce pas dessus
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(9600);
// 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 (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}
C'est un capteur qui communique en I2C, il a des pins SDA et SCL qu'il faut relier à des broches de ton Arduino. Celles-ci dépendent du modèle mais c'est souvent A4 et A5. Voir ici pour connaitre les broches.
ewennb:
J'ai un capteur qui utilise les entrées analogiques A4 et A5, et j'ai besoin de brancher une EEPROM sur ces mêmes ports A4 et A5 d'après un tuto.
C'est quoi cette EEPROM, un module?
Si elle se met sur ces pins en particulier, c'est fort probablement parce qu'elle est elle-même en i²c.
Chaque machin i²c a son adresse, comme le précise le collègue, le tout c'est de respecter ces adresses et de ne pas vouloir tout faire en même temps.
Oui l'EEPROM est un stockage déjà présent sur l'arduino, mais qui a une durée de vie limitée (100 000 écritures je crois), c'est pour cela que je voudrais en utiliser une externe.
C'est pour stocker une dizaine d'entiers en boucle, mesures de mon capteur (que j'ai besoin de traiter plus tard). En gros à mon 10ème mesure je fais bouger mon servomoteur.
Elle a aussi la particularité de conserver ses données après coupure de courant contrairement à de la RAM par exemple, même si dans mon projet cela ne me sert à rien.
pour utiliser une adresse différente il faut simplement mettre ce genre de bidouille?
En cherchant un peu sur Google "multiple I2C arduino" on trouve des exemples de mise en oeuvre.
Un exemple ici ou ici.
Le marche à suivre est toujours la même comme indiqué par Pepe et Kammo :
Wire.beginTransmission(DEV_ID);
Wire.write(0xAA); // read temperature command
Wire.endTransmission();
Wire.requestFrom(DEV_ID, 2); // request two bytes from DS1621 (0.5 deg. resolution)
firstByte = Wire.read(); // get first byte
secondByte = Wire.read(); // get second byte
temp = firstByte;
Wire.beginTransmission(DEV_ID2);
Wire.write(0xAA); // read temperature command
Wire.endTransmission();
Wire.requestFrom(DEV_ID2, 2); // request two bytes from DS1621 (0.5 deg. resolution)
firstByte2 = Wire.read(); // get first byte
secondByte2 = Wire.read();
2 périphériques I2C sont reliés à un Arduino, ils ont les adresses DEV_ID1 et DEV_ID2. Ils sont interrogés l'un après l'autre, après avoir ouvert puis fermé la communication. Les commandes sont reproduites pour le premier puis pour le second.