Sommaire
Présentation du module Afficheur 7 segments TM1638
Le module TM1638 est un composant très pratique pour les projets électroniques, regroupant sur une seule carte plusieurs éléments d’interaction. Il intègre 8 afficheurs 7 segments pour afficher chiffres et caractères, 8 LED pour un retour visuel rapide, ainsi que 8 boutons poussoirs permettant de gérer facilement les entrées utilisateur.
Grâce à son interface série simple utilisant seulement quelques broches digitales (STB, CLK, DIO), il est facile à piloter tout en économisant des entrées/sorties sur votre microcontrôleur. Le TM1638 est d’ailleurs compatible avec des plateformes populaires comme Arduino, ESP32 et Raspberry Pi, avec de nombreuses bibliothèques disponibles pour simplifier sa prise en main.
Au cours de ce tutoriel, nous verrons comment programmer ce module à travers des applications concrètes et ludiques, comme un chenillard, un dé électronique ou encore un Simon Game, afin de bien comprendre toutes ses possibilités.
Montage et programmation
Nous allons réaliser le montage et programmer le module TM1638 avec une carte Arduino UNO afin de créer plusieurs applications, telles que :
- Affichage de chiffres
- Gestion des LED et des boutons
- Compteur manuel
- Compteur automatique
- Chenillard
- Dé électronique
- Simon Game
Librairies nécessaires
Matériel nécessaire :
1 Carte Arduino UNO
1 Module Afficheur TM1638
1 Câble USB Type C
1 lot de Câbles de connexion M-F
-
Module TM1638 Afficheur 7 Segments avec 8 Boutons et 8 LED pour Arduino
6,99 € (5,83 € HT)
Vous économisez Ajouter au panier -
Lot de 40 Câbles Dupont mâle-femelle de 10cm pour Arduino
4,99 € (4,16 € HT)
Vous économisez Ajouter au panier -
Câble USB Type C pour Arduino et ESP32 – Transfert Fiable et Rapide pour Projets Créatifs
4,99 € (4,16 € HT)
Vous économisez Ajouter au panier -
Carte UNO R3 – Microcontrôleur ATmega328 – compatible Arduino
8,99 € (7,49 € HT)
Vous économisez Ajouter au panier
Le montage
Tableau récapitulatif
| Arduino Uno | Module TM1638 |
|---|---|
| 5V | VCC |
| GND | GND |
| D2 | DIO |
| D3 | CLK |
| D4 | STB |
Code Arduino Affichage Simple
Dans ce code nous allons afficher le chiffre 12345678 sur l’afficheur 7 segments :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
void setup() {
module.displayBegin();
module.displayIntNum(12345678); // affiche 1234
}
void loop() {
}
Code Arduino Led et Boutons
Dans ce code Arduino, chaque Led s’allume aussitôt que le bouton qui lui correspond est appuyé, et s’éteint quand celui-ci est relâché (Ex: S1 allume LED1, S2 allume LED2,etc…) :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
void setup() {
module.displayBegin();
}
void loop() {
uint8_t boutons = module.readButtons();
for (int i = 0; i < 8; i++) {
if (boutons & (1 << i)) {
module.setLED(i, 1);
} else {
module.setLED(i, 0);
}
}
}
Code Arduino Compteur Manuel
Dans ce code Arduino, l’afficheur 7 segment affiche un chiffre qui s’incrémente à chaque fois que l’on appuie sur le bouton S1 :.
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
int compteur = 0;
void setup() {
module.displayBegin();
}
void loop() {
uint8_t boutons = module.readButtons();
if (boutons & 0x01) { // bouton 1 = +
compteur++;
delay(200);
}
if (boutons & 0x02) { // bouton 2 = -
compteur--;
delay(200);
}
module.displayIntNum(compteur);
}
Code Arduino Compteur Automatique
Dans ce code Arduino, l’afficheur 7 segment affiche un chiffre qui s’incrémente automatiquement :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
int valeur = 0;
void setup() {
module.displayBegin();
}
void loop() {
module.displayIntNum(valeur);
valeur++;
if (valeur > 99999999) { // limite afficheur 8 digits
valeur = 0;
}
delay(500); // vitesse d'incrémentation
}
Code Arduino Chenillard
Ce code Arduino permet de créer un effet de chenillard sur les LED du module TM1638, avec une vitesse ajustable à l’aide des boutons poussoirs S1 (vitesse la plus faible) jusqu’à S8 (vitesse la plus rapide) :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
int position = 0;
// vitesses associées aux boutons (en ms)
int vitesses[8] = {500, 400, 300, 250, 200, 150, 100, 50};
int vitesse = 300;
void setup() {
module.displayBegin();
}
void loop() {
uint8_t boutons = module.readButtons();
// détection du bouton appuyé
for (int i = 0; i < 8; i++) {
if (boutons & (1 << i)) {
vitesse = vitesses[i];
}
}
module.reset();
module.setLED(position, 1);
position++;
if (position > 7) position = 0;
delay(vitesse);
}
Code Arduino Dé Electronique
Le code Arduino suivant permet de sélectionner avec le bouton S1 le nombre de faces du dé électronique (6, 8, 12, 16, 20), et le bouton S2 permet de “Jeter le dé” . Le nombre de faces s’affiche sur les 4 premiers segments et le nombre joué s’affiche sur les 4 derniers :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
int faces[] = {6, 8, 12, 16, 20};
int indexFace = 0;
int resultat = 0;
void setup() {
module.displayBegin();
randomSeed(analogRead(0));
}
void afficher() {
char buffer[9];
sprintf(buffer, "%4d%4d", faces[indexFace], resultat);
module.displayText(buffer);
}
void loop() {
uint8_t boutons = module.readButtons();
// bouton 1 : changer faces
if (boutons & 0x01) {
indexFace++;
if (indexFace > 4) indexFace = 0;
delay(300);
}
// bouton 2 : lancer dé
if (boutons & 0x02) {
resultat = random(1, faces[indexFace] + 1);
delay(300);
}
afficher();
}
Code Arduino Simon Game
Ce code Arduino implémente une version simplifiée du jeu Simon, où le joueur doit mémoriser et reproduire à l’aide des boutons poussoirs une séquence lumineuse générée par le module TM1638 :
#include
#define STB 4
#define CLK 3
#define DIO 2
TM1638plus module(STB, CLK, DIO, false);
int sequence[20];
int longueur = 0;
void afficherSequence() {
for (int i = 0; i < longueur; i++) {
module.setLED(sequence[i], 1);
delay(400);
module.setLED(sequence[i], 0);
delay(200);
}
}
int lireBouton() {
while (true) {
uint8_t b = module.readButtons();
for (int i = 0; i < 8; i++) {
if (b & (1 << i)) return i;
}
}
}
void setup() {
module.displayBegin();
randomSeed(analogRead(0));
}
void loop() {
sequence[longueur] = random(0, 8);
longueur++;
afficherSequence();
for (int i = 0; i < longueur; i++) {
int input = lireBouton();
module.setLED(input, 1);
delay(200);
module.setLED(input, 0);
if (input != sequence[i]) {
module.displayText("FAIL");
delay(2000);
longueur = 0;
return;
}
}
delay(1000);
}
Conclusion
Nous avons vu comment réaliser le montage et la programmation du module TM1638 avec une carte Arduino Uno. Vous savez désormais exploiter les afficheurs, les LED et les boutons pour créer des interactions.
Sur cette base, vous pouvez imaginer de nombreux projets : horloge, chronomètre, tableau de score, menu interactif ou petits jeux électroniques.
Le TM1638 constitue ainsi une excellente base pour développer des interfaces simples et efficaces.








