Beginner
2 hours
Arduino Digital Stopwatch with 7-Segment Display
This stopwatch project introduces you to the TM1637 4-digit 7-segment display module — one of the easiest displays to use with Arduino because it only needs two wires (CLK and DIO). You’ll learn about Arduino’s millis() function for non-blocking timekeeping and how to handle button debouncing.
What You’ll Need
- Arduino Uno or Nano
- TM1637 4-digit 7-segment display module
- 2 × push buttons (momentary)
- 2 × 10 kΩ pull-down resistors
- Breadboard and jumper wires
- USB cable
Step-by-Step Instructions
- Install library: In Arduino IDE, go to Sketch → Include Library → Manage Libraries and install “TM1637” by Avishay Orpaz.
- Wire the display: Connect TM1637 CLK to Arduino pin 2, DIO to pin 3, VCC to 5 V, GND to GND.
- Wire the buttons: Connect one button between Arduino pin 4 and 5 V, with a 10 kΩ resistor from pin 4 to GND (pull-down). Repeat for the second button on pin 5. Button 1 = Start/Stop, Button 2 = Reset.
- Write the sketch: Use
millis()to track elapsed time. When Start/Stop is pressed, toggle a running boolean. When Reset is pressed, set elapsed time to 0. Update the display every 100 ms showing MM:SS format. - Upload and test: Upload the sketch, press button 1 to start, press again to pause, press button 2 to reset to 00:00.
Safety Notes
- The TM1637 module runs on 3.3–5 V — do not connect it to a higher voltage source.
- Never connect the Arduino’s 5 V rail directly to GND (short circuit).
Tips & Troubleshooting
- If the display shows garbled characters, check the CLK and DIO connections are not swapped.
- Use millis() not delay() — delay() blocks button reading and makes the stopwatch unresponsive.
- Add a third button for a lap timer function to extend the project.