Tester un Arduino Nano

Répondre
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5672
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juin 2026 07 23:08

Tester un Arduino Nano

Message par France 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);
}
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16764
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juin 2026 08 04:45

Re: Tester un Arduino Nano

Message par France likiki

Excellente idée que ce programme test.

:bienv: :bienv: :bienv: :bienv: :bienv:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France clbesson
Posteur habitué
Posteur habitué
Messages : 46
Enregistré le : 25 juin 2025, 09:05
Prénom : Clément
LOCALISATION : France
Centres d'intérêts : Modélisme ferroviaire HO
Electronique
programmation arduino
Echelle pratiquée : H0
Âge : 66
Pays :
France
France
juin 2026 08 10:06

Re: Tester un Arduino Nano

Message par France 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:
Avatar du membre
France herwat
2000 posts et +
2000 posts et +
Messages : 6965
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 79
Pays :
France
France
juin 2026 08 10:33

Re: Tester un Arduino Nano

Message par France 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:
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5672
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juin 2026 08 10:51

Re: Tester un Arduino Nano

Message par France 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...
Avatar du membre
France herwat
2000 posts et +
2000 posts et +
Messages : 6965
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 79
Pays :
France
France
juin 2026 08 12:33

Re: Tester un Arduino Nano

Message par France herwat

Ah ça oui .
Et pas la peine d'essayer de charger le programme si ces deux bornes sont branchée ! ! ! :3:
Répondre

Retourner vers « Arduino et le train miniature »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité