Overview
The TM1637 is a dedicated LED driver IC that controls a 4-digit 7-segment display over a simple 2-wire protocol (CLK + DIO). It handles all the segment multiplexing internally, which means your Arduino only needs two GPIO pins and a tiny library to display any number from 0000 to 9999, show a colon separator, or write raw segments.
In this project we'll build three modes:
- Stopwatch — counts elapsed seconds since boot
- Up/Down counter — two buttons increment and decrement
- Countdown timer — 60-second countdown with buzzer at zero
💡 Tip
Install the **TM1637Display** library by Avishkar (search 'TM1637' in Arduino Library Manager). The `display.showNumberDecEx()` method handles the colon and leading-zero padding in a single call.
Components
6 itemsNeed these parts? Get this build sheet by email
Parts list with buy links, plus new builds as they're published. By subscribing you agree to our Privacy Policy. Unsubscribe anytime.
Wiring
The TM1637 module already includes current-limiting resistors on each segment, so direct wiring is safe:
| TM1637 Pin | Arduino Pin |
|---|---|
| CLK | D2 |
| DIO | D3 |
| VCC | 5V |
| GND | GND |
Button A (increment) → D5 with 10 kΩ pull-down to GND.
Button B (decrement) → D6 with 10 kΩ pull-down to GND.
Buzzer + → D7.
Live simulation
Steps
- 1Install 'TM1637Display' via Arduino Library Manager (search: TM1637)
- 2Wire the display and buttons per the table above
- 3Upload the sketch — the display should show '0000' on boot
- 4Mode 0 starts automatically as a MM:SS stopwatch
- 5Press BTN_UP to switch to Up/Down Counter mode
- 6Press BTN_DOWN to switch to 60-second Countdown mode
- 7In Countdown mode, hold both buttons simultaneously to reset to 60s