
In this blog post, we’ll explore how to interface a 7-segment display with an Arduino. A 7-segment display is an electronic display device for displaying decimal numerals and a few alphabetic characters. It’s widely used in digital clocks, basic calculators, electronic meters, and other devices that display numerical information.
Components Needed
- Arduino Uno
- 7-segment display (common cathode)
- Jumper wires
- Breadboard
- Resistors (220 ohms)
Understanding the 7-Segment Display
A 7-segment display consists of seven LEDs (labeled a through g) arranged in a rectangular fashion. Each of the seven LEDs is called a segment because when illuminated, they form part of a numerical digit (both decimal and hex) to be displayed. There is also an eighth LED called the decimal point (dp).
Pin Configuration of 7-segment Display
For a common cathode 7-segment display, all the cathodes of the LEDs are connected together to a ground pin. The remaining pins are connected to the segments (a to g and dp).
Circuit Diagram
Here is the pin configuration for the display connected to the Arduino:
- Segment a -> Pin 2
- Segment b -> Pin 3
- Segment c -> Pin 4
- Segment d -> Pin 5
- Segment e -> Pin 6
- Segment f -> Pin 7
- Segment g -> Pin 8
- Common cathode -> GND
Connecting the 7-segment Display to Arduino
- Connect the common cathode pin of the display to the ground (GND) on the Arduino.
- Connect each segment pin (a to g) to digital pins 2 to 8 on the Arduino through a 220-ohm resistor.
Arduino Code
Below is the Arduino code to control the 7-segment display to show numbers from 0 to 9, each for one second.
void setup() { // put your setup code here, to run once:pinMode(2,OUTPUT);pinMode(3,OUTPUT);pinMode(4,OUTPUT);pinMode(5,OUTPUT);pinMode(6,OUTPUT);pinMode(7,OUTPUT);pinMode(8,OUTPUT);
}
void loop() { // put your main code here, to run repeatedly:zero();one();two();three();four();five();six();seven();eight();nine();}void zero() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,LOW); delay(1000);}void one(){ digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); delay(1000); }
void two() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,HIGH); digitalWrite(7,LOW); digitalWrite(8,HIGH); delay(1000);}
void three() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,HIGH); delay(1000); }
void four() { digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,HIGH); digitalWrite(8,HIGH); delay(1000); }
void five() { digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); digitalWrite(7,HIGH); digitalWrite(8,HIGH); delay(1000); }
void six() { digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); delay(1000);}
void seven() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); delay(1000); }
void eight() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); delay(1000); }
void nine() { digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); digitalWrite(7,HIGH); digitalWrite(8,HIGH); delay(1000);}
Simulation files
Detailed Explanation
Initial Setup
In the setup()
function, we initialize all the digital pins connected to the segments of the 7-segment display as output pins.
Main Loop
In the loop()
function, we call the functions zero()
, one()
, two()
, etc., each of which lights up the segments corresponding to the respective digit on the 7-segment display.
Segment Control Functions
Each digit function (e.g., zero()
, one()
, two()
) sets the segments of the 7-segment display to HIGH or LOW using the digitalWrite()
function to represent the respective digit. The delay(1000)
function introduces a delay of 1 second between each digit display, allowing us to clearly see each number before the next one is displayed.
Conclusion
Interfacing a 7-segment display with an Arduino is a straightforward and educational project that introduces you to the basics of digital output control and component interfacing. By following this guide and using the provided code, you can display numbers on your 7-segment display, and further customize it for more complex applications such as timers, counters, or digital clocks. Experiment with the code, add more functionalities, and enjoy your journey into the world of Arduino and electronics.
Leave a Reply