// Rubah nilai 1 menjadi 0 untuk 7-segment common anode
#define commonCathode 0
// Deklarasi posisi pin digital Arduino untuk setiap segmen
int segmentA = 2;
int segmentB = 3;
int segmentC = 4;
int segmentD = 5;
int segmentE = 6;
int segmentF = 7;
int segmentG = 8;
int segmentDP = 9;
// Deklarasi variabel array yang berisi angka untuk 7-segmen
byte numbers[10] =
{
B00111111, // 0
B00000110, // 1
B01011011, // 2
B01001111, // 3
B01100110, // 4
B01101101, // 5
B01111101, // 6
B00000111, // 7
B01111111, // 8
B01101111 // 9
};
void setup()
{
// Deklarasi pin segmen sebagai output
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
writeDot(0);
// Memanggil rutin untuk mematikan titik (dot)
}
// Rutin yang dijalankan saat dipanggil
void writeDot(byte dot)
{
digitalWrite(segmentDP, dot);
// Menulis sinyal digital ke segmen dot
}
// Rutin yang dijalankan saat dipanggil
void sevenSegWrite(byte digit)
{
byte pin = segmentA; // Gunakan pin segment A sebagai awal
int number = numbers[digit]; // Ambil nilai dari array berdasarkan digit
// Loop untuk menyalakan segmen
for (int bitIndex = 0; bitIndex < 7; bitIndex++) {
// Dijalankan saat settingan sebagai common anode
if (!commonCathode) {
digitalWrite(pin, bitRead(number, bitIndex));
// Menulis sinyal digital sesuai bit
}
// Dijalankan saat settingan sebagai common cathode
else {
digitalWrite(pin, 1 - bitRead(number, bitIndex)); // Menulis sinyal digital sesuai bit
}
++pin; // Pindah ke pin berikutnya
}
}
void loop()
{
// Perulangan dari 0 ke 9
for (byte count = 0; count < 10; count++) {
delay(1000); // Menunggu 1000 milidetik
sevenSegWrite(count);
// Memanggil rutin untuk menampilkan angka
}
delay(1000); // Menunggu 4000 milidetik
}