//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[21] =
{
// 0 = led dalam seven segment yang tidak diberikan tegangan
// 1 = led dalam seven segment yang diberikan tegangan masukan
B11101111, // A
B11111111, // B
B10011101, // C
B11111101, // D
B10011111, // E
B10001111, // F
B10111111, // G
B01101111, // H
B01100001, // I
B11110001, // J
//K tak bisa
B00011101, // L
B01101111, // M
B11101101, // N
B11111101, // O
B11001111, // P
B11100111, // Q
B10001101, // R
B10110111, // S
//T tak bisa
B01111101, // U
//V tak bisa
//W tak bisa
//X tak bisa
B01110111, // Y
B11011011, // 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 18
//cara kerjanya sistem ditambah 1 dengan delay 1 detik dan ditambah 1
for(int i=0; i <= 21; i++)
{
showDigit(i);
delay(1000);
}
delay(2000);
}
void showDigit( int number)
{
boolean isBitSet;
for(int segment = 1; segment < 8; segment++)
{
if( number < 0 || number > 21)
{
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);
}
}