Tutoriel Raspberry Pi
Branchement et codage d'un afficheur 7 segments à 4 chiffres (TM1637)


09 mai 2019 • 3 • 4.5

L'afficheur 7 segments est un composant incontournable, utile dans bons nombres de projets. Il permet notamment d'afficher l'heure, la température, un code que l'on tape sur un clavier ou tout simplement un chiffre. Il permet même d'afficher des mots tel que "Help", "Cool", "Erro" et bien d'autres !
Dans ce tutoriel, nous allons voir en détail toutes les fonctions qu'offre la librairie MicroPython-TM1637 pour faire fonctionner facilement ce composant.

Prérequis

Pour suivre ce tutoriel, il te faudra :

Maintenant que tout est réuni, on peut passer au branchement du module au Raspberry.

Branchement de l'afficheur

Le module 7 segments TM1637 s'alimente en 3.3V ou 5V au choix (le 5V donnera un affichage plus fort). Pour le contrôler, il dispose de deux entrées : une horloge CLK (clock) et un port DIO.
Le CLK sera relié au GPIO 5 et le DIO au GPIO 4. Voici le schéma de branchement :

Schéma de branchement de l'afficheur 7 segments TM1637 sur Raspberry Pi 3

Installation de la librairie

Pour afficher ce que l'on veut sur l'afficheur 7 segments facilement, on va utiliser la librairie MicroPython-TM1637. Cette librairie propose toutes les fonctionnalités possibles : affichage de chiffres, de l'heure, de la température, ou même de caractères personnalisés.
Pour installer la librairie, il suffit d'entrer dans la console :

cd ~
sudo git clone https://github.com/EspaceRaspberryFrancais/RaspberryTM1637.git
sudo pip install wiringpi

La librairie est maintenant installée !

Première application : Un minuteur

Maintenant que tout est branché et que la librairie est installée, on va pouvoir commencer à coder l'afficheur 7 segments.
Pour que l'importation de la librairie du TM1637 se passe bien, écrire les codes dans le dossier où se trouve la librairie, c’est-à-dire ici :~/RaspberryTM1637.

cd ~/RaspberryTM1637
sudo nano minuteur.py

Ce code permet de se familiariser avec la librairie à travers un exemple simple : faire un minuteur.
En voici le code commenté :

En executant le programme, voilà une vidéo du résultat attendu :

Une horloge

Sur le même principe que le minuteur, on peut facilement afficher l'heure sur le module, avec le code suivant :

On obtient alors un affichage de l'heure de ce type :

Affichage heure 7 segments - Raspberry Lab

Afficher la température

Pour ce dernier exemple, on va récupérer la température avec une sonde DS18B20 #pub et l'afficher sur le module 7 segments.
Pour commencer, je vous invite à suivre le tutoriel sur la sonde DS18B20 jusqu'au III. : le branchement reste le même. Concernant le code, rien de très complexe : une fonction s'occupe de récupérer la température fournie par la sonde, et une autre l'affiche en l'arrondissant à l'entier le plus proche. tm.temperature() prend en paramètre un entier n et affiche sur le module sous la forme n°C. Si n<-9, l'afficheur affiche LO°C, et si n>99, HI°C.

On obtient alors un affichage de la température de ce type :

Affichage température 7 segments - Raspberry Lab

Bonus. Afficher des caractères personnalisés

Maintenant que les principales fonctions d'affichage ont été abordées, voyons les petits plus que propose la librairie. Une des fonctions qui peut s'avérer intéressante est celle d'afficher un caractère personnalisé. Il faut pour cela utiliser la fonction write([aff1, aff2, aff3, aff4]), avec comme paramètre une liste de nombres codés en binaire, décimal, ou hexadécimal. Chaque nombre correspond à un affichage différent.
Pour savoir quel nombre est associé à l'affichage souhaité, suivre cet exemple :

Map 7 Segment - Raspberry Lab A=0 | B=0 | C=0 | D=0
E=0 | F=0 | G=0

N = 0bXGFEDCBA = 0
Map 7 Segment - Raspberry Lab A=1 | B=0 | C=0 | D=1
E=1 | F=1 | G=1

N = 0bX1111001 = 121 = 0x79
Map 7 Segment - Raspberry Lab A=1 | B=1 | C=1 | D=1
E=0 | F=0 | G=0

N = 0bX0001111 = 15 = 0x0F

Qu'est-ce que le X ?

La valeur X doit être à 0 pour l'afficheur n°1, 3 et 4. Cette valeur peut être 1 pour le deuxième afficheur, et cela aura pour effet d'allumer le caractère ":".
Exemple :
Ce code n'est pas correct : afficheur.write([0b10111001, 0b00001001, 0b00001001, 0b00001111])
En revanche, celui-ci est correct : afficheur.write([0b00111001, 0b100001001, 0b00001001, 0b00001111])

Une fois les caractères personnalisés transcrits en nombres, appeler simplement la fonction write dans le script Python :

afficheur.write([0b00111001, 0b00001001, 0b00001001, 0b00001111])

Avec le code ci-dessus, on obtient ceci :

Exemple d'affichage personnalisé sur 7 Segments TM1637 - Raspberry Lab

Voilà, nous avons fait le tour des principales fonctionnalités de la librairie, il en reste quelques-unes que vous pouvez découvrir en lisant directement le README.

A lire

Branchement caméra - présentation

Choisir et utiliser une caméra sur un Raspberry Pi


Branchement caméra - présentation

Obtenir la température avec une sonde DS18B20






Ce tutoriel vous a plu ?

starstarstarstarstar

4.5/5 | 8 votes




Commentaires

3 commentaires publiés.

Jérôme, le 16/06/2022 à 20h26
Bonjour, rien ne s'affiche sur l'afficheur...
J'ai essayé après avoir exécuté "gpio export 23/24 out", pas de changement...
J'ai essayé avec un 2ème afficheur, au cas où le 1er serait HS, pas de changement...
Auriez-vous une piste à me donner pour dépanner ?
Merci.
jean, le 13/03/2021 à 19h21
J'ai installé la librairie du TM1637, mais quand je veux exécuter le programme, Python me'informe qu'il ne trouve pas la libraitie du TM1637 (erreur ligne 1 import). J'ai le même problème quand j'exécute un exemple fournis avec la librairie du TM1637.
kirty_one, le 29/11/2020 à 09h32
super site explication simples et très compréhensibles


Commenter
Votre adresse mail ne sera pas visible sur le site.

Les commentaires sous soumis à vérification avant publication.