Code de recherche

Utilisation de deux modules d'affichage LED 4 chiffres TM1637 supplémentaires avec Arduino

Utilisation de deux modules d'affichage LED 4 chiffres TM1637 supplémentaires avec Arduino

Avez-vous déjà eu besoin d'afficher deux valeurs différentes en même temps dans votre projet Arduino ? Peut-être que vous construisez une station météorologique qui doit afficher à la fois la température et l'humidité, ou un moniteur d'alimentation qui montre la tension et le courant simultanément. Utiliser deux affichages LED 4 chiffres TM1637 est une solution simple et économique. Ce guide vous montrera comment connecter et programmer deux de ces affichages populaires en utilisant une seule carte Arduino, vous offrant la possibilité d'afficher des informations indépendantes sur chaque écran. Vous pouvez utiliser cette technique pour une variété de projets, tels que :

  • Construire un voltmètre à deux canaux pour surveiller deux rails d'alimentation séparés.
  • Créer un chronomètre et un compteur de tours pour votre prochain projet de course.
  • Affichage de l'heure actuelle sur un écran et de la température ambiante sur l'autre.
  • Créer un tableau de scores pour les jeux à deux joueurs.

Dans ce tutoriel, nous allons câbler deux modules TM1637 à un Arduino Uno et exécuter un sketch de démonstration qui affiche différentes valeurs sur chaque écran. Le TM1637 utilise une interface à deux fils (CLK et DIO), ce qui signifie qu'ajouter un second écran nécessite uniquement deux broches numériques supplémentaires sur votre Arduino. Commençons ! (dans la vidéo à 00:00)

Matériel requis

  • Arduino Uno (ou toute carte compatible)
  • 2x modules d'affichage à LED 7 segments à 4 chiffres TM1637
  • Fils de connexion
  • Planche à pain (facultatif, mais utile pour le prototypage)

Guide de câblage

Il est simple de connecter les affichages. Le module TM1637 a quatre broches : VCC, GND, DIO (données) et CLK (horloge). Les deux affichages partagent les connexions 5V et GND de l'Arduino, mais chacun a besoin de ses propres broches dédiées pour DIO et CLK. Cela permet à l'Arduino de les contrôler indépendamment. (dans la vidéo à 01:26)

Voici le schéma de câblage pour le projet :

Pour le premier écran (le plus grand module bleu dans la vidéo), effectuez les connexions suivantes :

  • VCCà Arduino5V
  • GNDà ArduinoGND
  • DIOau pin numérique Arduino11
  • CLKvers la broche numérique de l'Arduino10

Pour le second affichage (le module plus petit), connectez-le comme suit :

  • VCCà Arduino5V
  • GNDà ArduinoGND
  • DIOau pin numérique Arduino6
  • CLKau pin numérique Arduino5

Souvenez-vous, le code et la bibliothèque fonctionnent de la même manière pour les modules TM1637 plus grands et plus petits. (dans la vidéo à 01:00)

Explication du code

Le code utilise leTM1637Displaybibliothèque, que vous devrez installer. Vous pouvez le faire en allant àCroquis > Inclure la bibliothèque > Gérer les bibliothèquesdans l'IDE Arduino et en recherchant "TM1637". Le code définit les broches pour chaque affichage et crée deux objets pour les contrôler. Regardons les éléments clés que vous devrez configurer pour votre propre utilisation. (dans la vidéo à 02:31)

Tout d'abord, les définitions des broches pour chaque module d'affichage. Vous devrez les modifier pour qu'elles correspondent à votre câblage :

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

Ensuite, leTEST_DELAYla variable contrôle la durée d'affichage de chaque séquence de test. Vous pouvez l'ajuster pour accélérer ou ralentir la démonstration :

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000

La partie principale du code utilise leshowNumberDec()fonction. Cette fonction a quatre arguments : le nombre à afficher, s'il faut remplir les chiffres manquants à gauche avec des zéros, combien de chiffres utiliser, et la position de départ du nombre sur l'affichage. Par exemple,display1.showNumberDec(23, false, 2, 0)affichera le numéro "23" à partir de la position 0. En changeant le dernier argument à 1, 2 ou 3, vous pouvez déplacer le numéro sur l'écran. (dans la vidéo à 05:23)

Pour ajouter un troisième affichage, il vous suffit de copier le bloc de code pour un affichage, de changer tous les "2" en "3", et d'assigner deux nouvelles broches pour les connexions CLK et DIO du nouveau module. (dans la vidéo à 03:58)

Démonstration de projet en direct

Une fois que vous avez téléchargé le code, vous verrez les deux affichages s'allumer et effacer leurs écrans. La démonstration effectue ensuite une série de tests pour montrer comment chaque affichage peut être contrôlé indépendamment. Tout d'abord, elle affichera les chiffres "23" et "34" sur les deux affichages. Le code passe ensuite à l'affichage de ces chiffres à différentes positions sur l'affichage à 4 chiffres (position 0, 1, 2 et 3). Après cela, il affiche les plus grands nombres "741" et "1562". Enfin, il exécute une boucle de comptage de 0 à 1273 sur les deux affichages simultanément. Cela démontre la pleine fonctionnalité de l'utilisation de deux affichages dans un seul projet. (dans la vidéo à 05:01)

Chapitres

  • Introduction à l'utilisation de deux affichages TM1637
  • Câblage des affichages à l'Arduino
  • [02:31] Expliquer le code
  • Démonstration des écrans en action

Images

Utilisation de deux autres affichages LED 4 chiffres TM1637
Utilisation de deux autres affichages LED 4 chiffres TM1637
168-Using two more TM1637 4-digit LED displays
Langue: C++
/*
 * Original code from https://github.com/avishorp/TM1637
 * Modified for Robojax video on October 28, 2018 at 15:05
 * This is an Arduino sketch to use two or more TM1637 seven-segment LED displays
 * 
 * Watch video instruction for this code:https://youtu.be/27KjMfPH1dk
 * 
 * by Ahmad Shamshiri, in Ajax, Ontario, Canada
 * 
 *  display2.showNumberDec(23, true, 2,1);
 *  showNumberDec(arg1, arg2, arg3, arg4);
 *  arg1 is the number to be displayed
 *  arg2 can be 'true' or 'false' and if true it fills empty spots with data[]
 *  arg4 position of starting number on the display can be either 0, 1, 2 or 3
 */
#include <Arduino.h>
#include <TM1637Display.h>

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000


TM1637Display display1(CLK1, DIO1);// define display 1 object
TM1637Display display2(CLK2, DIO2);// define display 1 object

   uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };  // all segments clear    
   
void setup()
{
  // Robojax.com two or more TM1637 Display 20181029  
  display1.setBrightness(0x0f);// set brightness of display 1
  display2.setBrightness(0x0f);// set brightness of display 1  

 
  display1.setSegments(data);// fill display 1 with whatever data[] array has
  display2.setSegments(data);// // fill display 2 with whatever data[] array has  
// Robojax.com two or more TM1637 Display 20181029  
}

void loop()
{
 // Robojax.com two or more TM1637 Display 20181029
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,0);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,0);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
  
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,1);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,1);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,2);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,2);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,3);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,3);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds    
/////////////////////////////////////////////////
  display1.setSegments(data);// fill(clear) display with data[] array
  display1.showNumberDec(741);// display 1

  display2.setSegments(data);// fill(clear) display with data[] array  
  display2.showNumberDec(1562);// display 2
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds

// Robojax.com two or more TM1637 Display 20181029 
/////////////////////////////////////////////////
   display1.setSegments(data);// fill(clear) display 1 with data[] array
   display2.setSegments(data);// fill(clear) display 2 with data[] array   
  for(int i=0; i<=1273; i++)
  {
    display1.showNumberDec(i);// display from 0 to 1273 to display 1
    display2.showNumberDec(i);// display from 0 to 1273 to display 2    
  }
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds


// Robojax.com two or more TM1637 Display 20181029
  
}// loop end

Ce dont vous pourriez avoir besoin

Ressources et références

Fichiers📁

Bibliothèques Arduino (zip)

Fichier Fritzing

Manuel de l'Utilisateur