// 7 segment LED display
// by Jose Ojeda

// Shows how to drive a 7 segment LED display.
// The display shows the numbers from 0 to 9 over and over.
// Those displays can be common anode (the segments will be ON by turning the pins LOW) or 
// common cathode (the segments will be ON by turning the pins HIGH). 

// Created 1 May 2007


int number = 0;      // variable the keeps number number in the display

void turn_all_off() {  // function to turn off all the lights 
  for(int i=0; i<8; i++) {
    digitalWrite(i, LOW);
  }
}

void setup() {
  for(int i=0; i<8; i++) {  // initializes pins 0 to 7 as outputs
    pinMode(i, OUTPUT);
  }
}

void loop() {
  turn_all_off(); // turns the display off
  if(number==0) {
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==1) {
    digitalWrite(2, HIGH);
    digitalWrite(7, HIGH);
  }
  if(number==2) {
    digitalWrite(7, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
  }
  if(number==3) {
    digitalWrite(4, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==4) {
    digitalWrite(5, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==5) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(7, HIGH); 
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==6) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==7) {
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==8) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH); 
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  if(number==9) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH); 
    digitalWrite(1, HIGH);
    digitalWrite(2, HIGH);
  }
  delay(1000); // waits for 1000 milli seconds
  number = number + 1; // increments the variable to show
  if(number > 9) {  // check for the range, if greater then 9 goes back to 0s  
    number = 0;
  }
}
