
Sambil menunggu kedatangan modul radio pesanan yang belum juga tiba, saya pun mengisi waktu untuk mempelajari display 7-segment. Mempelajari 7-segment ini sekaligus jalur untuk mempelajari dot matrix yang lebih kompleks pin-nya. (*mestinya saya belajarnya sejak jaman kuliah elektro dulu ya? Hiks…*)
Prinsip kerja 7-segment sama dengan dot matrix karena basisnya sama, yaitu LED. Hanya saja 7-segment sudah memiliki susunan LED yang spesifik. Sedangkan dot matrix LED-nya disusun dalam bentuk matrix 5×7 atau pun 8×8. Display dot matrix lebih fleksibel karena dengan penyalaan LED secara spesifik bisa membentuk tampilan terpola, termasuk angka, huruf mau pun pola-pola sederhana.
Seperti biasa, yang dilakukan pertama kali adalah mempelajari datasheet. Kita harus mencari datasheet yang sesuai dengan kode komponen yang kita punya. Karena walau pun sama-sama seven segment, tapi bisa jadi konfigurasinya beda, demikian pula susunan pin-nya.
Seven segment yang saya beli memiliki tampilan 4 digit dan berkode 5461BH, dari sinilah perburuan datasheet dilakukan. Syukurlah ketemu, bisa didownload di: TOF-5461BH-B.pdf.

Nampak bahwa segment dikodekan dengan A, B, C, D, E, F, G, DP (titik). Sedangkan di bawah ini adalah gambar skematik-nya. Tampak bahwa segment segment saya ini punya 12 pin dan termasuk common anode.

Sebelum melakukan pengkabelan, saya mengetest pin-pin dulu sekalian mengecek apakah sesuai dengan datasheet atau tidak. Ternyata sesuai datasheet, hore…
Saya menghubungkan seven segment ini ke Arduino Nano andalan. Di gambar pertama adalah tampilannya dengan kode test yang saya buat secara sederhana. Saya sengaja tidak menggunakan library yang tersedia utk seven segment karena saya ingin mempelajari 7-segment ini secara detail.
Sayangnya 7-segment saya bukan didesain spesifik untuk tampilan jam karena tidak memiliki LED titik-dua di tengah. Namun di code saya tambahkan blink di LED titik (koma utk desimal) digit ke 2. Maksudnya adalah supaya jika 7-segment ini saya gunakan untuk display jam, blink ini bisa mensimulasikan detik.
Di bawah ini adalah source code-nya. Asyik deh belajar 7-segment. Sedikit lagi melangkah ke dot matrix. Tentu perlu belajar cascade shift register, terutama jika untuk ngoprek beberapa panel 8×8 sekaligus. Ayo belajar bareng…
/* Emanuel Setio Dewo, setio.dewo@gmail.com 02 Nov 2012 Bermain dengan 7-segment */ int jeda = 1000; long sblm = 0; boolean titik = true; int ttk = 0; int counter = 0; // Digit control byte pin_digit[] = { 0, 1, 2, 3 }; // Segment byte pin_segment[] = { 4, 5, 6, 7, 8, 9, 10, 11 }; byte angka[] = { 1, 1, 1, 1, 1, 1, 0, 0, // 0 0, 1, 1, 0, 0, 0, 0, 0, // 1 1, 1, 0, 1, 1, 0, 1, 0, // 2 1, 1, 1, 1, 0, 0, 1, 0, // 3 0, 1, 1, 0, 0, 1, 1, 0, // 4 1, 0, 1, 1, 0, 1, 1, 0, // 5 1, 0, 1, 1, 1, 1, 1, 0, // 6 1, 1, 1, 0, 0, 0, 0, 0, // 7 1, 1, 1, 1, 1, 1, 1, 0, // 8 1, 1, 1, 1, 0, 1, 1, 0, // 9 1, 1, 1, 1, 1, 0, 1, 0, // a 0, 0, 1, 1, 1, 1, 1, 0, // b 0, 0, 0, 1, 1, 0, 1, 0, // c 0, 1, 1, 1, 1, 0, 1, 0, // d 1, 1, 0, 1, 1, 1, 1, 0, // e 1, 0, 0, 0, 1, 1, 1, 0, // f }; void setup() { for (int i=0; i<=12; i++) pinMode(i, OUTPUT); test_7(); // set all digit off for (int i=0; i<=4; i++) { digitalWrite(pin_digit[i], LOW); hapus(); } } void test_7() { for (int j = 0; j < 4; j++) { for (int i = 0; i < 16; i++) { tulis(j, i); delay(50); } } } void loop() { if (millis() - sblm > jeda) { sblm = millis(); counter++; } if (counter > 9999) counter = 0; tuliskan(counter); } void tuliskan(int a) { int sisa = a; int t; for (int i=3; i>=0; i--) { t = sisa % 10; sisa = sisa / 10; tulis (i, t); } } void tulis(int d, int a) { hapus(); digitalWrite(pin_digit[d], HIGH); // nyalakan int idx = a * 8; for (int i=0; i<8; i++) { if (angka[idx+i] == 1) digitalWrite(pin_segment[i], LOW); else digitalWrite(pin_segment[i], HIGH); } if (ttk != counter) { ttk = counter; if (titik == true) titik = false; else titik = true; } if (d == 1) { if (titik) { digitalWrite(pin_segment[7], HIGH); } else { digitalWrite(pin_segment[7], LOW); } } delayMicroseconds(100); //delay(1); } void hapus() { for (int i=0; i<4; i++) digitalWrite(pin_digit[i], LOW); for (int i=0; i<8; i++) digitalWrite(pin_segment[i], HIGH); }
[…] ← Bermain Dengan Seven Segment […]
[…] senang sekali karena saya dapat 2 paket, yaitu pesanan breakout radio dari Sparkfun (*yang sudah saya tunggu-tunggu sampai jenggoten*) dan paket sample dari Maxim Integrated (d/h Dallas Semiconductor). Ini dia […]
[…] membuat Jambredbrod, saya masih mengandalkan Arduino Nano. Untuk display saya menggunakan 7-segment yang praktis. Setelah semua komponen dipersiapkan, target pembuatan Jambredbrod ini ditarget kurang […]
[…] kata, Jambredbrod berganti nama menjadi Jam 7 alias jam digital menggunakan 7-segment. Karena saya ingin membuat Jam 7 ini permanen, saya menggunakan embedded Arduino dengan ATmega328 […]
Mas klu matrix 16×64 ICInya pakai type ap mas..yg terhubung led…?mohon bantuanya…
syalom saudaraku aku mau nanya, di postingan ada tertulis anda memesan pembuatan pcb kalau boleh tahu di mana tempat pembuatanya. atau tempat utk memesan pcb, klu lihat seperti yg ada di postingan seperti nya bagus. saya juga sedang belajar pemrograman mikrokontroler jadi pingin juga memesan pembuatan pcb.selama ini saya coba bikin sendiri tapi kurang rapi.Trims
Bisa pesan di: http://multikarya.com/