Pada tulisan kali ini kita akan mensimulasikan rangkaian dan program untuk menampilkan angka menggunakan seven segment 4 digit dengan Arduino. Seperti sebelumnya pada percobaan ini akan menggunakan proteus untuk simulasinya . Seven segment yang digunakan pada simulasi kali ini berjenis Common Cathode.
Untuk menampilkan beberapa seven segment dalam waktu bersamaan menggunakan prinsip scanning. Scanning digunakan untuk membuat penggunaan port output lebih sedikit. Dimana segment-segment (a,b,c,d,e,f,g dan dot) dari tiap segment dirangkai pada port output yang sama. Sedangkan pin common nya pada port yang berbeda-beda. Bisa dibayangkan jika tidak menggunakan sistem scanning maka akan membutuhkan port output yang sangat banyak.
Cara kerja
Cara kerja dari sistem scanning yang dimaksud adalah dengan mengatur nyala matinya seven segment melalui pin common. Sehingga seven segment akan nyala bergiliran dan menampilkan angka sesuai urutannya. Maksudnya ketika menampilkan angka ribuan misalnya maka hanya pin common pada digit ribuan saja yang diberi tegangan(dinyalakan) sedangkan yang lainnya mati, sehingga hanya digit ribuan yang menampilkan angka. Begitu seterusnya secara bergiliran. Dengan memberikan delay (penundaan) yang pendek hanya beberapa mili detik, maka mata kita melihatnya seolah olah nyala bersamaan.
Rangkaian
Untuk percobaan nya kita buat rangkaian simulasi seperti yang terlihat pada gambar berikut:

Program
Untuk lebih memudahkan pembuatan programnya kita buat konversi dari biner ke hexa nya, seperti tabel berikut:

Karena menggunakan pin 0-7 untuk segment nya dimana pin itu merupakan PORT D. Maka kita membuat PORT D tersebut sebagai output dengan code DDRD=0xFF;
Sedangkan pin common nya diletakan pada pin 8-11, maka kita set sebagai berikut:
DDRB=B00001111;
Untuk membuat program nya kita gunakan software arduino IDE. Program selengkapnya sebagai berikut:
void setup() { DDRD=0xFF; //pin 0-7 sebagai output (a,b,c,d,e,f,g,dot) DDRB=B00001111; //pin 8-11 sebagai output (common) } void loop() { int nomor; nomor=1945; //angka yang akan ditampilkan int ribuan=nomor/1000; int ratusan=nomor/100; ratusan=ratusan %10; int puluhan=nomor/10; puluhan=puluhan%10; int satuan=nomor%10; for(int i=0; i<500;i++){ //lama tampilan //scanning angkaSatuan(); segment(satuan); //memanggil fungsi segment untuk menampilkan angka satuan delay(4); angkaPuluhan(); segment(puluhan); delay(4); angkaRatusan(); segment(ratusan); delay(4); angkaRibuan(); segment(ribuan); delay(4);} } //FUNGSI SEVEN SEGMENT void segment(int angka){ //0 if (angka==0){ PORTD=0x3F;} //1 if (angka==1){ PORTD=0x6;} // 2 if (angka==2){ PORTD=0x5B;} //3 if (angka==3){ PORTD=0x4F;} //4 if (angka==4){ PORTD=0x66;} //5 if (angka==5){ PORTD=0x6D; } //6 if (angka==6){ PORTD=0x7D; } //7 if (angka==7){ PORTD=0x7; } //8 if (angka==8){ PORTD=0x7F; } //9 if (angka==9){ PORTD=0x6F; } } //scanning common void angkaSatuan(){ PORTB=B0000111; } void angkaPuluhan(){ PORTB=B0001011; } void angkaRatusan(){ PORTB=B0001101; } void angkaRibuan(){ PORTB=B0001110; }
Hasil
Kemudian kita simulasikan untuk menampilkan angka 1234, maka hasilnya sebagai berikut:

Selanjutnya kita coba menampilkan angka 1945, hasilnya sebagai berikut:

Berikut ini adalah video simulasi dari up counter dengan 4 digit seven segment dan arduino:
Sekian tulisan tentang seven segment 4 digit kali ini, terimakasih telah membaca dan semoga bermanfaat.
Biar bisa counting up programnya gimana Bang?
bisa pake looping for, misal untuk 0-99:
for(int i=0;i<99;i++){
tampilkan(i); //panggil fungsi tampilkan i ke 7seg
}