21.02.2016

Lesson #4 – Use a 7-Segment display

In this lesson we’re going to show numbers on a 7-Segment display.

For that do we need:

  • 1 Arduino
  • 1 Breadboard
  • 1 7-Segment display
  • 8 220Ω Resistors
  • 18 Wires

An array with content will be defined like this:

var_type var_name[size] = {val_0, val_1, val_2, val_n};

e.g.: byte segment[10] = {B100,B010,B0110};

The „B“ before the numbers in the array means, that this number is a byte number, so it only contains 1 and 0.

You use the for-loop like this:

for(init counter; test counter; increment OR decrease counter)
{
//program code
}

For example (do things eight times, from zero to eight):

for(int i = 0; i < 8; i++)
{
//program code
}

That for-loop in a sentence means:

For an int i with 0, while i < 8, increase i plus one, do the program code.

 

Now we combine these methods in order to show numbers on the 7-Segment display.

//Number coding         0.                 1                2.                3                  4.                 5                  6.                 7                8.                 9
byte segment[10]={B11111101, B01100000, B11011011, B11110010, B01100111, B10110110, B10111111, B11100000, B11111111, B11110110}; 
void setup()
{
  for (int i=2; i <= 9; i++){ // 2-9 sind Ausgänge
    pinMode(i,OUTPUT);
  }
}

void segmente(byte n) {
// control all 7 segments

  for(int k=2; k <= 9; k++) {
    if((n & B10000000) > 0)
      digitalWrite(k, HIGH);
    else 
      digitalWrite(k, LOW);
    n = n << 1;
  }  
}

void loop()
{
  for(int j=0; j <= 9; j++) {
    segmente(segment[j]);
    delay(1000);
  }
}

 

To see, what your code is doing, you have to build your circuit. Do it according to the following scheme:

⇐ Lesson #3  Lesson #5 ⇒