4-Digit 7-Segment LED Display + Arduino

387,638

127

66

About: I love electronics, computers, and everything DIY!

I recently got a 4-Digit 7-Segment LED Display from Sparkfun, and couldn't wait to use it. Here, I will show you how to wire it, and some sample programs to use with it!

Step 1: Display Info

This is the way the display works. It's multiplexed, so you select the digit by setting its pin (we'll get into pins later) HIGH, and you select the segment by setting its pin LOW. You display multiple digits at once by rapidly cycling through them.
The Pins (digits are numbered from the left):
Digit 1: 1
Digit 2: 2
Digit 3: 6
Digit 4: 8
 
Segment A: 14
Segment B: 16
Segment C: 13
Segment D: 3
Segment E: 5
Segment F: 11
Segment G: 15
 
Decimal Point: 7
 

Step 2: Wiring the Display and Button

Now, to wiring! To make it easier for you, I am going to put the Arduino pin number first, then the display's pin number.
 
1--14
2--16
3--13
4--3
5--5
6--11
7--15
8--7
9--1 (resistor)
10--2 (resistor)
11--6 (resistor)
12--8 (resistor)

If this is too confusing, say so in the comments, and I'll rewrite it.
Connect the button to Arduino pin 13 and 5V.
I used 1K resistors, but you could get away with less.
 

Step 3: Programming

I'm pretty much just putting refrence links and files here.
 
Display Datasheet

 
Timer Program (I modeled my timer after this)

 
Attatched Files:

_4segTimer: Timer program

_4digitAni1: Animations

The programs still need some tweaking/additions, so I'll be updating them once in a while.

Update History:


 

Share

    Recommendations

    • First Time Author

      First Time Author
    • Toys Contest

      Toys Contest
    • PCB Contest

      PCB Contest

    66 Discussions

    0
    None
    gasper1

    1 year ago

    hello again,still no success in getting the sketch to start counting.I am using a UNO v3 with a 5461A5 type readout.12 pin

    Im sure it must be something simple that is causing it to non start.

    0
    None
    gasper1

    1 year ago

    Can you give me some idea's why I can't get the digits to start counting. I am sure i am working with the correct code, as the other code works well.but I cannot get this start counting.All my connections are correct.

    please help make an old happy !!.

    Please help

    0
    None
    blackburdtx

    2 years ago

    There are only 12 pins on the display but your connecting pin 1 on the Ard to pin 14 on the display.... very confusing.

    2 replies
    0
    None
    robertjerun7

    Reply 1 year ago

    some down in the comments:

    1--10 (a)
    2--7 (b)
    3--4 (c)
    4--2 (d)
    5--1 (e)
    6--11 (f)
    7--5 (g)
    8--3 (dot)
    9--12 (resistor) (d1)
    10--9 (resistor) (d2)
    11--8 (resistor) (d3)
    12--6 (resistor) (d4)

    10 and 11 reversed for me

    Tip: If you have 12-pin segment display your scheme will be like this:

    1--10 (a)
    2--7 (b)
    3--4 (c)
    4--2 (d)
    5--1 (e)
    6--11 (f)
    7--5 (g)
    8--3 (dot)
    9--12 (resistor) (d1)
    10--9 (resistor) (d2)
    11--8 (resistor) (d3)
    12--6 (resistor) (d4)

    1 reply
    0
    None
    tmahundrah

    1 year ago

    i got it working, it is a 4 digit seven segment i got from an old DSTV Decorder, and controlling it over the serial monitor

    0
    None
    aseppermana

    2 years ago

    i has download it,but cant open in arduino IDE because that file is not pde

    0
    None
    KarissaA1

    2 years ago

    Does the 4 digit file is the part one of the Segment?

    0
    None
    EligijusJ

    2 years ago

    I dont get it how to wiring ?! Can anyone sent schematics or smth ? Thank You :)

    1 reply
    0
    None
    ArcAiN6

    2 years ago

    People should also be aware that there are differences when wiring CC (Common Cathode) and CA (Common Anode) 7-Segment displays, as well as addressing them with the code, or using shift registers / led drivers.

    0
    None
    PaulW106

    3 years ago

    To get the timer to work do I just copy and paste the file into the Arduino program?

    0
    None
    npegnato

    3 years ago on Introduction

    Could I possibly get a list of comments for what's happening in either the timer or animation program? I'm using a 4 digit display for a heart rate monitor and I want to know how I can display the BMP from my Arduino.

    0
    None
    kittekaak1

    4 years ago on Introduction

    It runs also with an ULN 2803 instad of the 4 transistors. where can i buy in europe the sma420564 ? I have only one in my arduino kit. mfg CK

    0
    None
    Tohydromx

    4 years ago on Introduction

    I am using an Arduino Mega 2560, and I am using analogWrite intead of digitalWrite because I don't have low value resistors at the moment :(

    1: the button doesn't work, maybe pin13 is cursed on my board + i like using the LED for error reporting. if you used other pins it won't work without a pull-down resistor, or reversing the code and using the internal pull-up. I suggest:

    in setup(). add: pinMode(xx, INPUT_PULLUP)

    in loop(). change: if (digitalRead(13) == HIGH) to: if (digitalRead(xx) == LOW)

    and the button connects between pin and ground. (xx any pin other than 13 ).

    2: the digits were reversed ie: it was counting from left to right. I suggest:

    int d1 = 9; int d2 = 10; int d3 = 11; int d4 = 12;

    instead of: int d4 = 9; int d3 = 10; int d2 = 11; int d1 = 12;

    3: Thank you for the instructable :)

    0
    None
    Jimmacle

    4 years ago on Introduction

    I smell spam, or you're just someone who doesn't understand the differences between my project and the one you linked.