Comment utiliser un afficheur TM1638 à 4 chiffres. Regardez la vidéo
Le module TM1638 est un composant polyvalent qui peut afficher des chiffres et des caractères tout en étant contrôlé par des boutons. Dans ce tutoriel, vous apprendrez à configurer et programmer cet affichage pour montrer différentes valeurs, y compris des nombres et des valeurs hexadécimales. À la fin de ce guide, vous disposerez d'un affichage entièrement fonctionnel qui répond aux appuis sur les boutons et modifie son contenu en fonction des entrées de l'utilisateur. Vous pouvez voir une démonstration dans la vidéo (à 00:00).

Le matériel expliqué
Le module TM1638 est conçu pour afficher des informations et recevoir des entrées via des boutons. Il se compose d'un afficheur à LED de 8 chiffres et d'une matrice de 16 boutons. Chaque bouton peut être programmé pour déclencher différentes fonctions, permettant une interface conviviale. Le module se connecte à un microcontrôleur via trois broches : une broche d'entrée/sortie de données, une broche d'horloge et une broche strobe. Cette configuration permet une communication efficace entre le microcontrôleur et le TM1638. Le circuit intégré TM1638 gère l'affichage et les entrées des boutons. Il utilise un protocole de communication série qui lui permet de contrôler l'affichage et de lire l'état des boutons avec un câblage minimal. Chaque pression sur un bouton envoie un signal au microcontrôleur, qui peut alors exécuter des actions spécifiques en fonction du bouton pressé.
Détails de la fiche technique
| Fabricant | QYF |
|---|---|
| Numéro de pièce | TM1638 |
| Tension logique / E/S | 5 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par segment) | 20 mA |
| Courant de crête (total) | 120 mA |
| Seuils logiques d'entrée | 0.2 V (bas) / 0.8 V (haut) |
| Paquet | DIP-28 |
- Veillez à ce que la tension d'alimentation soit stable à 5 V pour des performances optimales.
- Limitez le courant de sortie pour éviter d'endommager l'affichage.
- Utilisez des résistances pour éviter un courant excessif à travers les LED.
- Gérez le rebond des entrées de bouton dans le logiciel pour éviter des déclenchements multiples.
- Gardez le câblage court pour réduire le bruit dans les communications.
Instructions de câblage
Pour câbler le module TM1638, vous le connecterez à votre microcontrôleur comme suit :

VCCsur le TM1638 à l'alimentation 5 V de votre microcontrôleur.
- Branchez leGNDbroche du TM1638 à la masse de votre microcontrôleur.
- Branchez leSTBbroche (souvent étiquetée commeSTROBE) à la broche numérique 5 de votre microcontrôleur.
- Connectez leCLKConnectez la broche (horloge) à la broche numérique 2 de votre microcontrôleur.
- Connectez leDIOConnectez la broche (entrée/sortie de données) à la broche numérique 3 de votre microcontrôleur.
Assurez-vous de vérifier vos connexions avant de mettre le système sous tension. Si vous avez suivi la vidéo (dans la vidéo à 02:30), vous ne devriez rencontrer aucun problème avec le câblage.Exemples de code et guide pas à pas
L'extrait de code suivant initialise le module TM1638 et configure l'affichage. L'identifiantmodulereprésente l'instance TM1638 créée pour interagir avec l'afficheur.
TM1638QYF module(DIO, CLK, STB);
void setup()
{
module.setupDisplay(true, 7);
}Dans cet extrait, l'affichage est configuré pour afficher la luminosité maximale (7). La partie suivante du code gère les appuis sur les boutons et modifie l'affichage en fonction du bouton appuyé.
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
if (buttons != 0) {
*mode = buttons >> 1;
}
switch (*mode) {
case 0: module->setDisplayToString("press 1"); break;
// other cases follow
}
}Cette fonction vérifie quel bouton est appuyé en utilisantgetButtons()et met à jour l'affichage en conséquence. La variablemodedétermine quel texte est affiché en fonction du bouton pressé. Enfin, la boucle principale met continuellement à jour l'affichage.
void loop()
{
update(&module, &mode);
}Cette boucle appelle leupdatefonction, garantissant que l'affichage est rafraîchi en fonction de l'interaction de l'utilisateur. Pour une compréhension complète, consultez le code complet chargé sous l'article.
Démonstration / À quoi s'attendre
Une fois que tout est câblé et que le code est téléversé, appuyer sur les boutons devrait modifier le texte affiché en conséquence. Par exemple, en appuyant sur le bouton 1, l'écran affichera appuyez sur 1, tandis qu'en appuyant sur le bouton 2, il affichera appuyez sur 2. S'il y a des problèmes, vérifiez à nouveau votre câblage et assurez-vous d'utiliser les broches correctes comme indiqué. Regarder la vidéo (dans la vidéo à 05:00) aidera également à confirmer que tout fonctionne comme prévu.
Horodatages vidéo
- 00:00- Introduction
- 02:30- Instructions de câblage
- 05:00- Explication et démonstration du code
/*
* Voici le code Arduino pour l'affichage TM1638 à 8 chiffres, avec 16 boutons matriciels.
*
* Écrit par Ahmad Nejrabi pour la vidéo Robojax
* Date : 10 décembre 2017, à Ajax, Ontario, Canada
* Autorisation accordée pour partager ce code à condition que cette note soit conservée avec le code.
* Avertissement : ce code est fourni "TEL QUEL" et uniquement à des fins éducatives.
*/
#include <TM1638.h>
#include <TM1638QYF.h>
#define STB 5
#define DIO 3
#define CLK 2
TM1638QYF module(DIO, CLK, STB);
word mode;
void setup()
{
module.setupDisplay(true, 7);
mode = 0; // bouton initial zéro
}
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
// bouton pressé - changer de mode
if (buttons != 0) {
*mode = buttons >> 1;
if (*mode < 0) {
module->clearDisplay();
delay(100);
}
}
switch (*mode) {
case 0: // S1
module->setDisplayToString("press 1");
break;
case 1: // S2
module->setDisplayToString("press 2");
break;
case 2: // S3
module->setDisplayToString("press 3");
break;
case 4: // S4
module->setDisplayToString("press 4");
break;
case 8: // S5
module->setDisplayToString("press 5");
break;
case 16: // S6
module->setDisplayToString("press 6");
break;
case 32: // S7
module->setDisplayToString("press 7");
break;
case 64: // S8
module->setDisplayToString("press 8");
break;
case 128: // S9
module->setDisplayToString("press 9");
break;
case 256: // S10
module->setDisplayToString("press 10");
break;
case 512: // S11
module->setDisplayToString("press 11");
break;
case 1024: // S12
module->setDisplayToString("press 12");
break;
case 2048: // S13
module->setDisplayToString("press 13");
break;
case 4096: // S14
module->setDisplayToString("press 14");
break;
case 8192: // S15
module->setDisplayToString("press 15");
break;
case 16384: // S16
module->setDisplayToString("robojax");
break;
default: // bouton inconnu
module->setDisplayToString("?????");
break;
}
}
void loop()
{
update(&module, &mode);
}
Ce dont vous pourriez avoir besoin
-
AmazonTM1638 sur Amazonamzn.to
-
AliExpressModule de clavier TM1638 sur AliExpresss.click.aliexpress.com
Ressources et références
-
ExterneBibliothèque TM1638 (de GitHub)github.com
Fichiers📁
Bibliothèques Arduino (zip)
Manuel de l'Utilisateur
-
Manuel TM1638
robojax-TM1638_manual.pdf5.07 MB