L'innovation sans limites

Votre spécialiste en électronique et robotique.

Module Afficheur TM1638 : Applications et jeux électroniques Arduino

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.

Description du module TM1638
Description du module Afficheur TM1638

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

  • Câble USB Type C

  • 1 lot de Câbles de connexion M-F

Le montage

Schéma de montage du TM1638 avec la carte Arduino UNO
Schéma de montage du TM1638 avec la carte Arduino UNO

Tableau récapitulatif


Arduino UnoModule TM1638
5VVCC
GNDGND
D2DIO
D3CLK
D4STB

Code Arduino Affichage Simple

Dans ce code nous allons afficher le chiffre 12345678 sur l’afficheur 7 segments : 

				
					#include <TM1638plus.h>

#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 <TM1638plus.h>

#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 <TM1638plus.h>

#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 <TM1638plus.h>

#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 <TM1638plus.h>

#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 <TM1638plus.h>

#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 <TM1638plus.h>

#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.

Bonjour ! 🌟 Rejoignez notre newsletter pour ne rien manquer.

Recevez nos offres spéciales et les derniers articles directement dans votre boîte de réception

Nous ne faisons pas de spam, promis ! Consultez notre politique de confidentialité pour en savoir plus.

Panier
Retour en haut