// make an array to save Sev Seg pin configuration of numbers

int num_array[10][7] = {
  { 0, 0, 0, 0, 0, 0, 1 }, // 0
  { 1, 0, 0, 1, 1, 1, 1 }, // 1
  { 0, 0, 1, 0, 0, 1, 0 }, // 2
  { 0, 0, 0, 0, 1, 1, 0 }, // 3
  { 1, 0, 0, 1, 1, 0, 0 }, // 4
  { 0, 1, 0, 0, 1, 0, 0 }, // 5
  { 0, 1, 0, 0, 0, 0, 0 }, // 6
  { 0, 0, 0, 1, 1, 1, 1 }, // 7
  { 0, 0, 0, 0, 0, 0, 0 }, // 8
  { 0, 0, 0, 1, 1, 0, 0 }  // 9
};

//function header
void Num_Write(int);
static const uint8_t digital_pins[] = {2, 3, 4, 5, 6, 7, 8};
static const uint8_t analog_pins[] = {A0, A1, A2, A3, A4, A5, 9};


void setup()
{
  // set pin modes
  for (int i = 0; i < 7; i++) {
    pinMode(analog_pins[i], OUTPUT);
    pinMode(digital_pins[i], OUTPUT);
  }

  for (int i = 0; i < 7; i++) {
    digitalWrite(analog_pins[i], HIGH);
    digitalWrite(digital_pins[i], HIGH);
  }
}

void loop()
{

  //counter loop
  for (int counter = 10; counter > 0; --counter)
  {
    delay(1000);
    Num_Write(counter - 1);
    Num_Write_AnalogPin(counter - 1);
  }
  delay(3000);
}

// this functions writes values to the sev seg pins
void Num_Write(int number)
{
  int pin = 2;
  for (int j = 0; j < 7; j++) {
    digitalWrite(pin, num_array[number][j]);
    pin++;
  }
}

void Num_Write_AnalogPin(int number)
{
  int pin = 0;
  for (int j = 0; j < 7; j++) {
    digitalWrite(analog_pins[pin], num_array[number][j]);
    pin++;
  }
}
