7-Segment LED Display Experiments

After completing the 7-Segment LED Display project, test yourself by trying these experiments.

1 Modify the code to show the digit 0.
void loop() {
  // displays the digit 0
  // this is for a Common Anode display where a LOW turns on a segment
  digitalWrite(segA, LOW);   // turn on LED
  digitalWrite(segB, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segE, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, HIGH);   // turn off LED
  digitalWrite(segDP, HIGH);
}
2 Modify the code to show the digit 0 followed by the digit 1.
void loop() {
  // displays the digit 0 followed by the digit 1
  // this is for a Common Anode display where a LOW turns on a segment
  digitalWrite(segA, LOW);   // turn on LED
  digitalWrite(segB, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segE, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, HIGH);   // turn off LED
  digitalWrite(segDP, HIGH);
  delay(1000);
  digitalWrite(segA, HIGH);   // turn off LED
  digitalWrite(segB, LOW);    // turn on LED
  digitalWrite(segC, LOW);
  digitalWrite(segD, HIGH);
  digitalWrite(segE, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segDP, HIGH);
  delay(1000);
}
3 Create a function call displayDigit(int n) to easily display any given digit.

A function allows a programmer to create a modular piece of code that performs a specific task. The main routine (caller) calls this function to execute the task when needed, and when the function finishes, it then returns to the caller at the line after where the function was called.

The void keyword tells the computer that this function does not return a value.

The name given to this function is displayDigit.

The parameter (int n) specifies that the function takes a one-digit integer value n. The function will use the number stored in n to display the correct digit on the 7-segment display.

The body of the function is bracketed by the open and close { } braces.

The if command is used to check the value that is stored in the variable n. The double-equal sign == is used to test for equality. If n is equal to 0 then the code to display the digit 0 is executed.

Otherwise, if n is not equal to 0 then the else if part is executed to test if n is equal to 1. If it is equal to 1 then the code to display the digit 1 is executed.

This else if pattern is repeated for the remaining digits all the way up to 9.

Notice the use of the open and close { } braces to bracket each of the body of the if command.
// a function that displays a single digit
void displayDigit(int n) {
  // this is for a Common Anode display where a LOW turns on a segment
  if (n == 0) {
    // display digit 0
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, HIGH);
  } else if (n == 1) {
    // display digit 1
    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);
  } else if (n == 2) {
    // display digit 2
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, LOW);
  } else if (n == 3) {
    // display digit 3
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, LOW);
  } else if (n == 4) {
    // display digit 4
    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 5) {
    // display digit 5
    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 6) {
    // display digit 6
    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 7) {
    // display digit 7
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);
  } else if (n == 8) {
    // display digit 8
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 9) {
    // display digit 9
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  }
}
4 Use the displayDigit(int n) function from Experiment 3 above to write a program that counts from 0 to 9.
// remember to include the displayDigit() function
void loop() {
  displayDigit(0);
  delay(1000);
  displayDigit(1);
  delay(1000);
  displayDigit(2);
  delay(1000);
  displayDigit(3);
  delay(1000);
  displayDigit(4);
  delay(1000);
  displayDigit(5);
  delay(1000);
  displayDigit(6);
  delay(1000);
  displayDigit(7);
  delay(1000);
  displayDigit(8);
  delay(1000);
  displayDigit(9);
  delay(1000);
}
5 Repeat Experiment 4 but use the for command to automatically do the counting.
// remember to include the displayDigit() function
void loop() {
  // the for loop uses the variable j to count from 0 to 9,
  // each time calling displayDigit(j) to display the digit j
  for (int j=0; j<10; j++) {
    // calls the displayDigit() function to show the number j
    displayDigit(j);
    delay(1000);
  }
}
6 Create an electronic dice to randomly display a number between 1 and 6.

The random command tells the computer to generate a random number between the two values specified, in this case between 1 and 6.
// remember to include the displayDigit() function
void loop() {
   int number = random(1, 6);   // generate a random number between 1 and 6	
   displayDigit(number);        // display the number
   delay(2000);
}
7 Program to display 160 digits of Pi by Vanessa Xu (Age 12)

// 160 DIGITS OF PI
// by Vanessa Xu
// Age 12
// vanessaxu2005@gmail.com
// 7/9/2019

int segA = 7;
int segB = 6;
int segC = 4;
int segD = 2;
int segE = 1;
int segF = 9;
int segG = 10;
int segDP = 5;

// a function that displays a single digit
void displayDigit(int n) {
  // this is for a Common Anode display where a LOW turns on a segment
  if (n == 0) {
    // display digit 0
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, HIGH);
  } else if (n == 1) {
    // display digit 1
    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);
  } else if (n == 2) {
    // display digit 2
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, LOW);
  } else if (n == 3) {
    // display digit 3
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, LOW);
  } else if (n == 4) {
    // display digit 4
    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 5) {
    // display digit 5
    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 6) {
    // display digit 6
    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 7) {
    // display digit 7
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);
  } else if (n == 8) {
    // display digit 8
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  } else if (n == 9) {
    // display digit 9
    digitalWrite(segA, LOW);
    digitalWrite(segB, LOW);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);
  }
}

void setup() {
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(segDP, OUTPUT);

  displayDigit(3);
  delay(1500);
  digitalWrite(segDP, LOW);
  delay(1500);
  digitalWrite(segDP, HIGH);
  displayDigit(1);
  delay(1500);
  displayDigit(4);
  delay(1500);
  displayDigit(1);
  delay(1000);
  displayDigit(5);
  delay(1000);
  displayDigit(9);
  delay(1000);
  displayDigit(2);
  delay(500);
  displayDigit(6);
  delay(500);
  displayDigit(5);
  delay(500);
  displayDigit(3);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(8);
  delay(225);
  displayDigit(4);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(6);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(7);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(3);
  delay(250);
  displayDigit(5);
  delay(250);
  displayDigit(9);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(0);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(2);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(4);
  delay(250);
  displayDigit(8);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(1);
  delay(250);
  displayDigit(9);
  delay(1000);
} 

void loop() { 
}
8 Make the LEDs randomly jump around, i.e., randomly turn on and off. Hint: use the random command.
9 Make the LEDs spin around in a circle, i.e. turn on segment a, then b, then c, etc. until segment f, and then repeats.