// Pin kontrol digit
const int digit1Pin = 11;
const int digit2Pin = 10;
const int digit3Pin = 9;
const int digit4Pin = 8;
// Pin kontrol segmen (a, b, c, d, e, f, g, dp)
const int segmentPins[] = {1, 2, 3, 4, 5, 6, 7, 0};
// Definisi angka 0-9 dalam bentuk bit untuk display seven segment
const byte digits[] = {
B11000000, // 0
B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B10010000, // 9
};
void setup() {
// Set pin-pin sebagai OUTPUT
pinMode(digit1Pin, OUTPUT);
pinMode(digit2Pin, OUTPUT);
pinMode(digit3Pin, OUTPUT);
pinMode(digit4Pin, OUTPUT);
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i <= 9999; i++) {
displayNumber(digit1Pin, i / 1000); // Ribuan
delay(10); // Tunggu sebentar
displayNumber(digit2Pin, (i / 100) % 10); // Ratusan
delay(10); // Tunggu sebentar
displayNumber(digit3Pin, (i / 10) % 10); // Puluhan
delay(10); // Tunggu sebentar
displayNumber(digit4Pin, i % 10); // Satuan
delay(10); // Tunggu 1 detik
}
}
void displayNumber(int digitPin, int number) {
// Matikan semua digit
digitalWrite(digit1Pin, LOW);
digitalWrite(digit2Pin, LOW);
digitalWrite(digit3Pin, LOW);
digitalWrite(digit4Pin, LOW);
// Tampilkan angka pada segmen-segmen yang sesuai
for (int i = 0; i < 8; i++) {
if (bitRead(digits[number], i)) {
digitalWrite(segmentPins[i], HIGH);
} else {
digitalWrite(segmentPins[i], LOW);
}
}
// Aktifkan digit yang sesuai
digitalWrite(digitPin, HIGH);
}