• Tidak ada hasil yang ditemukan

T1 612006046 BAB III

N/A
N/A
Protected

Academic year: 2017

Membagikan "T1 612006046 BAB III"

Copied!
30
0
0

Teks penuh

(1)

13

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

(2)

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

(3)

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.0 K PORTA.6 Baris1 K Baris7

PORTC

PORTC.3

PORTC.0 K Shift register untuk warna red

PORTC.7

PORTC.4 K Shift register untuk warna blue

PORTB PORTB.0 K PORTB.3 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

(4)

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

(5)

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

(6)

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:

(

I I I

)

dutycycle

Idot = R + G + B . ……….(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:

(

105mA+52,5mA+105mA

)

. 17

=

dot I

mA 5 , 37 = dot

I

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:

dot

dot I

I64 =64 x ………...(3.2)

mA 5 37 x 64

64 ,

I dot =

A 4 , 2 64dot =

I

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

.RDS I

P= ………(3.3)

(

)

= 2,4A 2.0,117 P

Watt 674 , 0 =

P

(7)

Q1 MOSFET-P

SW1 B1 VCC

Q2 MOSFET-P

SW2 B2 VCC

Q3 MOSFET-P

SW3 B3 VCC

Q4 MOSFET-P

SW4 B4 VCC

Q5 MOSFET-P

SW5 B5 VCC

Q6 MOSFET-P

SW6 B6 VCC

Q7 MOSFET-P

SW7 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.

(8)

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

(9)

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.

(10)

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.

(11)

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:

(12)

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.

dot 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.

B

DOT MATRIX RGB 8x8

DM1

DOT MATRIX RGB 8x8

DM2

DOT MATRIX RGB 8x8

DM3

DOT MATRIX RGB 8x8

DM4

DOT MATRIX RGB 8x8

DM5

DOT MATRIX RGB 8x8

DM6

DOT MATRIX RGB 8x8

DM7

DOT MATRIX RGB 8x8

(13)

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

(14)

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

(15)

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.

(16)

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

(17)

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.

(18)

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.

(19)

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

(20)

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.

(21)

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

(22)

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.

(23)

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

(24)

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.

(25)

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] ….

(26)

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

(27)

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.

(28)

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.

(29)

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.

(30)

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.

Gambar

Gambar 3.1. Blok diagram sistem keseluruhan.
Gambar 3.2. Komunikasi data antara PC dan ATmega32.
Gambar 3.3. Untai mikrokontroler, reset, dan  tx-rx serial.
Gambar 3.6. Koneksi tiap satu kolom LED RGB dan shift register pasangannya.
+7

Referensi

Garis besar

Dokumen terkait

(2) Rencana Induk Menara Telekomunikasi sebagaimana dimaksud pada ayat (1) berfungsi untuk mengarahkan, menjaga, dan menjamin agar pembangunan dan pengoperasian

Puji dan syukur kepada Tuhan Yang Maha Esa atas segala berkat dan rahmat yang diberikan oleh-Nya sehingga penelitian dan penulisan tugas akhir yang berjudul

Hasil penelitian ini dapat disimpulkan bahwa: (1) Pertimbangan para pihak untuk menyelesaikan sengketa batas tanah melalui jalur mediasi di Kantor Badan Pertanahan

Perbedaan hasil pelaporan keterangan kematian ditambah terdapatnya pelaporan data peristiwa kematian dan penyebab kematian yang tidak teratur dari pihak rumah sakit kepada

Dari berbagai tantangan dan aktivitas yang teridentifikasi, dapat disimpulkan bahwa BAT AN telah melakukan kegiatan yang berkaitan dengan pengelolaan pengetahuan nuklir, antara

Hasil penelitian dengan menggunakan analisis deskriptif menunjukkan bahwa responden, yang merupakan komunitas grup Indonesiaku |Trans7 di Facebook, menilai unsur – unsur

Bahan organik mempunyai peranan penting dalam pembentukan dan stabilitas agregat tanah dan penambahan sisa- sisa tanaman secara terus- menerus dapat meningkatkan kandungan

Madrasah Tsanawiyah, yang selanjutnya disingkat MTs adalah salah satu bentuk satuan pendidikan formal dalam binaan Menteri Agama yang menyelenggarakan pendidikan umum