28 Mars 2014
Arduino leçon 14 : les afficheurs 7 segments



Les deux types d'afficheurs
Ces 8 led sont toutes reliées soit par leur anode, soit par leur cathode.
Voici les 2 schémas de principe


L'électrode libre peut être reliée à des broches d'Arduino par une résistance mais généralement on utilise un circuit spécialisé (décodeur) qui sélectionne les led en fonction du chiffre souhaité.

On voit à droite les 16 chifres hexadécimaux qu'on peut obtenir à partir de 4 entrées.
Exercice
On relie les entrées A, B, C, D du décodeur aux sorties 2 à 5 d'Arduino.
On écrit un programme qui compte continuellement de 0 à 9 avec 3 secondes d'arrêt sur chaque chiffre.
Les pattes A, B, C, D correspondent aux valeurs d'entrée 1, 2, 4, 8.
Les entrées /LT, /RBI, /RBO sont à relier à Vcc (+5).
Les sorties a à g correspondent aux segments de l'afficheur.

Voici le schéma de nos afficheurs :

Les broches 3 et 8 sont reliées et correspondent à l'anode des segments.
Remarque: Je recommande de mettre une résistance entre le décodeur et chaque segment.
Le programme
/* Afficheur.ino fait défiler les chiffres de 0 à 9 pendant 2 secondes chacun. */ #define poids1 2 #define poids2 3 #define poids4 4 #define poids8 5 byte chiffre=0; long heure; void setup() { pinMode (poids1, OUTPUT); pinMode (poids2, OUTPUT); pinMode (poids4, OUTPUT); pinMode (poids8, OUTPUT); heure = millis(); Serial.begin(9600); } void loop(){ if ( millis() > heure) { eteins(); affiche(); heure += 2000; } } void eteins() { digitalWrite(poids1, LOW); digitalWrite(poids2, LOW); digitalWrite(poids4, LOW); digitalWrite(poids8, LOW); } void afficher ( byte chip, byte chiffre ) { // ce sous-programme reçoit 2 paramètres : // - le N° de l'afficheur et // - le chiffre à afficher byte pin = chip + 10; // pin 11 ou 12 pour afficheur 1 ou 2 // on éteins les segments digitalWrite(poids1, LOW); digitalWrite(poids2, LOW); digitalWrite(poids4, LOW); digitalWrite(poids8, LOW); digitalWrite(pin, HIGH); switch (chiffre) { case 0 : break; case 1 : digitalWrite(poids1, HIGH); break; case 2 : digitalWrite(poids2, HIGH); break; case 3 : digitalWrite(poids1, HIGH); digitalWrite(poids2, HIGH); break; case 4 : digitalWrite(poids4, HIGH); break; case 5 : digitalWrite(poids1, HIGH); digitalWrite(poids4, HIGH); break; case 6 : digitalWrite(poids2, HIGH); digitalWrite(poids4, HIGH); break; case 7 : digitalWrite(poids1, HIGH); digitalWrite(poids2, HIGH); digitalWrite(poids4, HIGH); break; case 8 : digitalWrite(poids8, HIGH); break; case 9 : digitalWrite(poids1, HIGH); digitalWrite(poids8, HIGH); break; } delay(5); digitalWrite(pin, LOW); } // fin du switch chiffre = (chiffre + 1) %10; Serial.println(chiffre); } |
Si vous voulez continuer chez vous, je vous suggère un second programme : afficher un chiffre entré par le moniteur série.
Le câblage sera exactement le même.
Décodeur décimal -> 7 segmentsLe 7447 décode ses entrées jusqu'à 10 et commande les sorties correspondant aux segments utiles.
|
haut de la page

