Fonctionnement de l’afficheur de 7 segments à 4 digits.

Si le but de notre projet est de montrer la température ou afficher l’heure sur un dispositif, on aura besoin d’un afficheur à plusieurs digits ou bien plusieurs dispositifs d’un seul digit. Dans ce post nous allons travailler avec un afficheur à quatre digits.

Image du dispositif à 4 digits et 7 segments
Display à 4 digits

Il s’agit d’un dispositif à cathode commune où on peut constater que les pins de chaque segment sont partagés dans les quatre digits. Cela veut dire que pour montrer un nombre de quatre caractères il est nécessaire de multiplexer le signal, c’est à dire, illuminer séquentiellement chaque un des digits dans une succession très rapide, donnant l’illusion que tous les caractères sont allumés à la fois.

Distribution des pins sur le dispositif 3461 AS
Distribution des pins sur le dispositif 3461 AS

Il est nécessaire:

  • Carte Arduino ou équivalent.
  • Plaque d’essai ou breadboard.
  • Dispositif de 7 segments à quatre digits.
  • 4 résistances.
  • Cables de connexions.

Schéma de connexions entre l’ afficheur de quatre digits et Arduino.

Pour le montage des connexions, les pins digitaux D1, D2, D3, et D4 se relient à travers des résistances:

Connexions entre l'afficheur à quatre digits et la plaque Arduino.

Code pour montrer un chiffre sur l’écran du dispositif.

#include "SevSeg.h"
SevSeg sevseg; 

void setup(){
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};

  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
    sevseg.setNumber(5921,3);
    sevseg.refreshDisplay(); 
}

Dans la fonction setup() nous configurons d’abord le nombre de digits du dispositif, après quels pins de la carte Arduino son connectés au pins des digits, et finalement, quels pins sont reliés aux segments.

Le nombre de caractères du dispositif est configuré dans l’instruction byte numDigits = 4. Les digits ou caractères sont définis dans byte digitPins[] = {10,11,12,13}, et correspondent aux broches D1, D2, D3, et D4 (suivant cet ordre). L’instruction byte segmentPins[] = {9,2,3,5,6,8,7,4}, sert à configurer les pins des segments (A, B, C, D, E, F, G et le point décimal).

Pins du dispositifPins de la carte Arduino
Segment E 6
Segment D 5
Point décimal 4
Segment C 3
Segment G 7
Digit 4 (D4) 13
Segment B 2
Digit 3 (D3) 12
Digit 2 (D2) 11
Segment F 8
Segment A 9
Digit 1 (D1) 10
Tableau des connexions entre le dispositif et Arduino

Pour imprimer un nombre décimal on utilise l’instruction sevseg.setNumber(5921,3). Le premier paramètre est le nombre que nous voulons afficher, et le deuxième paramètre indique où on veut insérer le point décimal.

Code pour créer un compteur.

Partant du même schéma de connexions on introduit ce code:

#include "SevSeg.h"
SevSeg sevseg;

// Variables globales
int Compteur = 0;     // début
int attente =0;        // compteur en attente
int attentemax =1000;  // définne la vitesse

void setup(){
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};

  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}
void loop(){
  sevseg.refreshDisplay();
  sevseg.setNumber(Compteur, -1);
  // système pour augmenter le compteur et créer un système de vitesse
  attente = attente +1;
  if (attente == attentemax){
    attente =0;
    Compteur = Compteur + 1;
  }
}

Sur ce code on peut voir qu’on a ajouté une variable pour gérer le compteur, une autre pour créer un système d’attente, et une dernière pour augmenter la vitesse du compteur.

Dans la fonction loop() on peut observer:

attente = attente +1;
if (attente == attentemax){
  attente =0;
  Compteur = Compteur + 1;
}

Ce petit morceau de code est chargé de augmenter le compteur. Celui-ci, il sera plus rapide à condition qu’ on diminue la variable attentemax. On peut le tester en diminuant cette variable, par exemple à 10. Souvenez-vous que la fonction loop() es une boucle que se répète continuellement et sans l’instruction if(), chaque tour elle augmenterait d’une unité.

Articles similaires
Un comentario on “Fonctionnement de l’afficheur de 7 segments à 4 digits.”
Rickou77 dice:

Excellent article : je viens de réaliser un beau baromètre électronique avec cet afficheur grâce à vous 🙂

Laisser un commentaire