Fonctionnement
Un afficheur 7 segments est constitué de sept LED, généralement identifiées par les lettres :

En allumant certaines combinaisons de segments, il est possible de représenter les chiffres de 0 à 9.
Dans notre montage, chaque segment est commandé directement par une sortie numérique de l'Arduino Uno.
Le projet utilise les broches :
| Arduino Uno |
|---|
| D4 |
| D5 |
| D6 |
| D7 |
| D8 |
| D9 |
| D10 |
Chaque segment est protégé par une résistance de 330 Ω.
Composants
- 1 × Arduino Uno Rev3
- 1 × afficheur 7 segments rouge à cathode commune
- 1 × plaque d'essai (breadboard)
- 7 × résistances de 330 Ω
- Plusieurs fils de connexion
- 1 × câble USB pour programmer l'Arduino
Schéma de câblage
Le principe consiste à relier chaque segment de l'afficheur à une sortie numérique de l'Arduino à travers une résistance de 330 Ω.

Attention : le câblage présenté correspond à un afficheur à cathode commune. Il faut vérifier le type d'afficheur utilisé avant de réaliser le montage.
Programme Arduino
Le programme utilise un tableau contenant les différentes combinaisons de segments.
// Définition des broches reliées à chaque segment de notre afficheur 7 segments
const int a = 4;
const int b = 5;
const int c = 6;
const int d = 7;
const int e = 8;
const int f = 9;
const int g = 10;
// Définition du tableau des segments de l'afficheur dans l'ordre alphabétique
int segments[] = {a, b, c, d, e, f, g};
// Déclaration de la matrice des états de chaque segment pour chaque affichage de chaque chiffre de 0 à 9
// Pour cela, nous définissons 1 pour un segment allumé et 0 pour un segment éteint
byte chiffres[10][7] = {
// a, b, c, d, e, f, g, dp
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,1,0,1,1} // 9
};
void setup() {
// Définition de toutes les broches nécessaires pour notre programme comme pin de sortie
for (int i = 0; i < 7; i++) {
pinMode(segments[i], OUTPUT);
}
}
void loop() {
// Boucle de 0 à 9
for (int n = 0; n <= 9; n++) {
afficherChiffre(n);
delay(2000); // attendre 2 seconde
}
}
// Fonction pour afficher un chiffre à partir de la matrice de définition de segments
void afficherChiffre(int n) {
for (int i = 0; i < 8; i++) {
digitalWrite(segments[i], chiffres[n][i]);
}
}
Test
Après avoir câblé le circuit et téléversé le programme dans l'Arduino Uno, l'afficheur doit présenter successivement :
0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9
Chaque chiffre reste affiché pendant environ 2 secondes, puis le compteur recommence.
Ce que permet d'apprendre ce projet
Ce petit montage permet notamment de découvrir :
- le fonctionnement d'un afficheur 7 segments ;
- les sorties numériques d'un Arduino ;
- l'utilisation de
pinMode()etdigitalWrite(); - les boucles
for; - les tableaux en programmation C/C++ ;
- la représentation d'un chiffre à l'aide de plusieurs sorties numériques ;
- le rôle des résistances de limitation de courant.
Améliorations possibles
Une fois le montage fonctionnel, plusieurs améliorations peuvent être envisagées :
- ajouter un bouton pour incrémenter le compteur manuellement ;
- modifier la vitesse de comptage ;
- réaliser un compteur de 0 à 99 avec deux afficheurs ;
- utiliser un registre à décalage 74HC595 pour réduire le nombre de broches utilisées ;
- ajouter un bouton de remise à zéro ;
- remplacer
delay()par une gestion du temps avecmillis(); - transformer le montage en véritable compteur d'impulsions.
Conclusion
Ce projet constitue une première approche simple...
Read more »
Electro & Robot