const byte numeral[26] =
{
  //0 = led dalam seven segment yang tidak diberikan tagangan
  //1 = led dalam seven segment yang diberikan tagangan masukan
  B11101111, // angka A (fungsinya untuk menentukan bagian mana saja yang hidup)
  B11111111, // angka B
  B10011101, // angka C
  B11111101, // angka D
  B10011111, // angka E
  B10001111, // angka F
  B10111101, // angka G
  B00101111, // angka H
  B01100001, // angka I
  B01111001, // angka J
  B01101111, // K
  B00011101, // L
  B01101111, // M
  B11101101, // N
  B11111101, // O
  B11001111, // P
  B11100111, // Q
  B11101111, // R
  B10110111, // S
  B00011111, // T
  B01111101, // U
  B01111101, // V
  B01101111, // W
  B01101111, // X 
  B01110111, // Y
  B10110111, // Z
};

//pin dari segment dp,G,F,E,D,C,B,A
const int segmentPins[8] = {5,9,8,7,6,4,3,2};


void setup() {
  for(int i=0; i < 8; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}

void loop() {
  //seven segment akan memulai dari 0 sampai 10
  //cara kerjanya sistem ditambah 1 dengan delay 1 detik dan ditambah
  for(int i=0; i <= 26; i++) 
  {
    showDigit(i);
    delay(1000);
  }
  delay(2000);
}

void showDigit(int number)
{
  boolean isBitSet;
  for(int segment = 1; segment < 8; segment++)
  {
    if(number < 0 || number > 25)
    {
      isBitSet = 0; //turn off all segments
    }
    else
    {
      //isBitSet will be true if given bit is 1
      isBitSet = bitRead(numeral[number], segment);
    }
    isBitSet = !isBitSet; 
    digitalWrite(segmentPins[segment], isBitSet);
  }
}