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
| Pin | Functie | Arduino Voorbeeld |
|---|---|---|
| VCC | Voeding + | 5V |
| GND | Massa | GND |
| DIO | Data I/O | D3 (elke GPIO) |
| CLK | Klok | D2 (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
- Arduino IDE → Sketch → Bibliotheek gebruiken → Bibliotheken beheren...
- Zoek "TM1637"
- Installeer TM1637 by Avishay Orpaz (meest gebruikt, goed gedocumenteerd)
- 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
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Display flikker of willekeurige segmenten | Te lange draden, geen gemeenschappelijke GND | Korte draden, gemeenschappelijke GND checken, 100 nF decoupling bij VCC |
| Geen display, alleen lege segments | Verkeerde pinnen in code, bibliotheek mismatch | Controleer CLK/DIO definities, probeer andere bibliotheek |
| Helderheid niet instelbaar | Verkeerde bibliotheekmethode | Gebruik setBrightness(0-7) na begin() |
| Colon knippert niet / altijd aan | Foutieve bitmask in showNumberDecEx | Bit 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
- De 4511 7-Segment Decoder Gebruiken: Praktische BCD Display Tutorial
- Weergavebuizen: Van CRTs tot Cat-Eye Indicatoren
- Wetenschappelijke notatie op zakrekenmachines beheersen: Praktische gids
- Geavanceerde Spectrumanalyse: Golfvormen en Harmonische Interpreteren
- Digitale schakelingontwerp onder de knie: Uw complete gids
- Essentiële Gids Voor Het Kiezen Van De Juiste 9V Batterijhouder
- IC4017 Decadeteller: Volledige Beginnersgids
- Digiële Buffers Uitgelegd: Signaalisolatie en Versterking
- Keramische Substraat PCBs: Experts Inzichten en Ontwerp Best Practices
- PCB-ontwerp snel beheersen met Ultiboard: Een uitgebreide tutorial
- C-programmeren leren: Uitgebreide tutorial voor beginners