J’ai récemment commandé chez Sparkfun un afficheur LED 4 digits, 7 segments. C’est bien pratique quand il s’agit d’afficher le résultat d’une mesure sans avoir à compter sur la connection série vers le PC. J’ai décidé de réaliser le montage le plus simpole possible avec le programme qui l’opère le plus compact, et ce afin de faciliter sa compréhension et pouvoir le reproduire rapidement.
Le composant
Pour plus de détails, on retrouvera les informations du composant ici. Je ne donne ici que les informations importantes pour l’utiliser. Pour commencer, il s’agit d’un afficheur à cathode commune, ce qui signifie que les cathodes de différentes LED sont reliées entre elles. Il est opéré via 12 pins : 1 pin commun pour chaque digit (la cathode commune d’un groupe de 8 LEDS), et 1 pin commun pour chaque segment tout digit confondu (y compris le symbole point séparateur de décimale) : soit 4 + 8 = 12 pins C’est le choix du pin « digit » et du pin « segment » qui permet de décider quel segment sur quel pin va s’allumer.
On comprend alors bien que si l’on choisit un chiffre à afficher et qu’on active les 4 digits, on retrouvera 4 fois le même chiffre. Comment faire donc pour afficher des chiffres différents sur les 4 digits : en allumant et éteignant successivement les 4 digits tour à tour, et suffisamment rapidement pour qu’on ne s’en rende pas compte. C’est le travail de la librairie que l’on va utiliser.
Le montage
On manipule des LEDs, donc on les protège avec une résistance, ici choisie à 220 ohms (mais l’on pourrait descendre à 120 ohms), que l’on place à la cathode de chaque digit. On câble ensuite :
– en jaune chacun des digits en sortie des résistances
– en rouge les digits en sortie de l’afficheur
– en blanc les 8 types de segments (7 segments + le point)
Voici le tableau complet du câblage avec les conventions du composant:
Voici la photo de la réalisation:
Et voici le câblage plus lisible:
Reste maintenant à programmer l’Arduino pour afficher un nombre.
Le programme
Le programme suivant se base principalement sur une librairie facile d’utilisation que l’on trouve ici. En seulement deux commandes, elle permet de préparer le nombre à afficher et de l’afficher. Pour conserver l’affichage, il faut souvent appeler la méthode PrintOutput. Si trop d’opérations sont effectuées entre deux appels de PrintOutput, l’affichage clignotera sensiblement plutôt que de rester stable.
Enfin, on remarque l’appel à Begin et sa longue liste d’argument. Avec les conventions et le câblage ci-dessus, il sera parfaitement fonctionnel. Mais pour un câblage légèrement différent, il faudra penser à changer l’ordre des arguments.
// Include library found at // https://docs.google.com/file/d/0Bwrp4uluZCpNdE9oWTY0M3BncTA/edit #include "SevSeg.h" //Create an instance of the object. SevSeg sevseg; void setup() { // Set up pins // Arguments : // First 0 is for common cathode // Following 0 to 11 numbers are for Arduino pins // connected to display in the following order // 1,2,3,4,A,B,C,D,E,F,G,DP sevseg.Begin(0,0,1,2,3,4,5,6,7,8,9,10,11); } void loop() { // Prepare number to display, and dot position // (0 to 3, other number means no dot) sevseg.NewNum(1234,0); // Display number sevseg.PrintOutput(); // To maintain display with this wiring, // we are forced to loop over those commands rapidly }