Arduino Decimal Counter With 7 Segment Display

6,070

58

12

Introduction: Arduino Decimal Counter With 7 Segment Display

About: Computer Science and Engineering student at TU Delft.

Using an arduino uno and a seven segment display we are going to make a very simple and basic circuit that counts from 0 up to 9 and repeats until you turn it off.

Step 1: Stuff That We'll Need

  • Arduino UNO
  • 220 Ω resistor
  • 7-segment display (I am using a common anode one)
  • 10 jumper wires

Step 2: Connecting the Resistor With the Display

First of all take the 7-segment display and put it in the breadboard. Now connect the resistor with the power bus on your breadboard and with the two COM pins of the display using two of the jumper wires as shown in the picture above.

Step 3: Connecting the Arduino With the Display

In this step we are going to connect the Arduino with our display using digital pins 12 to 6. To begin connect pin C of the display with digital 12 on the Arduino. Then continue by connecting pin D with digital 11, E with 10, G with 9, F with 8, A with 7 and lastly B with 6. So to sum up we have:

  • C to 12
  • D to 11
  • E to 10
  • G to 9
  • F to 8
  • A to 7
  • B to 6

After that continue by connecting the resistor with the 5V output on the Arduino's board.

Step 4: The Code

Now that we have finished building our little circuit it's time to write the code, so connect your Arduino to your computer, open up the Arduino IDE and get ready. First of all we are going to declare some variables to hold the values of digital pins that we will use and one that we will use to put a time delay between the numbers. After that we will declare 10 functions, one for each number, from which we will send voltage to the correct set of pins to light the proper LEDs for each digit we want. Lastly in the setup() function we are going to initialise the digital pins as output and in the loop() function we will call the functions that we declared earlier in the proper order with the time delay between them. I am also going to paste the code below so feel free to copy it and use it for your project.

int c = 12;
int d = 11;

int e = 10;

int g = 9;

int f = 8;

int a = 7;

int b = 6;

int chrono = 1000;

void zero(){

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, HIGH);

}

void one(){

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(g, HIGH);

digitalWrite(f, HIGH);

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

}

void two(){

digitalWrite(c, HIGH);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(g, LOW);

digitalWrite(f, HIGH);

digitalWrite(a, LOW);

digitalWrite(b, LOW);

}

void three(){

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, HIGH);

digitalWrite(g, LOW);

digitalWrite(f, HIGH);

digitalWrite(a, LOW);

digitalWrite(b, LOW);

}

void four(){

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(g, LOW);

digitalWrite(f, LOW);

digitalWrite(a, HIGH);

digitalWrite(b, LOW);

}

void five(){

digitalWrite(a, LOW);

digitalWrite(b, HIGH);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, HIGH);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

void six(){

digitalWrite(a, HIGH);

digitalWrite(b, HIGH);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

void seven(){

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, HIGH);

digitalWrite(e, HIGH);

digitalWrite(f, HIGH);

digitalWrite(g, HIGH);

}

void eight(){

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, LOW);

digitalWrite(g, LOW);

digitalWrite(f, LOW);

digitalWrite(a, LOW);

digitalWrite(b, LOW);

}

void nine(){

digitalWrite(a, LOW);

digitalWrite(b, LOW);

digitalWrite(c, LOW);

digitalWrite(d, LOW);

digitalWrite(e, HIGH);

digitalWrite(f, LOW);

digitalWrite(g, LOW);

}

void setup() {

pinMode(c, OUTPUT);

pinMode(d, OUTPUT);

pinMode(e, OUTPUT);

pinMode(g, OUTPUT);

pinMode(f, OUTPUT);

pinMode(a, OUTPUT);

pinMode(b, OUTPUT);

}

void loop() {

zero();

delay(chrono);

one();

delay(chrono);

two();

delay(chrono);

three();

delay(chrono);

four();

delay(chrono);

five();

delay(chrono);

six();

delay(chrono);

seven();

delay(chrono);

eight();

delay(chrono);

nine();

delay(chrono);

}

Arduino All The Things! Contest

Participated in the
Arduino All The Things! Contest

4 People Made This Project!

Recommendations

  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge
  • Make It Bridge

    Make It Bridge
  • For the Home Contest

    For the Home Contest

12 Comments

0
BeKaWi
BeKaWi

2 years ago

i used common cathode, and thanks to AngeloP7, i was able to get that to work, but i had to modify the code a bit. i also added a 1/2 second blank state between numbers and changed on state to 1/2 second. here is the code as i modified it:
int c = 12;
int d = 11;
int e = 10;
int g = 9;
int f = 8;
int a = 7;
int b = 6;
int chrono0 = 500;
int chrono1 = 500;
void BLANK(){
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void zero(){
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
void one(){
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(g, LOW);
digitalWrite(f, LOW);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
}
void two(){
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(g, HIGH);
digitalWrite(f, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
}
void three(){
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(g, HIGH);
digitalWrite(f, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
}
void four(){
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(g, HIGH);
digitalWrite(f, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
}
void five(){
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void six(){
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void seven(){
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void eight(){
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(g, HIGH);
digitalWrite(f, HIGH);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
}
void nine(){
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void setup() {
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(g, OUTPUT);
pinMode(f, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
}
void loop() {
BLANK();
delay(chrono0);
zero();
delay(chrono1);
BLANK();
delay(chrono0);
one();
delay(chrono1);
BLANK();
delay(chrono0);
two();
delay(chrono1);
BLANK();
delay(chrono0);
three();
delay(chrono1);
BLANK();
delay(chrono0);
four();
delay(chrono1);
BLANK();
delay(chrono0);
five();
delay(chrono1);
BLANK();
delay(chrono0);
six();
delay(chrono1);
BLANK();
delay(chrono0);
seven();
delay(chrono1);
BLANK();
delay(chrono0);
eight();
delay(chrono1);
BLANK();
delay(chrono0);
nine();
delay(chrono1);
}

0
BarryW43
BarryW43

6 years ago

This is really nice tutorial for beginners like me.

But I didn't understand where did you connect the GND from Arduino on board circuit? I tried different ways but its not working for me.

Any help on this is appreciated.

Thanks

0
PaulMak
PaulMak

Reply 6 years ago

First of all thank you very much for you comment. About your question now: if you use a common anode display there is no need to connect the Arduino GND pin to the board as the digital pins act like it. I hope you can make it work and if you have any other question please feel free to post another comment.

0
Kola AdeyemiA
Kola AdeyemiA

6 years ago

nice tutorial, i did it before but had issues with the code because i was using the for loop, but the idea of defining then calling the function is cool but long. Nice work

0
PaulMak
PaulMak

Reply 6 years ago

Thanks Kola. I defined the functions because it was easier (for me at least) to keep track of what each chunk of code does anyway I am glad you liked it !

1
AngeloP7
AngeloP7

6 years ago

Did it with common cathode :P just reversed the gnd connections w/th 5v

Pretty neat

0
AngeloP7
AngeloP7

6 years ago

What would i need to change if using a 5161AS common cathode display?

0
AngeloP7
AngeloP7

6 years ago

What would i need to change if using a 5161AS common cathode display?

0
cotik1
cotik1

7 years ago

very nice tutorial !!!!

0
PaulMak
PaulMak

Reply 7 years ago

Thank you very much !

0
PaulMak
PaulMak

Reply 7 years ago

Thanks a lot !