Bird
Raised Fist0
Arduinoprogramming~5 mins

Seven-segment display control in Arduino

Choose your learning style10 modes available
Introduction

A seven-segment display shows numbers using light segments. Controlling it lets you show digits on devices like clocks or counters.

Displaying numbers on a digital clock.
Showing scores in a game.
Counting items on a simple counter.
Displaying temperature readings on a small device.
Creating a simple calculator output.
Syntax
Arduino
void setup() {
  // Set pins as outputs
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  ...
}

void loop() {
  // Turn on/off segments to show a digit
  digitalWrite(pin1, HIGH or LOW);
  digitalWrite(pin2, HIGH or LOW);
  ...
  delay(time_in_ms);
}

Each segment of the display connects to a pin on the Arduino.

Setting a pin HIGH or LOW turns a segment on or off.

Examples
Turns on one segment and turns off another.
Arduino
digitalWrite(2, HIGH); // Turn on segment connected to pin 2
digitalWrite(3, LOW);  // Turn off segment connected to pin 3
Sets pin 4 as output to control a segment.
Arduino
pinMode(4, OUTPUT); // Prepare pin 4 to control a segment
Pauses the program so the digit stays visible.
Arduino
delay(1000); // Wait for 1 second before changing display
Sample Program

This program lights up the segments to show digits 0 through 9 one by one, each for one second.

Arduino
/*
  Simple Arduino program to display digits 0 to 9 on a common cathode seven-segment display.
  Segments a-g connected to pins 2-8.
*/

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};

// Digit patterns for 0-9 (a-g segments)
const byte digits[10][7] = {
  {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW},    // 0
  {LOW, HIGH, HIGH, LOW, LOW, LOW, LOW},         // 1
  {HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH},      // 2
  {HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH},      // 3
  {LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH},       // 4
  {HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH},      // 5
  {HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH},     // 6
  {HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW},        // 7
  {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},    // 8
  {HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH}      // 9
};

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}

void loop() {
  for (int digit = 0; digit < 10; digit++) {
    for (int seg = 0; seg < 7; seg++) {
      digitalWrite(segmentPins[seg], digits[digit][seg]);
    }
    delay(1000); // Show each digit for 1 second
  }
}
OutputSuccess
Important Notes

Make sure to connect the display correctly: common cathode means the common pin goes to ground.

Use current-limiting resistors (around 220Ω) on each segment to protect the LEDs.

Pin numbers in the code must match your actual wiring.

Summary

Seven-segment displays show digits by lighting segments.

Control each segment by setting Arduino pins HIGH or LOW.

Use arrays to store segment patterns for digits to simplify code.

Practice

(1/5)
1. What is the main purpose of controlling pins connected to a seven-segment display in Arduino?
easy
A. To turn on or off specific segments to display digits
B. To read sensor values from the display
C. To power the Arduino board
D. To connect the display to the internet

Solution

  1. Step 1: Understand seven-segment display function

    Each segment lights up to form numbers by controlling its pin.
  2. Step 2: Purpose of controlling pins

    Setting pins HIGH or LOW turns segments on or off to show digits.
  3. Final Answer:

    To turn on or off specific segments to display digits -> Option A
  4. Quick Check:

    Control pins = display digits [OK]
Hint: Pins control segments to form numbers on display [OK]
Common Mistakes:
  • Thinking pins read data instead of controlling segments
  • Confusing display power with pin control
  • Assuming pins connect to internet
2. Which Arduino command correctly sets pin 7 as an output for controlling a seven-segment display?
easy
A. pinMode(7, INPUT);
B. digitalRead(7);
C. pinMode(7, OUTPUT);
D. digitalWrite(7, OUTPUT);

Solution

  1. Step 1: Identify correct function to set pin mode

    pinMode(pin, mode) sets pin as INPUT or OUTPUT.
  2. Step 2: Choose correct mode for controlling segments

    Segments need OUTPUT mode to send signals.
  3. Final Answer:

    pinMode(7, OUTPUT); -> Option C
  4. Quick Check:

    pinMode with OUTPUT sets pin to control segments [OK]
Hint: Use pinMode(pin, OUTPUT) to control segments [OK]
Common Mistakes:
  • Using INPUT instead of OUTPUT for control
  • Confusing digitalWrite with pinMode
  • Trying to read pin instead of setting mode
3. Given this Arduino code snippet controlling a seven-segment display segment connected to pin 8:
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
What will happen to the segment connected to pin 8?
medium
A. The segment will blink rapidly
B. The segment will turn on
C. The segment will turn off
D. The Arduino will reset

Solution

  1. Step 1: Analyze pinMode and digitalWrite commands

    pinMode(8, OUTPUT) sets pin 8 to output mode; digitalWrite(8, HIGH) sends voltage.
  2. Step 2: Effect on seven-segment segment

    Sending HIGH voltage turns the connected segment on.
  3. Final Answer:

    The segment will turn on -> Option B
  4. Quick Check:

    digitalWrite HIGH = segment ON [OK]
Hint: HIGH signal turns segment on, LOW turns it off [OK]
Common Mistakes:
  • Thinking HIGH turns segment off
  • Assuming blinking without delay code
  • Confusing pinMode with digitalWrite effects
4. This Arduino code is intended to display the digit '1' on a common cathode seven-segment display connected to pins 2 and 3 for segments B and C respectively:
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
Why does the display not show the digit '1' as expected?
medium
A. Pins should be set to HIGH to turn on segments on a common cathode display
B. Pins 2 and 3 are not valid output pins
C. pinMode must be set to INPUT for segments
D. digitalWrite commands are missing semicolons

Solution

  1. Step 1: Understand common cathode display logic

    Common cathode means segments turn on when pins are set HIGH.
  2. Step 2: Analyze digitalWrite commands

    Setting pins LOW turns segments off, so digit '1' won't show.
  3. Final Answer:

    Pins should be set to HIGH to turn on segments on a common cathode display -> Option A
  4. Quick Check:

    Common cathode ON = HIGH signal [OK]
Hint: Common cathode segments light with HIGH signal [OK]
Common Mistakes:
  • Setting pins LOW instead of HIGH for common cathode
  • Thinking pins 2 and 3 can't be outputs
  • Ignoring pinMode setup
5. You want to display digits 0 to 9 sequentially on a common anode seven-segment display using Arduino. Which approach correctly controls the segments to show each digit?
hard
A. Connect all segment pins to 5V and use delay to show digits
B. Set segment pins HIGH to turn on segments, LOW to turn off, and update pins for each digit
C. Use analogWrite to vary brightness of segments for each digit
D. Set segment pins LOW to turn on segments, HIGH to turn off, and update pins for each digit

Solution

  1. Step 1: Understand common anode display logic

    Common anode means segments turn on when pins are LOW (connected to ground).
  2. Step 2: Control segments for digits 0-9

    Set pins LOW for segments to light, HIGH to turn off, update pins per digit pattern.
  3. Final Answer:

    Set segment pins LOW to turn on segments, HIGH to turn off, and update pins for each digit -> Option D
  4. Quick Check:

    Common anode ON = LOW signal [OK]
Hint: Common anode segments light with LOW signal [OK]
Common Mistakes:
  • Using HIGH to turn on segments on common anode
  • Using analogWrite instead of digitalWrite for digits
  • Connecting all pins to 5V without control
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard