top of page

LE MODULE AFFICHEUR 7 SEGMENTS

Le module afficheur 7 segments comporte 4 afficheurs 7 segments rouges pilotés par un circuit spécialisé TM1637 qui contrôle la valeur des  4 digits et leur luminosité. Nous pouvons afficher un nombre de 0 à 9999 ou l'heure sous la forme 12:00.

Ce module doit être relié à un connecteur numérique de la base et les deux broches correspondantes de l'Arduino sont utilisées.

La bibliothèque gérant ce module est téléchargeable ici et ses principales fonctions sont :

  • TM1637 aff_segments(CLK, donnée) où CLK représente la broche du signal d'horloge et donnée la broche de la ligne de données. Cette fonction permet de créer l'objet.

  • aff_segments.init() initialise l'objet.

  • aff_segments.set(luminosité) où luminosité doit être compris entre 0 et 7. Cette fonction permet de fixer la luminosité des afficheurs.

​

  • aff_segments.display(afficheur, chiffre) où afficheur représente le numéro de l'afficheur (compris entre 0 et 3) et chiffre, le chiffre qui s'affiche sur l'afficheur correspondant. Cette fonction permet d'afficher un nombre sur l'un des 4 afficheurs.

       Si nous voulons afficher un nombre à 4 chiffres, nous déclarerons un tableau à 4  variables et nous utiliserons la

       fonction display sous cette forme aff_segments.display(tableau).

  • aff_segments.point(visible) où visible peut prendre deux valeurs POINT_ON ou POINT_OFF. Cette fonction permet d'allumer ou d'éteindre les points centraux de l'afficheur.

Ce module utilise deux broches numériques de l'Arduino. Il est donc impératif de laisser un connecteur libre de la base "Grove" entre ce module et le suivant. Exemple : Si nous branchons ce module sur D2, D3 doit absolument rester libre.

Exemple :

Nous souhaitons incrémenter la valeur affichée sur le module afficheur 7 segments  tant que l'on appuie sur un bouton poussoir.

Câblage :​

Module "Grove"

​

Module bouton poussoir

Module afficheur 7 segments

Connecteur Base

​

D4

D2

​

Programme :​

/* Afficheur_Grove est un programme qui incrémente la valeur d'un afficheur 7 segments à 4 digits lorsque l'on appuie sur un bouton poussoir */

#include "TM1637.h"                                                              // appel de la bibliothèque

#define bouton 4                                                                    // affectation des broches  
#define CLK 2                 
#define DIO 3


TM1637 aff_segments(CLK,DIO);                                          // création de l'objet aff_segments

byte unite=0;
byte dizaine=0;
byte centaine=0;

void setup()
{
  pinMode(bouton, INPUT);                                                   // la broche bouton est en entrée
  aff_segments.init();
  aff_segments.set(2);
  aff_segments.display(3,0);                                                // on affiche 0000
  aff_segments.display(2,0);
  aff_segments.display(1,0);
  aff_segments.display(0,0);
}
void loop()
{
  if (digitalRead(bouton)==HIGH)                                         // si bouton est actif
  {
     unite=unite+1;                                                                 // on ajoute 1 aux unités
     if (unite<10)
     {
     aff_segments.display(3,unite);                                      // on affiche les unités
     }
     else
     {
     unite=0;                                                                           // on remet les unités à 0 et on ajoute 1 aux dizaines
     dizaine=dizaine+1;
        if (dizaine<10)
        {
        aff_segments.display(3,unite);  
        aff_segments.display(2,dizaine);
        }
        else
        {
        dizaine=0;                                                                  // on remet les dizaines à 0 et on ajoute 1 aux centaines
        centaine=centaine+1;
            if (centaine<10)
            {
            aff_segments.display(3,unite);  
            aff_segments.display(2,dizaine);
            aff_segments.display(1,centaine);
            }
            else
            {
            unite=0;                                                                // on remet tous à 0 après 999
            dizaine=0;
            centaine=0;
            aff_segments.display(3,unite);  
            aff_segments.display(2,dizaine);
            aff_segments.display(1,centaine);
            }
        }
     }
  }
    delay(100);
}

bottom of page