7segment adalah tampilan yang biasanya berupa susunan segmen yang dapat menyala membentuk bentuk angka atau huruf. Terdapat 7 segmen utama yang berisi LED sehingga setiap segmen dapat menyala secara individual. 7 segmen ada dua macam yaitu common katoda dan common anoda. Yang berbeda arah LEDnya. Common katoda terhubung ke gnd untuk dapat menyalakan LEDnya, sedangkan common anoda terhubung ke vcc untuk dapat menyalakan LEDnya. 7seg 1×1 tersedia pada integrated output dan dapat digunakan dengan menghubungkan pin segment dan pin commonnya.
1. Kebutuhan
- Arduino UNO
- (2) 220-ohm resistor
- 7segment 1×1 common anoda
- kabel
- Breadboard
2. Skematik
Gambar 12.1. segmen pada 7segment common anoda, beserta urutan pinnya.
Gambar 12.2. pemasangan 7segment pada pin Arduino, disertai beberapa resistor agar LED tidak kelebihan tegangan.
3. Program
// rubah nilai 0 menjadi 1 untuk 7segment common katoda
#define commonCathode 1
// 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 7segmen
byte numbers[10] =
{
B11000000, // 0
B11111001, // 1
B10100100, // 2
B10110000, // 3
B10011001, // 4
B10010010, // 5
B10000010, // 6
B11111000, // 7
B10000000, // 8
B10010000 // 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 = 2; //deklarasi pin
int number = numbers[digit]; //deklarasi nilai number sebagai nilai variabel array
//perulangan dari 0 sampai 6(membaca biner untuk nyala 7segmen)
for(int bitIndex = 0; bitIndex < 7; bitIndex++){
//dijalankan saat setingan sebagai common katoda
if(commonCathode)
{
digitalWrite(pin, 1–bitRead(number, bitIndex));
//menulis sinyal digital sesuai biner
}
//dijalankan saat setingan sebagai common anoda
else
{
digitalWrite(pin, bitRead(number, bitIndex)); //menulis sinyal digital sesuai biner
}
++pin;//menambah nilai pin
}
}
void loop()
{
//perulangan dari 10 ke 1
for(byte count = 10; count > 0; —count)
{
delay(1000);
//menunggu 1000 milidetik
sevenSegWrite(count – 1);
//memanggil rutin untuk menampilkan angka
}
delay(4000); //menunggu 4000 milidetik
}
4. Video