// Urutan LED dalam seven segment
// angka pertama bagian tengah atas
// angka kedua bagian kanan atas
// angka ketiga bagian kanan bawah
// angka keempat bagian tengah bawah
// angka kelima bagian kiri bawah
// angka keenam bagian kiri atas
// angka ketujuh bagian tengah
// angka kedelapan 0 = off, 1 = on
const byte numeral[10] =
{
B11111100, // angka 0
B01100000, // angka 1
B11011010, // angka 2
B11110010, // angka 3
B01100110, // angka 4
B10110110, // angka 5
B10111110, // angka 6
B11100000, // angka 7
B11111110, // angka 8
B11110110 // angka 9
};
// 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 9
// cara kerjanya sistem ditambah 1 dengan delay 1 detik dan ditambah 1
for (int i = 0; i < 10; i++) {
showDigit(i);
delay(1000);
}
delay(2000);
}
void showDigit(int number) {
bool isBitSet;
for (int segment = 0; segment < 8; segment++) {
if (number < 0 || number > 9) {
isBitSet = 0; // turn off all segments
} else {
// isBitSet will be true if given bit is 1
isBitSet = bitRead(numeral[number], segment);
}
isBitSet = !isBitSet; // Invert logic for common anode
digitalWrite(segmentPins[segment], isBitSet);
}
}