7segment 4×1 prinsipnya sama dengan 7 segment 1×1 hanya saja terdapat 4 digit 7segment yang dapat diatur tampilannya. Antara digit 1 sampai digit 4 saling terhubung, apabila diberikan input misalnya angka 1 maka keempat 7segment akan menampilkan angka 1. Nah, agar tampilan masing-masing digit berbeda maka diperlukan teknik switching pada power masing-masing digit 7 segment. Bila ingin menampilkan angka 1234 maka langkahnya, tulis angka 1 lalu nyalakan digit 1, tulis angka 2 lalu nyalakan digit 2, tulis angka 3 lalu nyalakan digit 3, dan tulis angka 4 lalu nyalakan digit 4. Jika cara tersebut dilakukan dengan kecepatan tinggi maka hasilnya terlihat angka 1234 karena mata manusia tidak dapat menangkap perpindahan angka tersebut. 7seg 4×1 tersedia pada integrated output, dan dapat digunakan dengan menyambungkan pin-pin yang ada ke Arduino.
1. Kebutuhan
- Arduino UNO
- 7segment 4×1 common anoda
- kabel
- Breadboard
2. Skematik
Gambar 1. pin pada 7segment 4×1 common anoda
Gambar 2. Skematik isi LED dan konfigurasi pin pada 7 segment 4x1common anoda
Gambar 4. pemasangan 7segment 4×1 pada Arduino
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;
int digit1 = A0;
int digit2 = A1;
int digit3 = A2;
int digit4 = A3;
int num;
int cetak =0;
int cobo;
String inputString = “0000”;
// nilai awal string
boolean stringComplete = false;
//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()
{
num = 1234;
//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);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
writeDot(0);
// memanggil rutin untuk mematikan titik(dot)
Serial.begin(9600);
}
//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
}
}
//rutin tampilan 7segment dijalankan saat dipanggil
void dispNumber(int toDisplay)
{
#define DIGIT_ON LOW //set nyala digit saat mendapat sinyal low
#define DIGIT_OFF HIGH //set digit mati saat mendapat sinyal high
//perulangan dari 4 ke 1
for(int digit = 4; digit > 0; digit–)
{
//switching nyala digit
switch(digit)
{
case 1: //jika 1
digitalWrite(digit1, DIGIT_ON);//digit 1 nyala
cetak = toDisplay %10;
sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
toDisplay = toDisplay /10;
digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala
break; //keluar perulangan
case 2: //jika 2
digitalWrite(digit2, DIGIT_ON);//digit 2 nyala
cetak = toDisplay % 10;
sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
toDisplay = toDisplay/10;
digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala
break; //keluar perulangan
case 3: //jika 3
digitalWrite(digit3, DIGIT_ON);//digit 3 nyala
cetak = toDisplay %10;
sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
toDisplay = toDisplay/10;
digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala
break; //keluar perulangan
case 4: //jika 4
digitalWrite(digit4, DIGIT_ON);//digit 4 nyala
cetak = toDisplay%10;
sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
toDisplay = toDisplay/10;
digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala
digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala
break; //keluar perulangan
}
delay(2);
}
}
void loop(){
if (stringComplete)
{
cobo = inputString.toInt();
inputString = “”;
stringComplete = false;
}
dispNumber(cobo);//tampilkan nilai ke 7segment
}
void serialEvent()
{
while (Serial.available())
{
// membaca inputan serial
char inChar = (char)Serial.read();
// menambahkan ke input string
inputString += inChar;
// jika terdapat carriage return atau newline maka penambahan string selesai
if(inChar == ‘\n’)
{
stringComplete = true;
}
}
}
4. video