Skip to main content

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 :

Afficheur 7 Segments

Afficheur 7 Segments

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 :

Présentation afficheur 7 segments

Présentation afficheur 7 segments

Cet afficheur est composé de 7 segments référencés de A à F de la manière suivante :

Branchements pins

Branchements pins

Références segments

Voici la signification des différents pins :

Significations des pins

Significations des pins

A présent, nous allons réaliser le branchement de l’afficheur. Voici celui que j’ai réalisé :

Schéma de branchement

Schéma de branchement

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 :

Caractères

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 :

Projet final

Projet final

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.

Grégoire Aubret

Co-fondateur SimpleDuino, Co-fondateur SimpleDomo. Ingénieur de l'Ecole Catholique des Arts et Métiers (ECAM).

7 Comments

  • driss dit :

    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?

  • DIDIER dit :

    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

  • Ayoubdsp dit :

    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);
    }

  • NANTE dit :

    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

  • Lebacq.louis dit :

    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

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.