Changer numéro port analogique

Bonjour,

Je suis un gros débutant et ma question va peut être paraitre ridicule, mais voilà:

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.

J'aimerais donc changer A4 et A5 dans mon code pour qu'ils deviennent par exemple A0 et A1.

(je ne vois pas d'endroit dans mon code où les ports sont attribués)

Merci !

ewennb:
je ne vois pas d'endroit dans mon code où les ports sont attribués

Nous non plus si tu ne poste pas le code.
Ca peut être codé directement dans la librairie.

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 :slight_smile:

#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.

Merci de votre réponse, je l'ai bien branché en i2c sur A4 et A5 mais mon EEPROM a aussi besoin de ces ports, c'est là le problème.

Si je comprends bien le document du lien, ce n'est pas possible :confused:

Aïe

Merci de votre réponse très complète.
Je vais essayer de faire en parallèle, il n'y a pas de raison que les codes interfèrent.

J'espère que j'aurai fini pour jeudi... :smiley:

Bonne fin de week end.

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?

#define disk1 0x49 //capteur 
#define disk1 0x50 //eeprom

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.