Page 1 sur 1

Tester un Arduino Nano

Posté : 07 juin 2026, 23:08
par ramasoft
Comme je suis dans les Arduino j'ai fait aussi un petit bout de code qui permet de tester toutes les broches en digital d'un Arduino Nano.

Tester une carte de fond en comble permet d'éviter de s'arracher les cheveux plus tard sur un projet à cause d'une broche défectueuse.
Pour tester toutes les broches d'un Arduino Nano (les broches numériques et analogiques), le plus simple est de les tester en boucle en les reliant 2 par 2.
Le code va envoyer un signal (HAUT puis BAS) sur une broche et vérifier si la broche voisine reçoit correctement ce signal.
Si le signal est reçu dans les deux sens, les deux broches sont bonnes.

• Si tout affiche "OK" : Les circuits d'entrée et de sortie de toutes ces broches fonctionnent parfaitement.
• Si une paire affiche "ERREUR" :
1. Débranchez l'Arduino.
2. Vérifiez que votre fil reliant les deux broches en question est bien enfoncé et au bon endroit.
3. Relancez. Si l'erreur persiste, l'une des deux broches (ou les deux) a probablement grillé (souvent à cause d'un court-circuit antérieur ou d'une demande de courant trop forte).

Le Schéma de câblage
Il faut mettre l'Arduino Nano sur une plaque d'essai (breadboard) et relier les broches deux par deux :
• D2 reliée à D3
• D4 reliée à D5
• D6 reliée à D7
• D8 reliée à D9
• D10 reliée à D11
• D12 reliée à A0
• D13 est simplement testée par clignotement de sa LED
• A1 reliée à A2
• A3 reliée à A4
• A5 reliée à A6
• A7 n'est pas testée (broche analogique pure)

Le test tourne en boucle dans le loop.
Si on veut juste le réaliser une fois à l'initialisation de la carte il suffit de tout mettre dans le Setup.

Code : Tout sélectionner

/********************************
        Test Arduino Nano
       (c) Ramasoft 2026
 ********************************
  Test à faire sur une breadboard en reliant les broches 2 à 2
  Sortie sur le moniteur série réglé à 9600 bauds
      D2 -> D3
      D4 -> D5
      D6 -> D7
      D8 -> D9
      D10 -> D11
      D12 -> A0 (D13 est reliée à une LED interne)
      A1 -> A2
      A3 -> A4
      A5 -> A6
      A7 ignorée  (entrée analogique à tester avec +5V ou Gnd)
*/
// Structure pour définir les paires de broches à tester
struct PinPair {
  int pinA;
  int pinB;
  const char* nameA;
  const char* nameB;
};

// Liste des paires selon notre câblage
PinPair pairs[] = {
  {2, 3, "D2", "D3"},
  {4, 5, "D4", "D5"},
  {6, 7, "D6", "D7"},
  {8, 9, "D8", "D9"},
  {10, 11, "D10", "D11"},
  {12, 14, "D12", "A0"}, // A0 correspond à la broche numérique 14
  {15, 16, "A1", "A2"},  // A1=15, A2=16
  {17, 18, "A3", "A4"},  // A3=17, A4=18
};

const int numPairs = sizeof(pairs) / sizeof(pairs[0]);

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; } // Attend l'ouverture du moniteur série
  
  Serial.println("--- DEBUT DU TEST DES BROCHES ARDUINO NANO ---");
  Serial.println("Assurez-vous que les broches sont reliées deux par deux.");
  delay(2000);
}

bool testPair(PinPair p) {
  bool success = true;

  // Test 1 : pinA en SORTIE, pinB en ENTREE
  pinMode(p.pinA, OUTPUT);
  pinMode(p.pinB, INPUT);

  // Test HAUT
  digitalWrite(p.pinA, HIGH);
  delay(5);
  if (digitalRead(p.pinB) != HIGH) success = false;

  // Test BAS
  digitalWrite(p.pinA, LOW);
  delay(5);
  if (digitalRead(p.pinB) != LOW) success = false;

  // Test 2 : On inverse les rôles (pinB en SORTIE, pinA en ENTREE)
  pinMode(p.pinB, OUTPUT);
  pinMode(p.pinA, INPUT);

  // Test HAUT
  digitalWrite(p.pinB, HIGH);
  delay(5);
  if (digitalRead(p.pinA) != HIGH) success = false;

  // Test BAS
  digitalWrite(p.pinB, LOW);
  delay(5);
  if (digitalRead(p.pinA) != LOW) success = false;

  // Remise à l'état initial (sécurité)
  pinMode(p.pinA, INPUT);
  pinMode(p.pinB, INPUT);

  return success;
}

void loop() {
  Serial.println("\n--- Lancement du diagnostic ---");
  int errors = 0;

  for (int i = 0; i < numPairs; i++) {
    Serial.print("Test de la paire [");
    Serial.print(pairs[i].nameA);
    Serial.print(" <-> ");
    Serial.print(pairs[i].nameB);
    Serial.print("] : ");

    if (testPair(pairs[i])) {
      Serial.println("OK V");
    } else {
      Serial.println("ERREUR X (Vérifiez le câblage ou broche HS)");
      errors++;
    }
  }

  // Petit test bonus pour la LED interne (D13)
  Serial.print("Test visuel D13 (LED interne) : Clignotement...");
  pinMode(13, OUTPUT);
  for(int i=0; i<3; i++) {
    digitalWrite(13, HIGH); delay(200);
    digitalWrite(13, LOW); delay(200);
  }
  Serial.println(" Fait.");

  if (errors == 0) {
    Serial.println("\n-> TOUT EST OK ! L'Arduino Nano est en bon état.");
  } else {
    Serial.print("\n-> ATTENTION : ");
    Serial.print(errors);
    Serial.println(" erreur(s) détectée(s).");
  }

  Serial.println("Fin du test. Nouvelle analyse dans 10 secondes...");
  delay(10000);
}

Re: Tester un Arduino Nano

Posté : 08 juin 2026, 04:45
par likiki
Excellente idée que ce programme test.

:bienv: :bienv: :bienv: :bienv: :bienv:

Re: Tester un Arduino Nano

Posté : 08 juin 2026, 10:06
par clbesson
Le nano est mon préféré, et celui que j'utilise le plus pour les décodeurs gérant les servos des aiguillages, les contrôleurs S88 pour les détections de voie ... de plus facilement intégrable dans un bus CAN ...
et le Pro micro pour des accessoires de type joystick que l'on peut connecter facilement à un PC (boîte à boutons, volant) ...

merci pour ce petit programme :cooooool:

:bienv: :bienv:

Re: Tester un Arduino Nano

Posté : 08 juin 2026, 10:33
par herwat
Oui, intéressant ce programme . :cooooool:
ça peut lever des doutes et en plus, il fonctionne aussi sur l'UNO et le pro mini . C'est cool ! :PetitPoucejpg:

:bienv: et merci :merciiii:

Re: Tester un Arduino Nano

Posté : 08 juin 2026, 10:51
par ramasoft
Il n'y a que pour le test des broches RX et TX que je n'ai pas trouvé car ça se mord la queue avec la liaison USB...

Re: Tester un Arduino Nano

Posté : 08 juin 2026, 12:33
par herwat
Ah ça oui .
Et pas la peine d'essayer de charger le programme si ces deux bornes sont branchée ! ! ! :3: