Want to build a DIY countdown timer with a raw 7-segment display, without any fancy modules like TM1637? Let’s do it the hardcore way — controlling each segment manually using Arduino pins. This is a great project to understand how 7-segment LEDs work under the hood.
What You’ll Need
- Arduino Uno Starter Kit
- Bread Board
- Jumper Wires
- 5mm LEDs Assortment Pack
- Resistors ( 220 ohms recommended)
- 10k Potentiometer
This post may contain affiliate links. If you purchase through these links, I may earn a small commission at no extra cost to you. It helps support this blog and keeps the projects coming—thanks for your support!
You can find the segment labels (a-g) in the datasheet of your display. In this example, we’ll assume you connect them to pins 2 through 8, and the dot to pin 9.
Understanding the 7-Segment Display
A 7-segment display is made up of 7 LEDs (labeled a–g) arranged in a way that they can form numbers from 0 to 9. Each segment can be turned on or off individually by sending signals from Arduino pins. Some displays also include an 8th LED as a decimal point.
There are two types of 7-segment displays:
- Common cathode: All cathodes are connected together to GND. Segments turn ON when the anode receives HIGH.
- Common anode: All anodes are connected together to VCC. Segments turn ON when the cathode receives LOW.
In this project, we use a common cathode type.
Why Add Resistors?
Each segment in a 7-segment display is essentially an LED — and like any LED, it needs current-limiting resistors to prevent it from drawing too much current.
If you don’t add resistors:
- The LED segments may draw more current than the Arduino pin can safely supply.
- This can cause the segments to burn out or drastically shorten their lifespan.
- Even worse, it may damage the Arduino I/O pins permanently.
That’s why we always place a 220Ω to 330Ω resistor in series with each segment. It keeps the current within safe limits while still making the display bright enough to read.
Pin Mapping
Assuming the following mapping from Arduino to segments:
Arduino Pin | Segment |
---|---|
D2 | a |
D3 | b |
D4 | c |
D5 | d |
D6 | e |
D7 | f |
D8 | g |
D9 | dot |

Arduino Code
// Arduino seven-segment display countdown example
// Rewritten for Lee Curiosity
byte seven_seg_digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 0, 0, 1, 1} // 9
};
void setup() {
for (int pin = 2; pin <= 9; pin++) {
pinMode(pin, OUTPUT);
}
writeDot(0); // Turn off the dot
}
void writeDot(byte dot) {
digitalWrite(9, dot);
}
void sevenSegWrite(byte digit) {
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
++pin;
}
}
void loop() {
for (byte count = 10; count > 0; --count) {
delay(1000); // Wait 1 second
sevenSegWrite(count - 1); // Display the digit
}
delay(4000); // Wait 4 seconds before looping again
}
How It Works
- Each segment (a–g) is wired to an individual Arduino pin.
- The
seven_seg_digits
array maps each digit (0–9) to the correct ON/OFF pattern for the 7 segments. - The
sevenSegWrite()
function sends those ON/OFF values to the pins. - The loop counts down from 9 to 0 with a 1-second delay.
Notes
- This example assumes a common cathode display. If you’re using a common anode, you’ll need to invert the values:
HIGH
becomesLOW
and vice versa. - Adding current-limiting resistors (220Ω–330Ω) is important to avoid burning out your segments.
- Adding a potentiometer allows for analog brightness control.
- You can also expand this to dual displays with shift registers or multiplexing, but that’s another adventure
Final Thoughts
This project gives you a hands-on feel for how 7-segment displays really work. It’s not as convenient as using a module, but it teaches you everything from pin logic to segment mapping.
đź”§ Recommended Arduino Starter Kits for Beginners
If you’re just getting started with Arduino, these beginner-friendly kits will help you learn faster and avoid the headache of missing parts. They all include essential components like LEDs, resistors, jumper wires, and an Arduino-compatible board.
- Arduino Official Starter Kit
Includes a genuine Arduino UNO board, project book, and components for 15+ tutorials.
👉 Check it on Amazon - Elegoo UNO R3 Super Starter Kit
Affordable and packed with sensors, LEDs, motors, and wires — great value.
👉 View the Elegoo Kit - Freenove Ultimate Starter Kit
Includes 200+ components, an Arduino-compatible board, and 50+ example projects.
👉 See the Freenove Kit
đź’ˇ Tip: Choose a kit with a good variety of components so you can build multiple projects without buying extra parts later.