// Pin untuk mengendalikan 74HC595
const int dataPin = 11;   // DS
const int latchPin = 12;  // ST_CP
const int clockPin = 13;  // SH_CP

// Pola bit untuk angka 0-9 untuk common anoda
const byte digitPatterns[10] = {
  0b11000000, // 0
  0b11111001, // 1
  0b10100100, // 2
  0b10110000, // 3
  0b10011001, // 4
  0b10010010, // 5
  0b10000010, // 6
  0b11111000, // 7
  0b10000000, // 8
  0b10010000  // 9
};

// Fungsi untuk mengirim data ke 74HC595
void shiftOutData(byte data1, byte data2) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, data2);
  shiftOut(dataPin, clockPin, MSBFIRST, data1);
  digitalWrite(latchPin, HIGH);
}

// Fungsi untuk menampilkan angka pada kedua 7-segment display
void displayNumber(int number) {
  int tens = number / 10;
  int ones = number % 10;

  shiftOutData(digitPatterns[tens], digitPatterns[ones]);
}

void setup() {
  pinMode(dataPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
}

void loop() {
  // Tampilkan angka 00 hingga 99 dengan jeda 1 detik
  for (int i = 0; i < 100; i++) {
    displayNumber(i);
    delay(1000); // Jeda 1 detik
  }
}
74HC595
74HC595