Bird
Raised Fist0
Arduinoprogramming~20 mins

Seven-segment display control in Arduino - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Seven-Segment Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output on the seven-segment display?

Consider this Arduino code snippet controlling a common cathode seven-segment display connected to pins 2 to 8. What digit will be shown on the display?

Arduino
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
// Segments a,b,c,d,e,f,g
const byte digit2Segments = 0b01011011; // segments to light for digit '2'

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    bool segmentOn = digit2Segments & (1 << i);
    digitalWrite(segmentPins[i], segmentOn ? HIGH : LOW);
  }
}

void loop() {
  // nothing here
}
ADigit '3' is displayed
BNo segments light up
CDigit '5' is displayed
DDigit '2' is displayed
Attempts:
2 left
💡 Hint

Look at the binary pattern and which segments correspond to each bit.

🧠 Conceptual
intermediate
1:00remaining
Which pin controls the 'g' segment in this setup?

Given the array const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8}; representing segments a to g respectively, which pin controls the 'g' segment?

APin 5
BPin 8
CPin 7
DPin 2
Attempts:
2 left
💡 Hint

Remember the order is a, b, c, d, e, f, g in the array.

🔧 Debug
advanced
2:30remaining
Why does the display show nothing?

This Arduino code is supposed to display digit '1' on a common cathode seven-segment display, but the display stays off. What is the cause?

Arduino
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const byte digit1Segments = 0b00000110; // segments b and c

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  for (int i = 0; i < 7; i++) {
    bool segmentOn = digit1Segments & (1 << i);
    digitalWrite(segmentPins[i], segmentOn ? HIGH : LOW);
  }
}

void loop() {
  // nothing
}
APins are set LOW to turn on segments, but it's a common cathode display needing HIGH
BPins are set HIGH to turn on segments, but it's a common anode display needing LOW
CPin modes are not set to OUTPUT
DThe bitmask for digit '1' is incorrect
Attempts:
2 left
💡 Hint

Check how HIGH and LOW relate to turning on segments for common cathode vs anode.

📝 Syntax
advanced
1:30remaining
Which option fixes the syntax error in this seven-segment control code?

Identify the option that fixes the syntax error in this Arduino code snippet:

for (int i = 0; i < 7; i++)
  digitalWrite(segmentPins[i], digitSegments & (1 << i) ? HIGH : LOW
ARemove the ternary operator and write digitalWrite(segmentPins[i], HIGH);
BReplace digitalWrite with digitalRead
CAdd a closing parenthesis at the end: digitalWrite(segmentPins[i], digitSegments & (1 << i) ? HIGH : LOW);
DAdd a semicolon after the for loop header
Attempts:
2 left
💡 Hint

Look carefully at parentheses and semicolons.

🚀 Application
expert
1:00remaining
How many segments light up for digit '8' on a common cathode display?

Given the standard seven-segment display segments labeled a to g, how many segments must be lit to display the digit '8'?

A7 segments
B5 segments
C6 segments
D4 segments
Attempts:
2 left
💡 Hint

Digit '8' lights all segments on a seven-segment display.

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