Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

De TM1637 4-Digit 7-Segment Display Beheersen: Arduino Tutorial

Wat is de TM1637?

De TM1637 is een compacte LED-displaydriver die vier 7-segmentcijfers aanstuurt via slechts twee signaallijnen (CLK, DIO) plus voeding. Ideaal voor klokken, tellers, temperatuurmeters en statusdisplays. De module bevat de driver-IC, vier 0,36-inch gemeenschappelijke-anode displays en een kolonnetje (voor tijdscheiding).

Specificaties

  • Voeding: 3,3 – 5,5 V (ideaal 5 V van Arduino)
  • Stroom: ~30-80 mA (afhankelijk van helderheid)
  • Interface: 2-draads serieel (CLK, DIO), TM1637-protocol
  • Helderheid: 8 niveaus (0-7)
  • Temperatuurbereik: -10 °C tot +80 °C
  • Afmetingen module: ~42 × 24 × 12 mm

Pinout

PinFunctieArduino Voorbeeld
VCCVoeding +5V
GNDMassaGND
DIOData I/OD3 (elke GPIO)
CLKKlokD2 (elke GPIO)

Aansluiten op Arduino UNO

TM1637     Arduino
VCC   →    5V
GND   →    GND
DIO   →    D3
CLK   →    D2

Geen pull-up weerstanden nodig; de module heeft interne pull-ups. Draadlengte < 30 cm aanbevolen voor betrouwbare communicatie.

Bibliotheek Installeren

  1. Arduino IDE → Sketch → Bibliotheek gebruiken → Bibliotheken beheren...
  2. Zoek "TM1637"
  3. Installeer TM1637 by Avishay Orpaz (meest gebruikt, goed gedocumenteerd)
  4. Of: TM1637Display by Bruno Novaes (modernere API, ondersteunt floats, hex, etc.)

Basiscode: Getallen & Tekst Weergeven

#include <TM1637Display.h>  // Bruno Novaes versie

#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);

void setup() {
  display.setBrightness(5);  // 0-7
  display.clear();
}

void loop() {
  // Getal tonen
  display.showNumberDec(1234, false);  // false = geen leading zeros
  delay(2000);
  
  // Met leading zeros
  display.showNumberDec(42, true, 4);  // "0042"
  delay(2000);
  
  // Negatief getal
  display.showNumberDec(-123, false);
  delay(2000);
  
  // Hexadecimaal
  display.showNumberHexEx(0xBEEF, 0, false, 4, 0);
  delay(2000);
  
  // Tekst via segmenten handmatig
  uint8_t SEG_DONE[] = {
    SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
    SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
    SEG_C | SEG_E | SEG_G,                           // n
    SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
  };
  display.setSegments(SEG_DONE);
  delay(3000);
}

Project: Digitale Klok met DS3231 RTC

Extra Hardware

  • DS3231 RTC module (I2C, accurater dan DS1307)
  • CR2032 backup batterij

Aansluiting

DS3231     Arduino
VCC   →    5V (of 3.3V)
GND   →    GND
SDA   →    A4 (SDA)
SCL   →    A5 (SCL)

Code

#include <Wire.h>
#include <RTClib.h>        // Adafruit RTClib
#include <TM1637Display.h>

#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
RTC_DS3231 rtc;

void setup() {
  display.setBrightness(4);
  display.clear();
  Wire.begin();
  if (!rtc.begin()) {
    display.setSegments((uint8_t[]){SEG_G, SEG_G, SEG_G, SEG_G}); // "----"
    while (1);
  }
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // PC-tijd bij eerste keer
  }
}

void loop() {
  DateTime now = rtc.now();
  int tijd = now.hour() * 100 + now.minute(); // HHMM formaat
  display.showNumberDecEx(tijd, 0b01000000, true, 4, 0); // 0b01000000 = colon aan
  delay(1000);
}

Veelvoorkomende Problemen & Oplossingen

ProbleemOorzaakOplossing
Display flikker of willekeurige segmentenTe lange draden, geen gemeenschappelijke GNDKorte draden, gemeenschappelijke GND checken, 100 nF decoupling bij VCC
Geen display, alleen lege segmentsVerkeerde pinnen in code, bibliotheek mismatchControleer CLK/DIO definities, probeer andere bibliotheek
Helderheid niet instelbaarVerkeerde bibliotheekmethodeGebruik setBrightness(0-7) na begin()
Colon knippert niet / altijd aanFoutieve bitmask in showNumberDecExBit 6 (0x40) controleert colon: 1=aan, 0=uit

Uitgebreide Mogelijkheden

  • Temperatuurmeter: Combineer met DS18B20 of DHT22.
  • CO2 monitor: MH-Z19B + TM1637 voor ppm weergave.
  • Stopwatch/timer: Gebruik millis() voor timing, toon MM:SS of HH:MM.
  • Meerdere displays: Elke display krijgt eigen CLK/DIO paar (of gedeelde CLK, aparte DIO met chip-select logic).

Conclusie

De TM1637 is de keuze voor eenvoudige, heldere numerieke displays in Arduino-projecten. Minimale pinnen, lage kosten, robuust en veel bibliotheekondersteuning. Of je nu een klok, teller of sensordisplay bouwt – deze module levert professionele resultaten met minimale moeite.

Industriële technologie

  1. De 4511 7-Segment Decoder Gebruiken: Praktische BCD Display Tutorial
  2. Weergavebuizen: Van CRTs tot Cat-Eye Indicatoren
  3. Wetenschappelijke notatie op zakrekenmachines beheersen: Praktische gids
  4. Geavanceerde Spectrumanalyse: Golfvormen en Harmonische Interpreteren
  5. Digitale schakelingontwerp onder de knie: Uw complete gids
  6. Essentiële Gids Voor Het Kiezen Van De Juiste 9V Batterijhouder
  7. IC4017 Decadeteller: Volledige Beginnersgids
  8. Digiële Buffers Uitgelegd: Signaalisolatie en Versterking
  9. Keramische Substraat PCBs: Experts Inzichten en Ontwerp Best Practices
  10. PCB-ontwerp snel beheersen met Ultiboard: Een uitgebreide tutorial
  11. C-programmeren leren: Uitgebreide tutorial voor beginners