Controlling a 7 Segment 4 Digit Display With a Raspberry Pi





Introduction: Controlling a 7 Segment 4 Digit Display With a Raspberry Pi

Here is a way to control 7 segment 4 digit display with a Raspberry Pi.

Please vote as I really want to win one contest in my life :-)

Sorry no pictures :-(

Step 1: The Wiring!

We need to wire from the Pi GPIO to the pins on the display:

Resistors are all 390 Ω

Pin 1 on the display goes to pin 23 on the GPIO with a resistor

2 to 21 resistor

3 to 11 resistor

4 to 19 resistor

5 to 15 resistor

6 to 13 no resistor

7 to 12 resistor

8 to 16 no resistor

9 to 18 no resistor

10 to 22 resistor

11 to 24 resistor

12 to 26 no resistor

That is the wiring done :-)

Step 2: The Code!

Now we need to code it to work, I am using python, for this we need the time module and theRPI.GPIOmodule.

This code displays the time and updates it.

Here is the code:

import RPi.GPIO as GPIO
import time



GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

segments = (24,12,19,21,23,22,15,11)

for segment in segments:

GPIO.setup(segment, GPIO.OUT)

GPIO.output(segment, 0)

digits = (26,18,16,13)

for digit in digits:

GPIO.setup(digit, GPIO.OUT)

GPIO.output(digit, 1)

num = {' ':(0,0,0,0,0,0,0),












while True:

n = time.ctime()[11:13]+time.ctime()[14:16]

s = str(n).rjust(4)

for digit in range(4):

for loop in range(0,7):

GPIO.output(segments[loop], num[s[digit]][loop])

if (int(time.ctime()[18:19])%2 == 0) and (digit == 1):

GPIO.output(11, 1)


GPIO.output(11, 0)

GPIO.output(digits[digit], 0)


GPIO.output(digits[digit], 1)

except KeyboardInterrupt:


That is the code :-)

Step 3: Were DONE!

Now we are done and you have a working clock :-)

Please help me win!

If you have any questions please comment :-)

2 People Made This Project!


  • Science of Cooking

    Science of Cooking
  • Trash to Treasure

    Trash to Treasure
  • Paper Contest 2018

    Paper Contest 2018

We have a be nice policy.
Please be positive and constructive.




Thanks for fixing.

Still a little error in line 63.

if (int (time.ctime()[18:19])%2 == 0) and (digit == 1):


IndentationError: unexpected indent

go through the script and make sure the indentations after if statement, loops and all that are correct... python is picky on whitespacing

The way to implement code into instructables is terrible!

It took me ten minutes to fix the other one yesterday!!!

Looks like there is a space before that line that needs to go poof!


Sorry to break it, but on the same line it seems like the ending ":" is missing in your code above.


It is easier to fix now I have stopped using the code type text.

do we use gpio numbering or physical pi numbering?

I don't code in python, find it very annoying. but i went ahead and fixed the code since copy-paste fails on this site.

I did according to the tutorial above, the coding part is good, the wiring is correct as well but the result turn out to be not what im expected, please help =(


In looking at this picture, you have multiple resistors instead of a singular resistor through wires requiring resistors.

The output on the display indicates wiring errors.

I'm using a raspberry pi 2, reason being of using multiple resistors is because I only have a lots of 100 Ω resistor and 220Ω, the next power will be 470Ω so I uses the combination of 100Ω + 220Ω to form a 320 Ω. I did the wiring according to the table above ><