Stabiliser la lecture de RC522 multiples

Bonjour,
après 48h de prise de tête pour faire fonctionner 6 lecteur RC522 brancher convenablement (donc en maitre/esclave avec plusieurs broches SS(SDA). J'ai trouver la solution.
Les bibliothèques utilisées sont "SPI.h" et "MFRC522.h" classique.
Les lecteurs sont branché en 3,3V sur une alimentation indépendante de l'Arduino.
Mais je n'avais toujours qu'1 ou 2 lecteurs qui fonctionnaient et pas toujours les mêmes.
Même en ajoutant des délais un peu partout le fonctionnement restait aléatoire.
Après le lecture du code SPI, MFRC522 et la surveillance des différentes PINS SS(SDA) j'en suis arrivé à la conclusion qu'il y avait effectivement un problème lors de l'initialisation avec les sorties SS(SDA).
Le plus simple pour corriger ce problème et rendre la lecture de multiples lecteurs RC522 stable, c'est de reprendre la main sur les différentes sortie SS(SDA) au début du programme et de les fermer (HIGH) avant l'initialisation des lecteurs.

  // ferme tout les lecteurs RFID
  for (byte j=0; j<NbLect; j++)
  {
    pinMode(ssp[j], OUTPUT); 
    digitalWrite(ssp[j], HIGH);
    delay(50);
  }

NbLect c'est le nombre total de lecteur branché.
ssp[] c'est la liste des broches des SS(SDA).

En espérant pouvoir être utile à d'autre.

Le delay ne sert à rien. Oui il faut mettre toutes les CS/SS pins en OUTPUT et HIGH pour que ça fonctionne correctement et si vous n’utilisez pas la pin matérielle il faut penser aussi à la mettre en sortie et à HIGH

Notez que C++ supporte le parcours de tableau, on peut écrire


// déselectionner tous les lecteurs
  for (auto & csPin : ssp) {
    pinMode(csPin, OUTPUT); 
    digitalWrite(csPin, HIGH);
  }