Analog pin et I2C

Bonjour,
Pour des contraintes de tailles et de compatibilité, je suis contraint d'utiliser une Arduino Uno.
J'utilise également un shield écran tactile de chez Elegoo :

Le problème, c'est que le shield est connecté sur sa patte LCD_rst a la pin A4 de l'Arduino. J'ai également besoin d'utiliser des capteur connectés en I2C sur l'Arduino.

Peut être existe-t-il un moyen de dissocier le SCL et SDA présents à la fois sur les pins A4 et A5 et celui présent à la suite des pin 11 12 13 GND... Reste à savoir si la liaison est matérielle ou logiciel.

Sinon peut-être y a t-il une autre solution?

Merci d'avance pour vos réponse.

quelle bibliothèque utilisez vous avec cet écran ? (un lien clickable svp)
il y a peut-être un moyen simple de dire que c'est une autre pin. En tordant la pin sous le shield pour qu'elle ne s'enfonce pas dans A4 t en la connectant ailleurs vous pourrez alors (peut-être) utiliser le I2C

Le problème c'est que ce shield utilise toutes les I/O d'une UNO à part D0 et D1.
Une solution serait de supprimer la pin LCD_rst sur le shield et de souder un fil entre LCD_rst et RESET

Les bibliothèques étaient présentent sur un cd livré avec le shield. Il est marqué que l'on peut également les télécharger à l'adresse :

Mais je ne les ai pas trouvées Je vous mets les .zip en dessous
Elegoo_GFX.zip (10,7 Ko)
Elegoo_TFTLCD.zip (160,0 Ko)
TouchScreen.zip (4,4 Ko)

Si je connecte la broche lcd rst sur reset, comment le déclarer dans le code?

Le lien est là

Je suis juste sur mon iPhone donc je ne peux pas regarder pour le moment mais il faudra s’assurer que la bibliothèque ne fasse pas un reset après le démarrage si vous connectez à la pin reset du UNO

L'écran seras initialisé en même temps que le processeur de la carte Arduino.
Il n'y a rien à déclarer.

j'ai téléchargé la bibliothèque et dans un exemple ils disent

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

mais si je regarde le code de begin()

void Elegoo_TFTLCD::begin(uint16_t id) {
  uint8_t i = 0;
  reset();
...

et la fonction reset() fait cela

void Elegoo_TFTLCD::reset(void) {

  CS_IDLE;
//  CD_DATA;
  WR_IDLE;
  RD_IDLE;

#ifdef USE_Elegoo_SHIELD_PINOUT
  digitalWrite(5, LOW);
  delay(2);
  digitalWrite(5, HIGH);
#else
  if(_reset) {
    digitalWrite(_reset, LOW);
    delay(2);
    digitalWrite(_reset, HIGH);
  }
#endif

  // Data transfer sync
  CS_ACTIVE;
  CD_COMMAND;
  write8(0x00);
  for(uint8_t i=0; i<3; i++) WR_STROBE; // Three extra 0x00s
  CS_IDLE;
}

et dans le .h on a

//#define USE_Elegoo_SHIELD_PINOUT 1

donc le code de la fonction reset fait

  if(_reset) {
    digitalWrite(_reset, LOW);
    delay(2);
    digitalWrite(_reset, HIGH);
  }

ou reset est le N° de la pin donné au constructeur

➜ si on passe 0 au constructeur, alors le reset ne sera pas appliqué.

il faut appeler le constructeur comme cela:
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, 0);

ou changer
#define LCD_RESET 0

Ils expliquent la même chose ICI, peut-être que cela vous aidera.
Salutations.

????

Bon sang, je ne sais pas ce qui s'est passé. Corrigé

En effet, cela fonctionne (I2C et écran en même temps).
Il me vient une dernière question, il est écrit plus haut:

Et dans le lien :

Il est écrit #define LCD_RESET 1

'1' ou '0' quelle différence?

si vous mettez 1, ce sera le N° de la pin affectée au reset.
si vous mettez 0 le code tel qu'il est écrit

if(_reset) {
    digitalWrite(_reset, LOW);
    delay(2);
    digitalWrite(_reset, HIGH);
  }

va ignorer la séquence de reset.

merci