// By Nissanka MD COTM

#define pinDp 2
#define pinC  3
#define pinD  4
#define pinE  5
#define pinG  6
#define pinF  7
#define pinA  8
#define pinB  9
#define pinComDig1  12
#define pinComDig2  13

bool A;
bool B;
bool C;
bool D;
bool E;
bool F;
bool G;
bool Dp;

void writeDisplay(){
  digitalWrite(pinA,A);
  digitalWrite(pinB,B);
  digitalWrite(pinC,C);
  digitalWrite(pinD,D);
  digitalWrite(pinE,E);
  digitalWrite(pinF,F);
  digitalWrite(pinG,G);
  digitalWrite(pinDp,Dp);

}


void allOff(){
  A=LOW;
  B=LOW;
  C=LOW;
  D=LOW;
  E=LOW;
  F=LOW;
  G=LOW;
  Dp=LOW;
  //writeDisplay();
}

void allOn(){
  A=HIGH;
  B=HIGH;
  C=HIGH;
  D=HIGH;
  E=HIGH;
  F=HIGH;
  G=HIGH;
  //Dp=HIGH;
  //writeDisplay();
}

void allOnWrite(){
  allOn();
  writeDisplay();
}

void allOffWrite(){
  allOff();
  writeDisplay();
}

void n1(){
  allOff();
  B=HIGH;
  C=HIGH;
  writeDisplay();
}

void n2(){
  allOn();
  C=LOW;
  F=LOW;
  writeDisplay();
}

void n3(){
  allOn();
  E=LOW;
  F=LOW;
  writeDisplay();
}

void n4(){
  allOn();
  A=LOW;
  D=LOW;
  E=LOW;
  writeDisplay();
}

void n5(){
  allOn();
  B=LOW;
  E=LOW;
  writeDisplay();
}

void n6(){
  allOn();
  B=LOW;
  writeDisplay();
}

void n7(){
  allOff();
  A=HIGH;
  B=HIGH;
  C=HIGH;
  writeDisplay();
}

void n8(){
  allOn();
  writeDisplay();
}

void n9(){
  allOn();
  E=LOW;
  writeDisplay();
}

void n0(){
  allOn();
  G=LOW;
  writeDisplay();
}

void Err(){
  allOn();
  B=LOW;
  C=LOW;
  writeDisplay();
}



void displayDigit(int digit){
  switch(digit){
    case 0:
      n0();
    break;

    case 1:
      n1();
    break;

    case 2:
      n2();
    break;

    case 3:
      n3();
    break;

    case 4:
      n4();
    break;

    case 5:
      n5();
    break;

    case 6:
      n6();
    break;

    case 7:
      n7();
    break;

    case 8:
      n8();
    break;

    case 9:
      n9();
    break;

    default:
    Err();
    break;

  }
  

  

}

  void setup() {
for (int i=2; i<14; i++){
        pinMode(i,OUTPUT);
    }

    digitalWrite(pinComDig1, LOW);
    digitalWrite(pinComDig2, LOW);


}

void loop() {
  // put your main code here, to run repeatedly:






digitalWrite(pinComDig1, HIGH);
digitalWrite(pinComDig2, LOW);
  displayDigit(2);
  delay(300);
  allOffWrite();



digitalWrite(pinComDig1, LOW);
digitalWrite(pinComDig2, HIGH);
displayDigit(5);
  delay(300);
  allOffWrite();


}