Arduino Nano - TM1637 4-Digit 7-Segment Display
This walkthrough takes you step by step through using a TM1637 4-digit 7-segment display module with the Arduino Nano. The Nano packs the same ATmega328P as the Uno into a compact, breadboard-friendly form factor - great for tight builds and prototyping where space matters.
What you will walk through:
- Connecting the TM1637 display to the Arduino Nano.
- Displaying integers and text on the 7-segment display.
- Showing temperature readings with the degree symbol.
- Displaying time in HH:MM format with a blinking colon.
- Controlling individual digits and adjusting brightness.

Hardware Preparation
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Additionally, some of these links are for products from our own brand, DIYables .
What Is the TM1637 Display Module?
The TM1637 is a driver chip designed for 7-segment LED displays. It takes care of digit multiplexing internally and communicates with the microcontroller over just two wires - CLK and DIO. The chip has its own display memory, so once you write data to it, the display holds steady without any refresh loop in your code.
What the module provides:
- 4 digits, each with 7 segments plus a decimal point
- Colon separator between the second and third digit for clock-style display
- 8 brightness levels you can set through code
- 2-wire interface compatible with 3.3V and 5V
- Built-in display memory - set it and forget it
Pin Mapping
| Function | Pin |
|---|---|
| CLK | Clock signal input |
| DIO | Data input/output |
| VCC | Power supply (3.3V or 5V) |
| GND | Ground |
CLK and DIO can go to any digital pins on the Nano. The examples below use pins D2 and D3.
Wiring Diagram
Wire the TM1637 module to the Arduino Nano:
- CLK to pin 9
- DIO to pin 10
- VCC to 5V
- GND to GND

This image is created using Fritzing. Click to enlarge image
See The best way to supply power to the Arduino Nano and other components.
Setting Up the Library
- Plug the Arduino Nano into your computer with a Mini-B USB cable.
- Open Arduino IDE. Set the board to Arduino Nano and select the matching port.
- Go to the Libraries panel on the left.
- Type "DIYables_4Digit7Segment_TM1637" in the search box. Look for the library from DIYables.
- Click Install.

The library is self-contained - no extra dependencies to install.
Note: If your Nano uses an older bootloader, select ATmega328P (Old Bootloader) under Processor in the Tools menu.
Foundation Code
Every sketch built with the DIYables_4Digit7Segment_TM1637 library starts from this foundation:
Pass the CLK and DIO pin numbers to the constructor, call begin() once in setup(), and the display is ready for data.
Arduino Nano Code - Display Integer Numbers
This example walks through displaying various integer values, including negative numbers and zero-padded output.
Follow Along
- Wire the TM1637 module to the Nano as shown in the wiring diagram above.
- Connect the Nano to your computer with a Mini-B USB cable.
- Open Arduino IDE, pick the board and port, paste the code, and click Upload.
- Open the Serial Monitor to view the output.
The display will cycle through the numbers 0, 42, 1234, -5, -123, 9999, and then show 42 with zero-padding as "0042".
Method Overview
| Method | Explanation | Call Example |
|---|---|---|
| print(int) | Display an integer (-999 to 9999) | display.print(1234) |
| print(int, true) | Display with leading zeros | display.print(42, true) |
| clear() | Clear the display | display.clear() |
Arduino Nano Code - Display Text and Temperature
This example walks through displaying text strings and formatted temperature with the degree symbol.
Follow Along
- Wire the TM1637 module as shown above.
- Upload the sketch and open the Serial Monitor.
The display cycles through "HELP", "Hi", "COOL", "done", then shows temperatures "25°C" and "72°F".
Method Overview
| Method | Explanation | Call Example |
|---|---|---|
| print(const char*) | Display a text string (up to 4 chars) | display.print("HELP") |
| printTemperature(int, char) | Display temperature with degree and unit | display.printTemperature(25, 'C') |
| DEGREE | Degree symbol constant | display.DEGREE |
Arduino Nano Code - Display Time with Blinking Colon
This example walks through showing a clock-like time with the colon blinking every 500 milliseconds.
Follow Along
- Wire the module, upload the code.
- The display shows "12:30" with the colon blinking on and off.
Method Overview
| Method | Explanation | Call Example | |
|---|---|---|---|
| printTime(int, int) | Display time HH | MM with colon | display.printTime(12, 30) |
| printTime(int, int, bool) | Display time, control colon on/off | display.printTime(12, 30, false) |
Arduino Nano Code - Blink the Display
This example walks through using off() and on() to blink values on the display.
Follow Along
- Upload the code and observe the display.
"1234" blinks five times, pauses, then "HELP" blinks five times, and the cycle repeats.
Method Overview
| Method | Explanation | Call Example |
|---|---|---|
| off() | Turn off the display (data preserved) | display.off() |
| on() | Turn the display back on | display.on() |
| setBrightness(int) | Set brightness 0-7 | display.setBrightness(4) |
Arduino Nano Code - Individual Digit Control
This example walks through setting each digit separately with numbers, characters, and the colon.
Follow Along
- Upload and watch the display cycle through different combinations.
Method Overview
| Method | Explanation | Call Example |
|---|---|---|
| setNumber(int, int) | Set a digit (0-9) at position 0-3 | display.setNumber(0, 1) |
| setChar(int, char) | Set a character at position 0-3 | display.setChar(0, 'H') |
| setColon(bool) | Turn colon on or off | display.setColon(true) |
| setSegments(int, uint8_t) | Set raw segments at position 0-3 | display.setSegments(0, 0x76) |
Troubleshoot
- Display shows nothing - Check the wiring. Make sure CLK and DIO are connected to the correct Nano pins and VCC goes to 5V.
- Wrong characters appear - CLK and DIO are likely swapped. Switch the two wires.
- Display too dim or too bright - Use setBrightness(level) with a value from 0 to 7.
- Compile error about missing library - Install DIYables_4Digit7Segment_TM1637 from the Arduino Library Manager.
- Upload fails with "not in sync" - Try selecting ATmega328P (Old Bootloader) in the Processor menu.
Platform Support
The library uses only Arduino standard APIs (pinMode, digitalWrite, digitalRead, delayMicroseconds) and works on all Arduino-compatible platforms.