Code de recherche

Comment utiliser un afficheur TM1638 à 4 chiffres. Regardez la vidéo

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

TM1637 keypad display module-1

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

FabricantQYF
Numéro de pièceTM1638
Tension logique / E/S5 V
Tension d'alimentation5 V
Courant de sortie (par segment)20 mA
Courant de crête (total)120 mA
Seuils logiques d'entrée0.2 V (bas) / 0.8 V (haut)
PaquetDIP-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 :

Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- Connectez la broche étiquetéeVCCsur 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

Images

TM1637 keypad display module-1
TM1637 keypad display module-1
TM1637 keypad display module-2
TM1637 keypad display module-2
TM1637 keypad display module-3
TM1637 keypad display module-3
TM1637 keypad display module
TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
28-This is the Arduino code for a TM1638 8-digit display with a 4x4 matrix button.
Langue: C++
/*
 * 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

Ressources et références

Fichiers📁

Bibliothèques Arduino (zip)

Manuel de l'Utilisateur