bab iii perancangan dan realisasi...
TRANSCRIPT
13
BAB III
PERANCANGAN DAN REALISASI ALAT
Pada bab ini akan dijelaskan secara rinci perancangan alat yang dibuat, dimulai
dari penjelasan blok diagram sistem dan penjelasan bagian-bagiannya, kegunaan, cara
kerja, dan perhitungannya. Perancangan sistem ini dibagi menjadi dua bagian utama,
yaitu perancangan perangkat keras dan perangkat lunak.
Perancangan dan realisasi sistem yang terdiri dari perangkat keras dan perangkat
lunak digabungkan dalam bentuk blok diagram yang ditunjukkan pada Gambar 3.1.
Bagian-bagian penyusun sistem penampil teks bergerak RGB merupakan bagian
perangkat kerasnya, sedangkan perangkat lunaknya ada pada program interface dan
program mikrokontroler.
Gambar 3.1. Blok diagram sistem keseluruhan.
Sistem yang dibuat merupakan penggabungan sistem kendali digital,
penyaklaran, dan komunikasi data serial komputer. Proses pengendalian baris dan
kolom dilakukan secara otomatis oleh sistem, pengguna cukup menulis teks pada
program interface, melakukan pengaturan animasi, memori penyimpanan, serta warna
teks dan latar belakang, kemudian mengirimkannya ke mikrokontroler lewat
komunikasi serial.
Sistem penampil teks bergerak RGB terhubung dengan komputer selain untuk
komunikasi serialnya, juga untuk hubungan catu dayanya. Sistem penampil teks
Komputer
Program Interface
Sistem Penampil Teks Bergerak RGB
Modul mikrokontroler
AVR ATmega32
Modul kendali kolom
Modul kendali baris
Modul penampil teks bergerak
Dot Matrix RGB 64 kolom x 7 baris
Koneksi catu daya
Koneksi serial
14
bergerak RGB mendapat catu daya dari power supply komputer, dengan tegangan
masukan tetap sebesar lima volt.
3.1. Perancangan dan Realisasi Perangkat Keras Sistem
Bagian ini menjelaskan tentang perancangan dan realisasi perangkat keras
sistem. Perangkat keras sistem terdiri dari:
1. Modul mikrokontroler
2. Modul pengendali baris dan kolom
3. Modul penampil teks bergerak
Mikrokontroler berfungsi sebagai pengendali utama dari modul pengendali
baris, pengendali kolom, dan komunikasi serial dengan komputer.
Modul pengendali baris berfungsi untuk mengatur baris LED yang akan
dihidupkan, karena dalam satu kondisi hanya diperbolehkan satu baris saja yang
dihidupkan. Proses pengendalian baris ini dilakukan secara bergantian dan berurutan.
Modul pengendali kolom berfungsi untuk mengatur kolom LED yang akan
dihidupkan, kondisinya tergantung pada nilai logika baris yang dihidupkan.
Modul penampil berfungsi sebagai media untuk mengatur baris LED yang akan
dihidupkan, sehingga dapat membentuk suatu teks dengan warna dan animasi tertentu,
berikut juga warna latar belakangnya.
3.1.1. Perancangan dan Realisasi Modul Mikrokontroler
Mikrokontroler digunakan sebagai kendali utama dari keseluruhan sistem.
Mikrokontroler terhubung dengan dua modul lain yang berfungsi sebagai pengendali
khusus, yaitu:
1. Modul kendali baris, dan
2. Modul kendali kolom
Mikrokontrol dan PC berkomunikasi secara serial dengan kecepatan 9600 bps.
Data yang dikirimkan dari PC akan melalui MAX232 terlebih dahulu untuk konversi
level tegangannya, kemudian diteruskan ke mikrokontroler. Mikrokontroler pada
perancangan diatur sebagai pengirim dan penerima, yaitu sebagai penerima data dari PC
untuk masukan data, dan sebagai pengirim untuk memberi informasi bahwa data sudah
15
lengkap diterima. Kaki RX-TX pada PC dan MAX232 dihubungkan secara bersilangan
untuk hubungan pengiriman dan penerimaan datanya, ditunjukkan pada Gambar 3.2.
Gambar 3.2. Komunikasi data antara PC dan ATmega32.
Pada perancanganada tiga PORT mikrokontroler yang digunakan sebagai
kendali utama untuk baris dan shift register yang secara bersesuaian ditunjukkan pada
Tabel 3.1.
Tabel 3.1. Koneksi baris dan shift register dengan PORT mikrokontroler.
PORT Urutan Fungsi Kendali
PORTA PORTA.6PORTA.0 K 7 Baris1 Baris K
PORTC PORTC.3PORTC.0 K Shift register untuk warna red
PORTC.7PORTC.4 K Shift register untuk warna blue
PORTB PORTB.3PORTB.0 K Shift register untuk warna green
Komunikasi serial yang digunakan mikrokontroler adalah level tegangan TTL,
sedangkan PC menggunakan level tegangan yang bersesuaian dengan protokol RS232.
Oleh sebab itu dibutuhkan suatu konverter tegangan untuk mengubah level tegangan
dari TTL ke RS232 dan sebaliknya, yaitu dengan menggunakan MAX232 produksi
Maxim. Untai mikrokontroler, dan koneksinya untuk reset dan serial secara lengkap
ditunjukkan pada Gambar 3.3.
TX
PC
RX
T1OUT T1IN
MAX232
R1IN R1OUT
TXD (PORTD.1)
ATmega32
RXD (PORTD.0)
16
Gambar 3.3. Untai mikrokontroler, reset, dan tx-rx serial.
3.1.2. Perancangan dan Realisasi Modul Pengendali Baris
Modul ini berfungsi sebagai kendali untuk baris, untuk memilih baris LED RGB
mana yang akan dihidupkan. Dot matrix RGB yang digunakan pada perancangan yang
menjadi kaki common-nya adalah anoda dari LED RGB, oleh sebab itu kaki common
dari tiap-tiap baris dihubungkan ke kendali untuk masing-masing baris secara
bersesuaian. Keluaran dari PORTA tidak dapat dihubungkan secara langsung ke kaki
common untuk masing-masing baris, karena port I/O untuk keluaran hanya dapat
memberikan arus sebesar 20mA, sehingga hanya dapat menghidupkan satu LED dengan
satu warna dasar saja. Jadi jika port I/O keluaran ingin digunakan untuk mengendalikan
piranti yang konsumsi arus maupun tegangannya lebih besar, maka harus ditambahkan
rangkaian pengendali untuk piranti tersebut. Rangkaian pengendali tambahan yang
digunakan pada perancangan adalah rangkaian penyaklaran, dengan menggunakan
MOSFET sebagai komponen utamanya.
Kelebihan MOSFET dibanding transistor adalah lebih mudah dalam
pengontrolannya, karena cukup memberikan bias tegangan saja. Selain itu penggunaan
MOSFET juga lebih hemat daya dibanding transistor, dan dapat mengalirkan arus yang
cukup besar. Untuk mengalirkan arus yang cukup besar dibutuhkan transistor yang
ukurannya semakin besar pula, namun jika yang digunakan adalah MOSFET maka
luasan rangkaian dapat diperkecil, karena ukuran MOSFET lebih kecil dari transistor
daya. Pada rangkaian, MOSFET difungsikan sebagai saklar elektronik, yaitu untuk
PB1PB2PB3PB4PB5/MOSIPB6/MISOPB7/SCKRSTVCCGNDXTAL1XTAL2PD0/RXDPD1/TXDPD2PD3PD4PD5PD6 PD7
PC0PC1PC2PC3PC4PC5PC6PC7
AVCCGNDAREFPA7PA6PA5PA4PA3PA2PA1PA0PB0
IC1
ATMega32
1
2
3
4
5
6
7
8
9
11
10
J1
D Connector 9
1
MA
X2
32
IC2
SW1SW2SW3SW4SW5SW6SW7
C2
C1
VCC
C3
C4
VCC
DUATIGARXTX
DUA
TIGA
VCCDT13CL3ST3OE3DT11CL1ST1OE1
DT12CL2ST2OE2
VCC
RXTX
RST RST
Y1XTAL
CX1
CX2
SR
CR
RR
VCC
12
JPSVCC
12345
JP2
123456
JP1
RLD
LED
17
melewatkan arus yang cukup dari sumber daya untuk menghidupkan LED untuk tiap
barisnya. Rangkaian kendali baris yang dirancang dapat dilihat pada Gambar 3.4.
Gambar 3.4. Rangkaian kendali untuk tiap baris.
Pada rangkaian terlihat bahwa antara Gate (G) dan Source (S) dihubungkan
dengan sebuah resistor 1 KΩ, resistor ini berfungsi sebagai R-pull up bagi masukan
MOSFET yaitu pada kaki Gate. Saat PORTA.n bernilai logika 0, maka terdapat
perbedaan tegangan antara kaki G dan S sebesar -5V, MOSFET akan berada dalam
kondisi triode sehingga dapat melewatkan arus dari catu daya ke baris yang
bersangkutan. Sebaliknya saat PORTA.n bernilai logika 1, maka antara kaki G dan S
tidak terdapat perbedaan tegangan, MOSFET akan berada dalam kondisi cut-off,
sehingga jalur antara catu daya dan baris yang bersangkutan menjadi terputus.
Dot matrix yang digunakan pada perancangan adalah tujuh baris, mulai dari
baris satu sampai tujuh, sehingga PORTA yang digunakan adalah PORTA.0 hingga
PORTA.6, yaitu bersesuaian dengan nilai n pada Gambar 3.4, dimulai dari nol hingga
enam. Bersesuaian dengan Gambar 3.4, PORTA.n digunakan untuk mengendalikan
MOSFET pada baris (n+1).
Komponen MOSFET yang digunakan dalam perancangan adalah HEXFET
Power MOSFET tipe P-channel dengan nama IRF9540 buatan International Rectifier
yang digunakan dalam perancangan karena memiliki beberapa keunggulan, antara lain:
1. Fast switching
2. Maximum drain current up to 23A
3. RDS(on) maks. = 0,117Ω, sehingga extremely efficient
Sedangkan kekurangan dari IRF9540 ditunjukkan pada lampiran B, yaitu
mengenai pengaruh suhu terhadap arus drain maksimum yang dapat dilewatkan. Dari
gambar terlihat bahwa pengaruh panas menyebabkan arus drain maksimum yang dapat
18
dilewatkan menjadi turun, faktor yang paling umum adalah paparan panas matahari,
khususnya apabila sistem penampil diletakkan di tempat yang terkena panas matahari
secara langsung, seperti yang ada pada lampu lalu lintas.
Arus maju puncak yang dilewatkan pada tiap warna dasar RGB berbeda-beda,
untuk R = 105 mA, G = 52,5 mA, dan B = 105 mA, penjelasan perolehan nilai-nilai ini
dapat dilihat pada penjelasan untuk persamaan (3.4). Jika ketiga LED dihidupkan
bersama, maka hubungan konsumsi arus yang dibutuhkan untuk satu dot dengan duty
cycle yang digunakan sesuai persamaan berikut:
( ) cycledutyIIII BGRdot . ++= ……………………………………….(3.1)
DenganIdot= arus satu dot, IR = arus LED red, IG = arus LED green, IB = arus LED
blue. Demikian nilai Idot untuk duty cycle satu per tujuh diperoleh:
( ) 71 . mA 105mA 5,52mA 105 ++=dotI
mA 5,37=dotI
Penampil teks bergerak RGB yang dibuat standarnya menggunakan delapan buah
dot matrix ukuran 7 baris x 8 kolom. Sehingga perhitungan total arus untuk satu baris
penampil sebanyak 64 dot dengan duty cycle satu per tujuh adalah:
dotdot II x 64 64 = …………………………………………………………...(3.2)
mA 537 x 64 64 ,I dot =
A 4,2 64 =dotI
Didapatkan nilai arus maksimum yang lewat pada MOSFET adalah 2,4 Ampere.
Dengan menggunakan nilai ini, maka disipasi daya maksimum yang terpakai oleh
MOSFET dengan duty cycle satu per tujuh dapat dicari dengan menggunakan
persamaan berikut:
(on)2 . DSRIP = ……………………………………………………………(3.3)
( ) Ω= 117,0.4,2 2AP
Watt674,0=P
Saat MOSFET dalam kondisi triode maka disipasi daya maksimum yang
terpakai adalah 0,674 Watt. Hal ini hanya berlaku apabila ketiga LED RGB dinyalakan
19
Q1MOSFET-PSW1
B1
VCC
Q2MOSFET-PSW2
B2
VCC
Q3MOSFET-PSW3
B3
VCC
Q4MOSFET-PSW4
B4
VCC
Q5MOSFET-PSW5
B5
VCC
Q6MOSFET-PSW6
B6
VCC
Q7MOSFET-PSW7
B7
VCC
RP1 RP2 RP3 RP4
RP5 RP6 RP7
bersama, selain daripada itu tentu nilainya lebih kecil dari 0,674 Watt. Perhitungan
dapat dilakukan sama seperti yang sebelumnya, yaitu menggunakan persamaan (3.1),
(3.2), dan (3.3).
Untai pengendali baris ada tujuh buah, yang masing-masing memiliki gambar
untai yang sama, hanya koneksinya pada port yang bersesuaian yang berbeda. Gambar
untai pengendali baris ditunjukkan pada Gambar 3.5.
Gambar 3.5.Untai pengendali baris dengan MOSFET tipe-P.
3.1.3. Perancangan dan Realisasi Modul Pengendali Kolom
Modul ini berfungsi sebagai kendali untuk kolom, untuk mengisi data kolom
LED RGB yang akan dihidupkan. Kaki common katoda untuk tiap warna dasar
dihubungkan ke kaki keluaran paralel shift register yang bersesuaian dengan masing-
masing warnanya melalui sebuah resistor. Pemasangan kaki common katoda untuk tiap
warna dasar bersesuaian dengan shift register-nya dapat dilihat pada Gambar 3.6.
Gambar 3.6. Koneksi tiap satu kolom LED RGB dan shift register pasangannya.
20
Keterangan S.REG pada Gambar 3.6 menunjuk pada pin keluaran shift register
yang digunakan. Komponen shift register yang digunakan pada perancangan adalah
shift register HCF4094BE 8 stage tipe MOS buatan STMicroelectronics yang
didalamnya telah dilengkapi store bus register dengan tri-state output. Keunggulan dari
chip ini adalah memiliki pin strobe dan output enable, sehingga dapat diatur kapan data
harus dikeluarkan ataupun ditahan, selain itu pada saat yang sama data yang baru dapat
langsung diisikan dan disimpan tanpa mengubah data lama yang sudah ada. Konfigurasi
kaki dari IC HCF4094BE dapat dilihat pada lampiran B bagian konfigurasi kaki.
Data masukan yang diterima dari 8-stage shift registerakan disimpan dalam 8-bit
storage register, kemudian baru diteruskan ke tri-state output. Masukan datanya berupa
serial dan hasil keluarannya berupa data paralel. Tabel kebenaran dari shift register
HCF4094BE ditunjukkan pada lampiran C bagian Tabel Kebenaran HCF4094BE, yang
digunakan sebagai pedoman pengendalian untuk masing-masing pin kendali pada shift
register.
Saat output enable bernilai logika low, maka output akan berada dalam kondisi
tri-state. Data pada tiap stage shift register akan dikirim ke storage register ketika
masukan strobe bernilai logika high, sebaliknya ketika masukan strobe bernilai logika
low, maka data yang tertampil adalah data terakhir yang ada pada storage register,
dengan syarat output enable-nya bernilai logika high. Pada saat output enable dan
strobe keduanya bernilai logika high, maka saat terjadi clock transisi dari low ke high,
data yang ada pada Qn adalah data yang ada pada Qn-1 sebelumnya dan data yang ada
pada stage tujuh dipindahkan ke Q7 dan keluaran Qs. Keluaran Qs ini dihubungkan ke
pin data shift register selanjutnya untuk warna yang sama, melalui hubungan kaskade
seperti yang ditunjukkan pada Gambar 3.7.
str = strobe, clk = clock, oe = output enable
Gambar 3.7. Hubungan kaskade HCF4094BE.
Resistor kolom 1 …………………..………………………………………………………………………………………………………….……… kolom ke 64
data
str
clk
oe
Parallel output
data Qs
Parallel output
data Qs
Parallel output
data Qs
8 8 8 8 8
21
Karena jumlah kolom yang digunakan ada 64, maka dibutuhkan delapan shift
register yang dihubungkan secara kaskade untuk masing-masing warna dasar. Pin
output enable, strobe, data, dan clock diatur lewat port keluaran mikrokontroler. Jadi
untuk tiap warna dasar R, G, dan B masing-masing membutuhkan empat port keluaran
mikrokontroler untuk pengaturan shift register-nya.
Koneksi kontrol shift register dengan PORT pada mikrokontrol berdasarkan
warna dasarnya secara bersesuaian ditunjukkan pada Tabel 3.2.
Tabel 3.2. Koneksi per bagian kontrol shift register dengan PORT mikrokontroler.
Kaki Kontrol Red Green Blue
Data PORTC.2 PORTB.2 PORTC.6
Clock PORTC.0 PORTB.0 PORTC.4
Strobe PORTC.1 PORTB.1 PORTC.5
Output enable PORTC.3 PORTB.3 PORTC.7
PORT pada mikrokontroler cukup mengeluarkan logika high mauupun low
untuk mengontrol kaki kontrol pada shift register. Keluaran data dari kaki kontrol
dianggap valid apabila memenuhi kriteria waktu tunda minimal yang ditunjukkan pada
lampiran C bagian Tabel Karakteristik Elektrik HCF4094BE.
Shift register yang digunakan untuk pengendali kolom ada 24 buah, yang terdiri
dari delapan shift register untuk warna red, delapan shift register untuk warna green,
dan delapan shift register untuk warna blue. Untai pengendali baris yang digunakan
ditunjukkan pada Gambar 3.8.
Gambar 3.8. Untai pengendali baris dengan menggunakan shift register.
1
SH
IFT
RE
GIS
TE
R
IC11
C11VCCST1DT11CL1
R11R12R13R14
OE1R15R16R17R18
DT21
1
SH
IFT
RE
GIS
TE
R
IC21
C21VCCST1DT21CL1
R21R22R23R24
OE1R25R26R27R28
DT31
1
SH
IFT
RE
GIS
TE
R
IC31
C31VCCST1DT31CL1
R31R32R33R34
OE1R35R36R37R38
DT41
1
SH
IFT
RE
GIS
TE
R
IC41
C41VCCST1DT41CL1
R41R42R43R44
OE1R45R46R47R48
DT51
1
SH
IFT
RE
GIS
TE
R
IC12
C12VCCST2DT12CL2
G11G12G13G14
OE2G15G16G17G18
DT22
1
SH
IFT
RE
GIS
TE
R
IC13
C13VCCST3DT13CL3
B11B12B13B14
OE3B15B16B17B18
DT23
1
SH
IFT
RE
GIS
TE
R
IC22
C22VCCST2DT22CL2
G21G22G23G24
OE2G25G26G27G28
DT32
1
SH
IFT
RE
GIS
TE
R
IC32
C32VCCST2DT32CL2
G31G32G33G34
OE2G35G36G37G38
DT42
1
SH
IFT
RE
GIS
TE
R
IC42
C42VCCST2DT42CL2
G41G42G43G44
OE2G45G46G47G48
DT52
1
SH
IFT
RE
GIS
TE
R
IC23
C23VCCST3DT23CL3
B21B22B23B24
OE3B25B26B27B28
DT33
1
SH
IFT
RE
GIS
TE
R
IC33
C33VCCST3DT33CL3
B31B32B33B34
OE3B35B36B37B38
DT43
1
SH
IFT
RE
GIS
TE
R
IC43
C43VCCST3DT43CL3
B41B42B43B44
OE3B45B46B47B48
DT53
RR11RR12RR13RR14
RR15RR16RR17RR18
RG11RG12RG13RG14
RB11RB12RB13RB14
RR21RR22RR23RR24
RG21RG22RG23RG24
RB21RB22RB23RB24
RR31RR32RR33RR34
RG31RG32RG33RG34
RB31RB32RB33RB34
RR41RR42RR43RR44
RG41RG42RG43RG44
RB41RB42RB43RB44
RG15RG16RG17RG18
RB15RB16RB17RB18
RR25RR26RR27RR28
RG25RG26RG27RG28
RB25RB26RB27RB28
RR35RR36RR37RR38
RG35RG36RG37RG38
RB35RB36RB37RB38
RR45RR46RR47RR48
RG45RG46RG47RG48
RB45RB46RB47RB48
22
Gambar 3.8 (Lanjutan). Untai pengendali baris dengan menggunakan shift register.
3.1.4. Perancangan dan Realisasi Modul Penampil Teks Bergerak
Modul ini terdiri dari delapan buah dot matrix RGB ukuran 7 baris x 8 kolom
yang dihubungkan secara kaskade seperti yang ditunjukkan pada Gambar 3.9, berfungsi
untuk menampilkan teks berikut warnanya dan warna latar belakang sesuai dengan
masukan data sebelumnya pada program interface. Namun jika diinginkan penampil
yang lebih panjang, modul ini dapat juga ditambah dengan melakukan expand hingga
lima belas dot matrix RGB. Panjang sebanyak delapan buah dot matrix RGB ini
disesuaikan dengan standar umum yang ada, yaitu kelipatan empat. Panjang minimal
yang digunakan pada perancangan adalah delapan dot matrix RGB, yaitu 64 kolom x 7
baris.
Gambar 3.9. Hubungan kaskade dot matrix RGB 64 kolom x 7 baris.
Pemilihan dot matrix RGB ini didasarkan pada latar belakang yang telah
dijelaskan sebelumnya. Satu piksel pada dot matrix RGB sesuai namanya terdiri dari
tiga warna dasar, yaitu red, green, dan blue ditunjukkan pada Gambar 3.10, yang dapat
dikombinasi sehingga dapat menghasilkan empat warna lain, yaitu cyan, magenta,
yellow, dan white. Pemilihan warna teks dan latar belakang didasarkan pada tujuh
pilihan warna yang tersedia tersebut.
1
SH
IFT
RE
GIS
TE
R
IC51
C51VCCST1DT51CL1
R51R52R53R54
OE1R55R56R57R58
DT61
1
SH
IFT
RE
GIS
TE
R
IC61
C61VCCST1DT61CL1
R61R62R63R64
OE1R65R66R67R68
DT71
1
SH
IFT
RE
GIS
TE
R
IC71
C71VCCST1DT71CL1
R71R72R73R74
OE1R75R76R77R78
DT81
1
SH
IFT
RE
GIS
TE
R
IC81
C81VCCST1DT81CL1
R81R82R83R84
OE1R85R86R87R88
DT91
1
SH
IFT
RE
GIS
TE
R
IC52
C52VCCST2DT52CL2
G51G52G53G54
OE2G55G56G57G58
DT62
1
SH
IFT
RE
GIS
TE
R
IC62
C62VCCST2DT62CL2
G61G62G63G64
OE2G65G66G67G68
DT72
1
SH
IFT
RE
GIS
TE
R
IC82
C82VCCST2DT82CL2
G81G82G83G84
OE2G85G86G87G88
DT92
1
SH
IFT
RE
GIS
TE
R
IC72
C72VCCST2DT72CL2
G71G72G73G74
OE2G75G76G77G78
DT82
1
SH
IFT
RE
GIS
TE
R
IC53
C53VCCST3DT53CL3
B51B52B53B54
OE3B55B56B57B58
DT63
1
SH
IFT
RE
GIS
TE
R
IC63
C63VCCST3DT63CL3
B61B62B63B64
OE3B65B66B67B68
DT73
1
SH
IFT
RE
GIS
TE
R
IC73
C73VCCST3DT73CL3
B71B72B73B74
OE3B75B76B77B78
DT83
1
SH
IFT
RE
GIS
TE
R
IC83
C83VCCST3DT83CL3
B81B82B83B84
OE3B85B86B87B88
DT93
RR51RR52RR53RR54
RG51RG52RG53RG54
RB51RB52RB53RB54
RR61RR62RR63RR64
RG61RG62RG63RG64
RB61RB62RB63RB64
RR71RR72RR73RR74
RG71RG72RG73RG74
RB71RB72RB73RB74
RR81RR82RR83RR84
RG81RG82RG83RG84
RB81RB82RB83RB84
RR55RR56RR57RR58
RG55RG56RG57RG58
RB55RB56RB57RB58
RR65RR66RR67RR68
RG65RG66RG67RG68
RB65RB66RB67RB68
RR75RR76RR77RR78
RG75RG76RG77RG78
RB75RB76RB77RB78
RR85RR86RR87RR88
RG85RG86RG87RG88
RB85RB86RB87RB88
Dot
matrixRGB(1)
7 baris x 8 kolom
8 Dot
matrixRGB(2)
7 baris x 8 kolom
………………………………………
Dot
matrixRGB(8)
7 baris x 8 kolom
23
Gambar 3.10. Komposisi satu piksel dot matrix RGB
Gambar untuk satu dot matrix RGB lebih lengkapnya dapat dilihat pada
lampiran D bagian Gambar Koneksi Pin. Sesuai dengan gambar tersebut, yang menjadi
kaki common pada LED yang berbeda warna untuk satu baris adalah kaki anoda, oleh
sebab itu kaki common anoda tersebut dihubungkan ke kendali baris, dan kaki common
katoda untuk satu kolom LED dengan warna yang sama dihubungkan ke kendali kolom
yang bersesuaian. Spesifikasi untuk dot matrix RGB yang digunakan dapat dilihat pada
lampiran D bagian Tabel Karakteristik Elektrik.
Arus yang dilewatkan untuk tiap warna dibuat berbeda, yaitu untuk
mendapatkan warna dengan intensitas yang sama untuk ketiga warna dasar di tiap piksel
yang digunakan, agar ketika ketiga warna dasar tersebut dinyalakan, diharapkan dapat
memiliki intensitas cahaya yang sama sehingga dapat dimunculkan warna white.
Perhitungan nilai resistansi yang digunakan untuk tiap kolom tiap warna mengacu pada
lampiran C bagian Grafik intensitas cahaya. Pada grafik lampiran terlihat bahwa dengan
menurunkan arus typical menjadi setengah, maka intensitas cahaya typical-nya juga
turun menjadi setengahnya. Hal ini hanya diterapkan untuk warna hijau, karena sesuai
datasheet dot matrix yang digunakan warna hijau memiliki intensitas cahaya dua kali
lebih besar dibanding dua warna yang lain. Nilai resistor yang dipasang untuk tiap
warna dasar dapat dihitung dan ditentukan dengan persamaan sebagai berikut:
( )warna
warnatyp
warna I
duty cycleVViR
.
.−=
………………………………..……(3.4)
( )Ohm 30 Ohm 52,29
mA 15
. V 9,15 7
1
≈=−=redR
( )Ohm 33 Ohm 38,32
mA 5,7
. V 3,35 7
1
≈=−=greenR
( )Ohm 18 Ohm 19,16
mA 15
. V 3,35 7
1
≈=−=blueR
24
Pada kenyataannya, nilai-nilai resistansi yang didapat dari perhitungan sulit
untuk didapatkan. Oleh sebab itu nilai yang ada pada sisi paling kanan digunakan
sebagai nilai pendekatan dari nilai-nilai yang didapat dari perhitungan.
Pada perancangan digunakan nilai duty cycle-nya adalah satu per tujuh, karena
metode yang digunakan adalah scanning baris, dengan jumlah baris yang digunakan ada
tujuh. Perhitungan arus maksimum yang digunakan untuk penampil teks bergerak sudah
dilakukan pada bagian pembahasan kendali baris persamaan (3.2), yaitu maksimal
sebesar 2,4 A. Nilai arus yang dibutuhkan tersebut tidak terlalu besar karena perangkat
keras yang dirancang menggunakan kendali yang dilakukan secara scanning, sehingga
meminimalkan arus yang digunakan.
Nilai daya maksimum yang digunakan oleh penampil dengan duty cycle satu per
tujuh dapat dihitung dengan menggunakan persamaan di bawah ini.
dotpenampil IVP 64.= ……………………………………………………….(3.5)
A 2,4 .V 5=penampilP
Watt12=penampilP
Penampil teks bergerak RGB yang digunakan disusun dari 8 buah dot matrix
RGB ukuran 7 baris x 8 kolom yang disusun memanjang ke samping, dan terhubung
dengan MOSFET dan resistor pada shift register yang bersesuaian. Untai penampil yang
digunakan ditunjukkan pada Gambar 3.11.
Gambar 3.11. Untai penampil teks bergerak RGB.
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM1
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM2
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM3
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM4
B7
B6
B5
G1
1G
12
G1
3G
14
G1
5G
16
G1
7G
18
B4
B3
B2
B1
B7
B6
B5
G2
1G
22
G2
3G
24
G2
5G
26
G2
7G
28
B4
B3
B2
B1
B7
B6
B5
G3
1G
32
G3
3G
34
G3
5G
36
G3
7G
38
B4
B3
B2
B1
B7
B6
B5
G4
1G
42
G4
3G
44
G4
5G
46
G4
7G
48
B4
B3
B2
B1
B1
1B
12
B1
3B
14
B1
5B
16
B1
7B
18
R1
1R
12
R1
3R
14
R1
5R
16
R1
7R
18
R2
8R
27
R2
6R
25
R2
4R
23
R2
2R
21
B2
8B
27
B2
6B
25
B2
4B
23
B2
2B
21
R3
8R
37
R3
6R
35
R3
4R
33
R3
2R
31
B3
8B
37
B3
6B
35
B3
4B
33
B3
2B
31
R4
8R
47
R4
6R
45
R4
4R
43
R4
2R
41
B4
8B
47
B4
6B
45
B4
4B
43
B4
2B
41
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM5
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM6
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM7
BK
1B
K2
BK
3B
K4
BK
5B
K6
BK
7B
K8
RK
1R
K2
RK
3R
K4
RK
5R
K6
RK
7R
K8
B1
B2
B3
B4
GK
8G
K7
GK
6G
K5
GK
4G
K3
GK
2G
K1
B5
B6
B7
B8
DOT MATRIX RGB 8x8
DM8
B7
B6
B5
G5
1G
52
G5
3G
54
G5
5G
56
G5
7G
58
B4
B3
B2
B1
B7
B6
B5
G6
1G
62
G6
3G
64
G6
5G
66
G6
7G
68
B4
B3
B2
B1
B7
B6
B5
G7
1G
72
G7
3G
74
G7
5G
76
G7
7G
78
B4
B3
B2
B1
B7
B6
B5
G8
1G
82
G8
3G
84
G8
5G
86
G8
7G
88
B4
B3
B2
B1
R5
8R
57
R5
6R
55
R5
4R
53
R5
2R
51
B5
8B
57
B5
6B
55
B5
4B
53
B5
2B
51
R8
8R
87
R8
6R
85
R8
4R
83
R8
2R
81
B8
8B
87
B8
6B
85
B8
4B
83
B8
2B
81
R7
8R
77
R7
6R
75
R7
4R
73
R7
2R
71
B7
8B
77
B7
6B
75
B7
4B
73
B7
2B
71
R6
8R
67
R6
6R
65
R6
4R
63
R6
2R
61
B6
8B
67
B6
6B
65
B6
4B
63
B6
2B
61
25
3.2. Perancangan dan Realisasi Perangkat Lunak Sistem
Bagian ini menjelaskan tentang perancangan dan realisasi perangkat lunak
sistem. Perangkat lunak sistem terdiri dari dua bagian, yaitu program interface dan
program mikrokontroler. Kedua program tersebut menggunakan bahasa pemrograman
yang berbeda, program interface dibuat dengan bahasa pemrograman Visual Basic,
sedangkan program mikrokontroler dibuat dengan bahasa pemrograman C.
Program interface digunakan oleh pengguna untuk menuliskan data teks yang
akan dikirimkan, mengatur pengaturan memori penyimpanan data, animasi, warna teks
dan latar belakang, dan pengiriman data keseluruhan.
Program mikrokontroler digunakan untuk mengendalikan proses pengendalian
baris dan kolom pada sistem penampil teks bergerak RGB, sehingga data teks yang
ditampilkan sesuai dengan yang diharapkan.
3.2.1. Perancangan dan Realisasi Program Interface
Program interface merupakan suatu program untuk tampilan yang digunakan
pengguna untuk menuliskan atau mengubah data teks, melakukan pengaturan memori
penyimpanan, animasi, warna teks dan latar belakang, dan mengirimkan keseluruhan
data. Proses kerja dari program interface mengacu pada diagram alir program yang
ditunjukkan pada Gambar 3.12.
Gambar 3.12. Diagram alir program interface.
Mulai
Inisialisasi tampilan awal
ubah teks, animasi,
warna teks dan latar belakang,
atau memori penyimpanan
Ya Tidak Ya
Selesai
Keluar kirim
Tidak
Ya
26
Program interface tidak harus aktif setiap saat, program ini hanya perlu
diaktifkan pada saat pengguna ingin melakukan perubahan data, yang meliputi teks,
warna, memori penyimpanan, dan animasi.
Setiap kali program interface diaktifkan atau dibuka, maka program akan
melakukan inisialisasi data dan tampilan awal sebagai standar pengaturan agar program
siap untuk digunakan. Setelah proses tersebut berlangsung pengguna dapat melakukan
pengubahan data teks, warna teks atau latar belakang, memori penyimpanan, maupun
animasi. Data yang sudah siap untuk dikirim akan terlebih dahulu dicek oleh program,
jika data valid maka data segera dikirimkan melalui komunikasi serial ke
mikrokontroler, sebaliknya bila data tidak valid maka pengguna diharuskan melakukan
pengaturan ulang. Data dianggap valid apabila data teks yang dimasukkan pengguna
tidak melebihi 50 karakter. Setelah proses pengiriman, pengguna dapat menutup
aplikasi maupun kembali melakukan pengaturan data. Berikut adalah tampilan program
interface yang dibuat, ditunjukkan pada Gambar 3.13.
Gambar 3.13. Tampilan program interface.
Gambar di atas merupakan tampilan ketika aplikasi mula-mula diaktifkan,
tombol kirim belum ada karena belum ada teks yang dituliskan pada kotak tempat
menulis teks. Penempatan tombol kirim berada tepat di bawah tombol keluar dan
Pengaturan
warna teks
Pengaturan
warna latar belakang
Pengaturan
memori
Pengaturan
animasi
Tempat
menulis teks
Sisa ruang kosong
karakter yang tersedia
Tombol
keluar
Contoh tampilan berdasar
pengaturan warna teks dan
latar belakang
27
textbox_TextChanged() label_remain= 50 – TextLength
If(TextLength == 0) hide(button_kirim)
Else show(button_kirim)
application_Open() list_textcolor_1 = “Red”
list_textcolor_2 = “Red” list_textcolor_3 = “Red” list_backcolor_1 = “No color” list_backcolor_2 = “No color” list_memory = “RAM” list_animation = “Shift Left” button_kirim = hide()
letaknya sejajar. Saat ada teks yang dituliskan pada kotak teks, maka tombol kirim akan
muncul. Tombol kirim akan kembali tidak terlihat apabila isi kotak teks kosong.
Tampilan mula-mula aplikasi dapat terjadi demikian karena pada saat awal program
melakukan inisialisasi untuk warna teks dan latar belakang, memori, dan animasi.
Pengaturan tersebut merupakan pengaturan awal standar, yang akan selalu
menghasilkan tampilan demikian setiap kali aplikasi diaktifkan. Program melakukan
inisialisasi tampilan setiap kali aplikasi diaktifkan dengan algoritma yang ditunjukkan
pada Kode 3.1.
Kode 3.1. Inisialisasi tampilan awal aktif.
Pada tampilan aplikasi terdapat sebuah label bertuliskan “Remain: 50”, ini
merupakan label penunjuk sisa karakter, yang fungsinya sebagai indikator bagi
pengguna untuk mengetahui sisa ruang kosong karakter yang tersedia. Proses pengisian
nilai sisa karakter ini berada didalam fungsi penerimaan data karakter pada kotak teks
yang ditunjukkan pada Kode 3.2.
Kode 3.2. Penerimaan data karakter pada kotak teks.
Setiap kali pengguna menuliskan suatu karakter maka nilai sisa karakter ini akan
berkurang satu, jadi sisa karakter ini dapat bernilai positif atau nol. Positif terjadi bila
28
jumlah data teks yang dituliskan kurang dari 50, nol jika jumlah data teks sama dengan
50. Terdapat proteksi saat nilai sisa karakter mencapai nol, kotak teks tidak dapat diisi
kembali, tujuannya adalah agar karakter yang dituliskan tidak melebihi 50 karakter.
Ada beberapa bagian yang nilainya telah dideklarasi terdahulu di bagian properti
sistem, antara lain adalah warna dari form aplikasi dan contoh tampilan, daftar isi dari
memori, animasi, warna teks, dan warna latar belakang. Terdapat tujuh pilihan memori
penyimpanan yang dapat digunakan, deklarasi isi dari daftar memori yang tersedia
ditunjukkan pada Tabel 3.3.
Tabel 3.3. Daftar isi pilihan memori penyimpanan.
Indeks Nama Memori 0 EEPROM 1 1 EEPROM 2 2 EEPROM 3 3 EEPROM 4 4 EEPROM 5 5 EEPROM 6 6 EEPROM 7 7 EEPROM 8 8 RAM
Setiap kali ada perubahan pada memori yang dipilih maka secara otomatis
program menyimpan indeks dari nama memori yang dipilih dari daftar, sehingga tidak
perlu ada fungsi pada kode program untuk mendeteksi memori yang dipilih oleh
pengguna. Lain halnya dengan daftar animasi yang pemilihannya terkait erat dengan
jumlah karakter dari teks yang dimasukkan. Terdapat lima pilihan animasi yang
tersedia, ditunjukkan pada Tabel 3.4.
Tabel 3.4. Daftar isi pilihan animasi dan persyaratan penggunaannya.
Indeks Nama Animasi Syarat Penggunaan
0 Shift Left Tersedia untuk jumlah karakter pada kotak teks dari 1 sampai 50
1 Static Tersedia apabila jumlah karakter yang dituliskan pada kotak teks tidak melebihi 10 karakter
2 Blink 3 Scroll Down 4 Show Horizontal
29
list_anim_Open() if(TextLength > 10)
hide(“Static”) hide(“Blink”) hide(“Scroll Down”) hide(“Show Horizontal”)
Else show(“Static”) show(“Blink”) show(“Scroll Down”) show(“Show Horizontal”)
Proses pendeteksian jumlah karakter yang ada pada kotak teks, terjadi setiap kali
saat pengguna membuka daftar animasi untuk memilih. Proses ini dilakukan dengan
mengikuti algoritma yang ditunjukkan pada Kode 3.3.
Kode 3.3. Pemilihan animasi pada daftar.
Setiap kali ada perubahan pada animasi yang dipilih maka secara otomatis
program menyimpan indeks dari nama animasi yang dipilih pada daftar. Fungsi yang
ada pada Kode 3.3 digunakan sebagai proteksi yang berkaitan dengan jumlah karakter
yang ada pada kotak teks, sesuai dengan persyaratan yang ada pada Tabel 3.4. Pada saat
pengguna membuka daftar animasi dan jumlah karakter pada saat itu kurang dari atau
sama dengan sepuluh maka nama animasi pada indeks satu sampai empat tetap
ditampilkan, sebaliknya bila jumlah karakter pada saat itu lebih besar dari sepuluh maka
nama animasi pada indeks satu sampai empat disembunyikan.
Pengaturan untuk warna teks dan latar belakang tampilan dilakukan dalam dua
tahapan, yaitu pemilihan banyaknya variasi warna dan jenis warna yang ingin
digunakan. Banyaknya variasi warna hanya satu saja yang dapat dipilih dari beberapa
pilihan yang tersedia, yaitu maksimal tiga untuk warna teks dan dua untuk warna latar
belakang. Jumlah daftar warna yang tertampil sesuai dengan pilihan banyaknya variasi
warna yang dipilih. Daftar warna diletakkan tepat di sebelah kanan pilihan jumlah
variasi warna, yang hanya akan tertampil pada saat pilihan jumlah variasi warna yang
ada tepat di sebelah kirinya dipilih, konsepnya sesuai dengan petunjuk yang ada pada
Tabel 3.5.
30
optionbutton_tc1_Select() show(list_tc1) hide(list_tc2) hide(list_tc3) optionbutton_tc2_Select() show(list_tc2) hide(list_tc3) optionbutton_tc3_Select() show(list_tc3) optionbutton_bc1_Select() show(list_bc1) hide(list_bc2) optionbutton_bc2_Select() show(list_bc2)
Tabel 3.5. Hubungan pemilihan jumlah variasi warna dan daftar yang tertampil.
Keperluan Jumlah Variasi Warna Daftar Warna yang Tertampil Warna teks 1 Teks 1
2 Teks 1 dan 2 3 Teks 1, 2, dan 3
Warna latar belakang 1 Latar belakang 1 2 Latar belakang 1 dan 2
Konsep yang ada pada Tabel 3.5 digunakan sebagai algoritma untuk mengatur
hubungan pemilihan jumlah variasi warna dan daftar yang ditampilkan. Penggunaan
algoritma ini jelas terlihat ketika pilihan banyaknya variasi warna dipilih yang
ditunjukkan pada Kode 3.4.
Kode 3.4. Penampilan daftar warna berdasarkan banyak variasi warna yang dipilih.
Pengubahan jenis warna yang dipilih dari daftar tidak akan berpengaruh
terhadap tampilan pilihan banyaknya variasi warna, karena daftar warna yang tertampil
bergantung pada banyaknya variasi warna yang dipilih. Pengubahan warna pada daftar
hanya akan berpengaruh terhadap warna dari gambar contoh tampilan yang ada pada
form, yaitu dengan mengatur nilai data RGB-nya dari 0 sampai 255. Dalam hal ini yang
dipakai adalah nilai minimal atau maksimalnya saja, yaitu 0 atau 255. Warna yang
ditampilkan pada gambar sesuai kombinasi nilai data RGB-nya ditunjukkan pada Tabel
3.6.
31
Tabel 3.6. Hubungan nilai data RGB dan warna yang ditampilkan.
Kombinasi Nilai Warna Warna yang Ditampilkan R G B
255 0 0 Red 0 255 0 Green 0 0 255 Blue 0 255 255 Cyan
255 0 255 Magenta 255 255 0 Yellow 255 255 255 White
0 0 0 No Color
Konsep yang digunakan pada daftar warna ini sama seperti yang digunakan pada
daftar memori penyimpanan dan animasi, program secara otomatis menyimpan nilai
indeks dari warna yang dipilih. Urutan indeks dari daftar warna ditunjukkan pada Tabel
3.7.
Tabel 3.7. Daftar warna berdasarkan urutan indeks.
Indeks Warna 0 Red 1 Green 2 Blue 3 Cyan 4 Magenta 5 Yellow 6 White 7 No Color
Data warna yang nantinya akan dikirimkan ke mikrokontroler tidak sama seperti
yang digunakan pada memori penyimpanan dan animasi. Data memori penyimpanan
dan animasi dikirimkan dalam bentuk karakter angka, sedangkan data warna dikirimkan
dalam bentuk karakter huruf. Oleh sebab itu pada program diperlukan suatu fungsi
untuk mengecek nilai indeks dari warna yang dipilih, kemudian menyimpannya dalam
bentuk karakter huruf yang bersesuaian dengan warnanya. Algoritma dari fungsi
tersebut ditunjukkan pada Kode 3.5.
32
cek_color() If (index_color == 0)
set_color(255,0,0) data_color = ‘r’ Else If(index_color == 1)
set_color(0,255,0) data_color = ‘g’ Else If(index_color == 2)
set_color(0,0,255) data_color = ‘b’ Else If(index_color == 3)
set_color(0,255,255) data_color = ‘c’ Else If(index_color == 4)
set_color(255,0,255) data_color = ‘m’ Else If(index_color == 5)
set_color(255,255,0) data_color = ‘y’ Else If(index_color == 6)
set_color(255,255,255) data_color = ‘w’
Send_Serial_Data(alldata) port_name = COM1
baudrate = 9600 parity = none data_bit = 8 stop_bit = 1 serial_port_send(alldata)
Kode 3.5. Hubungan indeks warna dan data warna.
Setelah semua pengaturan selesai dilakukan, pengguna hanya perlu menekan
tombol kirim untuk mengirimkan data ke mikrokontroler. Data dikirimkan dari
komputer ke mikrokontroler menggunakan komunikasi serial RS232. Untuk dapat
melakukan pengiriman data maka diperlukan fungsi untuk menangani inisialisasi port
dan pengiriman data, yang ditunjukkan pada Kode 3.6, sedangkan fungsi deteksi
penekanan tombol kirim ditunjukkan pada Kode 3.7.
Kode 3.6. Inisialisasi port serial dan pengiriman data.
33
button_send_Click()
Send_serial_data(alldata) Message(“Success”)
Kode 3.7. Deteksi penekanan tombol kirim.
Ketika tombol kirim ditekan maka fungsi pada Kode 3.7 akan dijalankan, data
akan dikirimkan dan terdapat pesan bahwa data pengaturan telah berhasil dikirimkan.
Pada Kode 3.7, “alldata” menunjuk pada keseluruhan data pengaturan yang akan
dikirimkan, yang terdiri dari indeks memori penyimpanan, indeks animasi, warna teks,
warna latar belakang, jumlah karakter teks, dan data teks. Format dari data serial yang
dikirimkan ditunjukkan pada Gambar 3.14.
Gambar 3.14. Format dari data yang dikirimkan secara serial.
Keseluruhan data yang dikirim dikemas dalam suatu tipe data string / array
karakter. Nilai dari indeks memori dan animasi adalah suatu karakter angka, nilai data
warna teks dan latar belakang adalah suatu karakter huruf, nilai dari jumlah karakter
adalah suatu karakter angka dengan array[8] menyimpan nilai puluhan, dan array[9]
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] ……………… dst.
Index memori
Data warna teks (tc1, tc2, dan tc3)
Data warna latar belakang (bc1, dan bc2)
Jumlah karakter (puluhan, dan satuan)
Data karakter
Index animasi
array data pengaturan Mikrokontroler
AVR
34
menyimpan nilai satuannya. Array yang berikutnya digunakan untuk menampung data
teks yang dimasukkan oleh pengguna, yang panjangnya dapat bervariasi, mulai dari 1
hingga 50. Jadi panjang array maksimal keseluruhan adalah 60 array, 10 array pertama
untuk data pengaturan, dan 50 array terakhir untuk data teks.
Tombol keluar pada tampilan digunakan untuk keluar dari aplikasi. Program
interface ini merupakan program tambahan, tidak mutlak harus ada namun
keberadaannya sangat membantu dan memudahkan pengguna dalam melakukan
pengaturan keseluruhan data. Program tidak perlu aktif setiap saat, hanya perlu
dijalankan saat pengguna ingin melakukan perubahan data dan mengirimkannya ke
memori penyimpanan yang diinginkan saja. Setelah proses pengaturan dan pengiriman
keseluruhan selesai dilakukan, program dapat dinon-aktifkan.
3.2.2. Perancangan dan Realisasi Program Mikrokontroler
Program mikrokontroler merupakan program utama dari keseluruhan sistem,
tidak seperti program interface yang keberadaanya hanya sebagai tambahan. Program
mikrokontroler merupakan program yang mutlak harus ada, karena program ini berisi
algoritma yang mengatur keseluruhan fungsi dan kendali dari sistem.
Data warna, memori, animasi, dan teks disimpan dalam memori yang ada di
dalam mikrokontroler, sebagian besar data disimpan dalam memori penyimpanan
primer dan sebagian lagi disimpan dalam memori penyimpanan sekunder. Memori
penyimpanan primer yang dimaksud adalah Electrically Erasable Programmable Read-
Only Memory (EEPROM), sedangkan memori penyimpanan sekunder yang dimaksud
adalah Random Access Memory (RAM). Memori penyimpanan primer digunakan
sebagai tempat penyimpanan permanen, yang akan tetap tersimpan meskipun catu daya
dimatikan. Sedangkan memori penyimpanan sekunder digunakan sebagai tempat
penyimpanan sementara, yang akan hilang ketika catu daya dimatikan.
Program mikrokontroler terdiri dari dua bagian, yaitu program utama dan
program interupsi. Program utama berisi kendali untuk baris dan pengiriman data untuk
kendali kolom, sedangkan program interupsi digunakan untuk menangani interupsi
pengiriman data dari komputer ke mikrokontroler, dan menyimpannya ke dalam
memori yang bersesuaian. Pengendalian baris lebih mudah dilakukan dibandingkan
pengendalian kolom, karena dalam satu kali proses dapat mengendalikan tujuh baris
secara bersamaan. Sedangkan pengendalian kolom membutuhkan teknik yang lebih
35
rumit, karena pengisian datanya dilakukan secara serial dan nilai tiap baris penampil
umumnya berbeda, sehingga pengubahannya lebih sering dilakukan. Proses kerja dari
program mikrokontroler mengacu pada diagram alir program yang ditunjukkan pada
Gambar 3.15.
Gambar 3.15.Diagram alir program mikrokontroler.
Setiap kali mikrokontroler dihidupkan, maka program akan selalu dimulai
dengan insialisasi variabel penyimpan data. Tujuan inisialisasi tersebut adalah
menyiapkan variabel-variabel yang akan digunakan program untuk proses perhitungan
dan penyimpanan data sementara. Proses kemudian dilanjutkan ke pembacaan data yang
tersimpan pada EEPROM, kemudian menyalin data tersebut ke array penampungan data
sementara. Algoritma pengisian data dari EEPROM ke array penampungan sementara
ditunjukkan pada Kode 3.8.
Mulai
Inisialisasi variabel
penyimpan data
Baca data dari EEPROM
dan salin ke array
Cek dan inisialisasi
index penyimpanan data
Proses tampil:
Teks EEPROM 1
Teks EEPROM 2
Teks EEPROM 3
Teks EEPROM 4
Teks EEPROM 5
Teks EEPROM 6
Teks EEPROM 7
Teks EEPROM 8
Teks RAM
Interupsi
terima data serial
Salin data ke
EEPROM atau RAM
36
eeprom_to_array(index)
puluhan = data_eeprom[index][8] satuan = data_eeprom[index][9] ulang = puluhan x 10 + satuan i=0 repeat(from i to (ulang + 9)) data_array[i] = data_eeprom[index][i]
i=i+1
init_specific_data() index_memori = data_array[1]
index_animasi = data_array[2] warna_teks[0] = data_array[3] warna_teks[1] = data_array[4] warna_teks[2] = data_array[5] warna_background[0] = data_array[6] warna_background[1] = data_array[7] jml_teks = data_array[8] x 10 + data_array[9] i=0 repeat(from i to (i < jml_teks)) data_teks[i]=data_array[i + 10]
i=i+1
Kode 3.8. Penyalinan data EEPROM ke array penampung sementara.
Setelah penyalinan data dari EEPROM ke array penampung sementara selesai
dilakukan, maka langkah selanjutnya adalah pemeriksaan dan inisialisasi indeks
penyimpan data. Pada langkah ini, data yang sudah ditampung dalam array penampung
sementara dipecah ke tempat penampung khusus, tujuannya adalah menempatkan data
pada tempat yang bersesuaian. Tempat penampung khusus tersebut mencakup data
warna teks dan latar belakang, indeks animasi dan memori penyimpanan, serta data
teks. Proses inisialisasi masing-masing tempat penyimpanan khusus tesebut ditunjukkan
pada Kode 3.9.
Kode 3.9. Penyalinan data array penampung sementara ke data penampung khusus.
Dengan menempatkan data pada tempat penyimpanan khusus yang bersesuaian,
maka akan memudahkan pembuat program dalam melakukan proses penyeleksian, dan
kendali untuk baris dan kolom. Langkah selanjutnya adalah mengisi nilai array
37
A b ….
Array data teks
MSB
Nilai satu elemen array penampil
Nilainya adalah 7F heksa
penampil, array penampil berbeda dengan array untuk data teks. Perbedaannya adalah
satu karakter pada data teks hanya membutuhkan satu elemen saja, sedangkan satu
karakter untuk penampil membutuhkan enam buah elemen yang masing-masing
nilainya elemennya dapat berbeda-beda. Satu elemen pada data teks direpresentasikan
pada penampil dalam enam buah elemen yang ditunjukkan pada Gambar 3.16.
Dibutuhkan enam elemen karena satu karakter penampil membutuhkan ruang tujuh
baris dan lima kolom, satu kolom tersisa digunakan untuk spasi.
Gambar 3.16. Representasi array data teks ke array penampil.
Tipe data untuk masing-masing elemen adalah karakter, namun yang membuat
berbeda adalah kegunaannya. Satu elemen array data teks digunakan untuk menyimpan
satu karakter, sedangkan enam elemen array penampil digunakan untuk menyimpan
nilai-nilai tampilan dari karakter tersebut. Contoh representasi dari array data teks ke
array penampil ditunjukkan pada Gambar 3.17. Nilai tiap elemen dapat dituliskan dalam
bentuk biner maupun heksadesimal.
Gambar 3.17. Contoh representasi isi array data teks ke array penampil.
Karena enam elemen array penampil digunakan untuk merepresentasikan satu
karakter pada data teks, maka array penampil membutuhkan tempat yang lebih besar
dibanding array data teks. Perbandingan kapasitas array data teks dibandingkan array
[0] [1] ….
Array data teks
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] …. [9] [10]
Array penampil Elemen untuk spasi Elemen untuk spasi
38
penampil adalah satu berbanding enam. Nilai Least Significant Bit (LSB) data pada
penampil dapat diisi dengan bebas karena tidak digunakan, namun untuk bit yang lain
tidak boleh terjadi kesalahan dalam pengisian nilainya. Nilai-nilai tampilan dari sebuah
karakter dan indeks dari dari daftar karakter digunakan program untuk pengisian data
tampilan, sehingga karakter yang tertampil sesuai dengan karakter yang tersimpan pada
data teks.
Setelah pengisian semua data selesai dilakukan, program berlanjut ke fungsi
penampilan, yaitu mencakup kendali untuk baris dan kendali kolom. Proses
pengendalian untuk penampil dilakukan dengan metode scanning baris. Pengendalian
baris lebih mudah dilakukan karena dapat dilakukan secara paralel, tujuh baris dapat
dikendalikan secara bersamaan. Sedangkan pengendalian kolom lebih sulit dilakukan
karena menggunakan teknik pengiriman data serial, dengan 64 buah kolom yang
dikendalikan untuk masing-masing warna dasar RGB.
Pengendalian baris mengikuti syarat bahwa dalam setiap kondisi hanya
diperbolehkan satu baris saja yang dalam kondisi hidup, dan baris yang lain harus dalam
kondisi mati. Proses ini dilakukan secara bergantian mulai dari baris satu hingga baris
tujuh, kemudian diulangi kembali mulai dari baris satu dan seterusnya, dengan proses
pengendalian yang diulang-ulang selama beberapa waktu lamanya. Karena masukan
kendali baris adalah aktif low, maka untuk menghidupkan suatu baris, pin yang
terhubung dengan baris tersebut harus bernilai logika nol, dan baris yang lain bernilai
logika satu. Kendali untuk baris mengikuti syarat yang ditunjukkan pada Tabel 3.8.
Tabel 3.8. Hubungan nilai PORT A dan baris yang aktif.
Nilai Biner PORT A(Kendali Baris) Baris yang Aktif 10111111 1 11011111 2 11101111 3 11110111 4 11111011 5 11111101 6 11111110 7
Meskipun proses pengendalian dilakukan secara scanning, namun nampak
bahwa ketujuh baris seolah-olah menyala secara bersamaan, hal ini dikarenakan
frekuensi scanning terjadi sangat cepat, sehingga mata manusia tidak dapat mendeteksi
39
selection_coloumn_data(line)
case 1 : if((data_tampil[index] AND 80H) == 80H) set_color(text(line))
else set_color(background(line))
case 2 : if((data_tampil[index] AND 40H) == 40H) set_color(text(line))
else set_color(background(line))
case 3 : if((data_tampil[index] AND 20H) == 20H) set_color(text(line))
else set_color(background(line))
case 4 : if((data_tampil[index] AND 10H) == 10H) set_color(text(line))
else set_color(background(line))
case 5 : if((data_tampil[index] AND 08H) == 08H) set_color(text(line))
else set_color(background(line))
case 6 : if((data_tampil[index] AND 04H) == 04H) set_color(text(line))
else set_color(background(line))
case 7 : if((data_tampil[index] AND 02H) == 02H) set_color(text(line))
else set_color(background(line))
perubahan tersebut. Pada saat awal program dijalankan, ketujuh baris harus dalam
kondisi mati, dan hanya diaktifkan saat akan dihidupkan saja. Proses pengisian data
kolom dilakukan dengan melakukan perbandingan antara data penampil dengan suatu
data menggunakan logika AND. Algoritma seleksi data kolom penampil ditunjukkan
pada Kode 3.10, tujuan menggunakan perbandingan logika AND adalah untuk
mengetahui nilai bit dari data yang akan dicek, karena nilai tiap bit data menunjukkan
kondisi lampu yang sebenarnya dari baris dan kolom penampil yang bersesuaian.
Kode 3.10. Prosedur seleksi data kolom penampil.
Prosedur set_color(color) digunakan untuk pengaturan data warna dari kolom
penampil. Nilai dari text(line) dan background(line) adalah suatu karakter yang
merepresentasikan data warna. Saat prosedur set_color(color) dipanggil, maka program
40
set_color(color)
case ‘r’ : data_r = 0, data_g = 1, data_b = 1 case ‘g’ : data_r = 1, data_g = 0, data_b = 1 case ‘b’ : data_r = 1, data_g = 1, data_b = 0 case ‘c’ : data_r = 1, data_g = 0, data_b = 0 case ‘m’ : data_r = 0, data_g = 1, data_b = 0 case ‘y’ : data_r = 0, data_g = 0, data_b = 1 case ‘w’ : data_r = 0, data_g = 1, data_b = 1
clock_r = 1, clock_g = 1, clock_b = 1
delay(1us) clock_r = 0, clock_g = 0, clock_b = 0 delay(1us)
akan menginisialisasi data warna dari teks maupun latar belakang yang bersesuaian.
Algoritma dari prosedur set_color(color) ditunjukkan pada Kode 3.11.
Kode 3.11. Prosedur pengisian data warna kolom penampil.
Sama seperti kendali baris, kendali kolom juga bersifat aktif low. Oleh sebab itu
untuk menghidupkan suatu warna maka nilai data warna tersebut harus bernilai logika
nol, dan data warna lain bernilai logika satu. Pengubahan nilai clock bertujuan untuk
menggeser nilai data sejauh satu bit, yaitu pada saat terjadi transisi nilai clock dari
logika nol ke satu. Pada program, pergeseran data warna untuk R, G, dan B dapat
dianggap dilakukan secara bersama-sama, karena selisih waktu terjadinya sangat
sedikit. Pengisian data untuk kolom dilakukan sebanyak 64 kali, yang berarti setiap kali
berganti kendali baris program harus melakukan pengisian data untuk kolom sebanyak
64 kali, dengan teknik pengisian data yang digeser, hal ini harus selalu dilakukan karena
nilai data-data kolom untuk tiap baris penampil tidaklah selalu sama. Beberapa nama
variabel yang digunakan sebagai kendali kolom dan hubungannya pin yang ada pada
mikrokontroler ditunjukkan pada Tabel 3.9.
41
Tabel 3.9. Hubungan nama variabel dengan pin kendali pada mikrokontroler.
Nama Variabel Pin Mikrokontroler clock_g PORTB.0 strobe_g PORTB.1 data_g PORTB.2 output_enable_g PORTB.3 clock_r PORTC.0 strobe_r PORTC.1 data_r PORTC.2 output_enable_r PORTC.3 clock_b PORTC.4 strobe_b PORTC.5 data_b PORTC.6 output_enable_b PORTC.7
Pin kendali output enable nilainya tidak diubah-ubah selama jalannya program,
pin ini bernilai logika satu pada saat inisialisasi awal variabel penyimpan data.
Sedangkan pin kendali strobe nilainya diubah-ubah saat berganti baris penampil. Saat
pin strobe bernilai logika satu, maka data keluaran shift register nilainya sama dengan
data yang ada pada buffer shift register. Sebaliknya saat pin strobe bernilai logika nol,
perubahan data pada buffer shift register tidak akan berpengaruh terhadap keluaran shift
register, atau dapat dikatakan bahwa keluaran shift register masih merupakan data lama.
Proses yang terjadi sebenarnya adalah data kolom yang dikirimkan ke shift register
tidak dikeluaran langsung oleh shift register, melainkan ditampung terlebih dahulu di
buffer shift register, pin strobe hanya perlu diaktifkan pada saat data sudah siap untuk
dikeluarkan. Pin strobe dinon-aktifkan hanya pada saat terjadi pengisian data ke buffer
shift register.
Teknik pengendalian dengan menggunakan scanning baris dilakukan dengan
mengisi nilai semua data kolom terlebih dahulu, setelah itu memilih baris yang
dihidupkan. Proses ini berlaku sama juga ketika akan menghidupkan baris yang lain.
Pengendalian baris dan kolom ditentukan dari animasi yang akan ditampilkan,
kombinasi pengaturan baris dan kolom yang berbeda-beda dapat menghasilkan tampilan
animasi yang berbeda-beda pula. Animasi yang berbeda menggunakan algoritma
penampilan yang berbeda pula. Algoritma untuk animasi indeks satu sampai empat pada
Tabel 3.4 lebih mudah dibuat dibanding animasi indeks nol, karena variasi lebih banyak
dilakukan pada pengaturan kendali baris. Sedangkan animasi pada indeks nol lebih
banyak memvariasikan nilai data pada kolom, nilai data yang ditampilkan berubah
42
vertical_scanning() i=0
Repeat(from i to 1000) fill_colomn(line_1), strobe_all(on)
PORTA = 10111111b, delay(100us) strobe_all(off)
fill_colomn(line_2), strobe_all(on) PORTA = 11011111b, delay(100us) strobe_all(off)
fill_colomn(line_3), strobe_all(on) PORTA = 11101111b, delay(100us) strobe_all(off)
fill_colomn(line_4), strobe_all(on) PORTA = 11110111b, delay(100us) strobe_all(off)
fill_colomn(line_5), strobe_all(on) PORTA = 11111011b, delay(100us) strobe_all(off)
fill_colomn(line_6), strobe_all(on) PORTA = 11111101b, delay(100us) strobe_all(off)
fill_colomn(line_7), strobe_all(on) PORTA = 11111110b, delay(100us) strobe_all(off)
PORTA = 11111111b
setiap kali teks pada tampilan bergeser. Prinsip pengendalian dengan menggunakan
teknik scanning baris secara umum menggunakan algoritma yang ditunjukkan pada
Kode 3.12.
Kode 3.12. Pengendalian dengan menggunakan teknik scanning baris.
Nilai PORT A yang ada di akhir prosedur vertical_scanning() digunakan untuk
menonaktifkan semua baris sehingga tidak ada penampil tersisa yang masih dalam
kondisi hidup. Arti dari strobe_all menunjukkan kondisi strobe untuk kendali tiap-tiap
shift register masing-masing warna dasar.