Nous nous retrouvons pour un nouveau tutoriel Arduino sur les afficheurs 7 segments.
Vous avez tous déjà vu ou entendu parlé de ces afficheurs.
De quoi s’agit il ? Un afficheur 7 segments est un composant comme celui-ci :
Il est composé de 7 diodes, ici les 7 segments, en forme de « ligne » qui permettent de former des chiffres allant de 0 à 9. Ces afficheurs sont souvent rouges mais on peut en trouver de couleur blanche, bleue, verte …
Pour la réalisation de ce tutoriel, nous allons avoir besoin d’un peu de matériel. Mais comme à notre habitude, je vous transmet une liste de ce dont nous allons utiliser :
Matériel
- 1 afficheur 7 segments
- 8 résistances de 330 Ohms
- 1 carte Arduino
Pour la réalisation de ce tutoriel, je vais utiliser un afficheur à Cathode commune. C’est à dire que l’afficheur possède un GND pour toute les diodes et qu’il suffira d’envoyer 5V dans les pins que nous voulons allumer pour former les chiffres.
Présentation de l’afficheur
L’afficheur que je vais utiliser est similaire à la photo suivante :
Cet afficheur est composé de 7 segments référencés de A à F de la manière suivante :
Voici la signification des différents pins :
A présent, nous allons réaliser le branchement de l’afficheur. Voici celui que j’ai réalisé :
Vous pouvez voir sur ce schéma que l’on a branché à la masse les pins 3 et 8 et tous les autres pins sont branchés à des sorties de l’Arduino.
Avant de commencer, voici un tableau dans lequel est récapitulé les pins à mettre à l’état 1 pour afficher les caractères suivant :
Programmation
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
void setup(){
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void loop(){
zero();
delay(1000);
un();
delay(1000);
deux();
delay(1000);
trois();
delay(1000);
quatre();
delay(1000);
cinq();
delay(1000);
six();
delay(1000);
sept();
delay(1000);
huit();
delay(1000);
neuf();
delay(1000);
}
void zero(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}
void un(){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void deux(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void trois(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void quatre(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void cinq(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void six(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void sept(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void huit(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void neuf(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
Voila à quoi vous allez arriver :
A présent vous savez comment utiliser un afficheurs 7-segments. Vous pouvez combiner plusieurs afficheurs pour réaliser une horloge, un compteur ou encore afficher des mots.
Grégoire A.
void loop(){
zero();
delay(1000);
un();
delay(1000);
deux();
delay(1000);
trois();
delay(1000);
quatre();
delay(1000);
cinq();
delay(1000);
six();
delay(1000);
sept();
delay(1000);
huit();
delay(1000);
neuf();
delay(1000);
}
a quoi sert ce code?
Bonjour,
Il s’agit d’un code de démonstration qui permet df’afficher successivement les chiffres 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 sur l’afficheur 7 segments.
A bientôt
Bonjour
Je trouve très intéressent votre tutorial étant débutant je les suivies au mot prés, je voudrais mettre un deuxième afficheur afin de compter de 0 à 99, j’ai rajouté deux transistore mais comment l’indiquer au programme.
Merci pour votre aide
DIDIER
Bonjour,il ya une petite erreur dans e programme
Dans void 3,digital write C,il manque une parenthèse.Sans elle,le programme ne fonctionne pas
Voici le programme corrigé pour ceux qui le souhaitent .
Cordialement
int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
void setup(){
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void loop(){
zero();
delay(1000);
un();
delay(1000);
deux();
delay(1000);
trois();
delay(1000);
quatre();
delay(1000);
cinq();
delay(1000);
six();
delay(1000);
sept();
delay(1000);
huit();
delay(1000);
neuf();
delay(1000);
}
void zero(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}
void un(){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void deux(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void trois(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void quatre(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
void cinq(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void six(){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void sept(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void huit(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
void neuf(){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
Bonjour,
Merci pour cette remarque. Je corrige dans l’article
A très bientôt
On peut ne mettre que 2 résistances sur les masses communes et faire un balayage du 7 segment pour en afficher qu’un à la fois
bonjour, merci pour votre code, cependant j ai remarqué une erreur sur l affichage du 4. le programme affiche un 2 à la place.
voici ma correction pour faire un 4 :
void quatre(){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
bien à vous