Code zoeken

Een TM1637 4-cijferig 7-segmentdisplay gebruiken met Arduino

Een TM1637 4-cijferig 7-segmentdisplay gebruiken met Arduino

In deze tutorial leren we hoe we het TM1637 4-cijferig 7-segmentdisplay met een Arduino kunnen gebruiken. Dit display kan worden gebruikt om getallen, tellers of andere numerieke gegevens weer te geven. Aan het einde van het project heb je een werkend display dat kan tellen van 0 tot 500 en verschillende functies zoals helderheidsaanpassing demonstreert.

TM1637 4 digit display module

Voor dit project verbinden we het TM1637-display met de Arduino met slechts een paar draden. Het display heeft vier pinnen: VCC, GND, DIO en CLK. VCC wordt verbonden met de 5V-voeding, terwijl GND wordt verbonden met de aarde. De DIO-pin wordt verbonden met digitale pin 3 van de Arduino, en de CLK-pin wordt verbonden met digitale pin 2. Deze opstelling zorgt ervoor dat de Arduino gemakkelijk met het display kan communiceren.

Om de praktische implementatie te zien, volg je de video (in video op 00:00) voor een visuele gids.

Hardware uitgelegd

De TM1637 is een veelzijdige 7-segmentdisplaydriver die eenvoudige aansturing van 4-cijferige displays mogelijk maakt. Het wordt aangestuurd via een twee-draadsinterface, bestaande uit een datapin (DIO) en een klokpin (CLK). Dit maakt het eenvoudig om aan te sluiten op microcontrollers zoals Arduino zonder extra componenten.

Het display kan decimale getallen weergeven en ondersteunt helderheidsregeling, waardoor het geschikt is voor verschillende toepassingen zoals tellers, klokken en timers. Het compacte ontwerp en het gebruiksgemak maken het een populaire keuze onder zowel hobbyisten als professionals.

Datasheetdetails

FabrikantTitan Micro Electronics
OnderdeelnummerTM1637
Logica/IO-spanning5 V
Voedingsspanning3,3 V - 5,5 V
Uitgangsstroom (per segment)20 mA
PWM-frequentierichtlijnN.v.t.
Ingangslogische drempels0,3 VCC (laag), 0,7 VCC (hoog)
Spanningsval / RDS(on) / verzadiging2,5 V (typ.)
Thermische limieten125 °C
Behuizing16-pins DIP

  • Zorg ervoor dat VCC is aangesloten op een stabiele 5V-bron om storingen van het display te voorkomen.
  • Gebruik indien nodig stroombegrenzende weerstanden om schade aan segmenten te voorkomen.
  • Houd de bedrading kort om ruis en interferentie te minimaliseren.
  • Controleer altijd de pinaansluitingen om omgekeerde polariteit te voorkomen.
  • Pas helderheidsniveaus aan met de functie setBrightness voor optimale zichtbaarheid.

Bedradingsinstructies

Arduino wiring for TM1637 4 digit display
TArduino wiring for TM1637 4 digit display — Arduino wiring for TM1637 4 digit display
Arduino wiring for TM1637 4 digit display - large module
Arduino wiring for TM1637 4 digit display - large module

Om het TM1637-display te bedraden, verbind je eerst de VCC-pin met de 5V-uitgang van de Arduino. Verbind vervolgens de GND-pin met een van de aardpinnen op de Arduino. Voor de datacommunicatie verbind je de DIO-pin van het display met digitale pin 3 op de Arduino, en de CLK-pin met digitale pin 2. Deze eenvoudige opstelling zorgt ervoor dat de Arduino effectief met het display kan communiceren.

Zorg ervoor dat je stevige verbindingen hebt om losse bedradingsproblemen te voorkomen. In de video worden alternatieve bedradingsconfiguraties getoond, maar de genoemde verbindingen zijn het eenvoudigst voor basiswerking (in video op 01:30).

Codevoorbeelden en uitleg

De meegeleverde code initialiseert het display en stelt de benodigde configuraties in. De belangrijkste identificaties in de code zijn CLK en DIO, die respectievelijk zijn gedefinieerd als digitale pinnen 2 en 3. De helderheid van het display wordt ingesteld met de functie setBrightness.

#define CLK 2
#define DIO 3

TM1637Display display(CLK, DIO);

void setup() {
    display.setBrightness(0x0f);  // Stel maximale helderheid in
}

Dit codefragment toont de initialisatie van het display en het instellen van maximale helderheid. Vervolgens demonstreert de functie loop hoe verschillende getallen worden weergegeven.

TM1637 4 digit display module - Back
void loop() {
    uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
    display.setSegments(data);  // Wis het display
    display.showNumberDec(23, false, 2, 1);  // Toon getal 23
    delay(TEST_DELAY);
}

Hier wordt het display gewist en wordt het getal 23 getoond. De functie showNumberDec neemt parameters om het weergegeven getal en de opmaak ervan te regelen. De loop blijft getallen tot 500 weergeven.

for(int i=0; i<=500; i++) {
    display.showNumberDec(i);  // Toon getallen van 0 tot 500
}

Dit codefragment illustreert een eenvoudige teller die getallen van 0 tot 500 op het TM1637-display weergeeft. Het display wordt continu bijgewerkt totdat het 500 bereikt, waarna het terugkeert naar 0. De volledige code staat hieronder in het artikel ter referentie.

Demonstratie / Wat te verwachten

Zodra alles is bedraad en de code is geüpload, zou het display de getallen opeenvolgend van 0 tot 500 moeten tonen. Het zal ook verschillende helderheidsinstellingen demonstreren en het scherm op de juiste momenten wissen tussen updates. Wees voorzichtig met omgekeerde polariteit, omdat dit het display kan beschadigen. Je kunt de functionaliteit bevestigen door het display tijdens de video te observeren (in video op 04:00).

Videotijdstempels

  • 00:00 - Introductie van het TM1637-display
  • 01:30 - Bedradingsinstructies
  • 02:45 - Code-uitleg
  • 04:00 - Demonstratie van het display

Afbeeldingen

TM1637 4 digit display module size
TM1637 4 digit display module size
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for TM1637 4 digit display
TArduino wiring for TM1637 4 digit display
Arduino wiring for TM1637 4 digit display - large module
Arduino wiring for TM1637 4 digit display - large module
TM1637 4 digit display module
TM1637 4 digit display module
TM1637 4 digit display module - Back
TM1637 4 digit display module - Back
23-Arduino code for TM1637 4-digit display.
Taal: C++
/*
 * This is the Arduino code for TM1637 4-digit display.
 * 
 * Written by Ahmad S. for Robojax Video
 *visit www.Robojax.com to get wiring diagram and other resources for this project
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

/*
 * Original code from https://github.com/avishorp/TM1637
 * Modified for Robojax video on December 6, 2017

 */
#include <Arduino.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

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


TM1637Display display(CLK, DIO);

void setup()
{
}

void loop()
{


  display.setBrightness(0x0f);

  uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
  display.setSegments(data);
  display.showNumberDec(23, false, 2,1);
  delay(TEST_DELAY);
  
  display.setSegments(data);
  display.showNumberDec(153, false, 3, 1);
  delay(TEST_DELAY);

  display.setSegments(data);
  for(int i=0; i<=500; i++)
  {
    display.showNumberDec(i);
  }

}

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Arduino-bibliotheken (zip)

Datasheet (pdf)

Gebruikershandleiding