TRAFFIC LIGHT SIMULATOR - · PDF fileDalam bab ini penulis akan menjelaskan tentang sistem...
Transcript of TRAFFIC LIGHT SIMULATOR - · PDF fileDalam bab ini penulis akan menjelaskan tentang sistem...
TRAFFIC LIGHT SIMULATOR
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Dalam Menyelesaikan Pendidikan Diploma III
Program Studi Teknik Komputer
Oleh :
IWAN KURNIAWAN
0450170104021
POLITEKNIK GARUDA NUSANTARA CIMAHIBANDUNG
2007
LEMBAR PENGESAHAN
Tugas Akhir Yang Berjudul
Traffic Light Simulator
Disusun Oleh : IWAN KURNIAWAN
No.Mhs/NIM : 0450170104021
Jurusan : Teknik Komputyer
Diajukan Sebagai Salah Satu Syarat
Untuk Kelulusan Dalam Menyelesaikan Pendidikan Diploma III
Program Studi Teknik Komputer
Menyetujui
Dosen Pembimbing
Denny Daniawan
Mengetahui
Direktur Utama Kepala Akademik
Ir. Irwanto S., MBA Purnama S., ST
ABSTRAKSI
Pada dasarnya komputer merupakan suatu rangkaian digital yang hanya mengenal
adanya angka 0 dan 1. Angka 0 merupakan perlambangan arus/tegangan listrik rendah
dan 1 merupakan perlambangan arus/tegangan listrik timggi. Angka 0 juga dapat
diartikan sebagai keadaan off dan angka 1 adalah keadaan on. Suatu program pada
dasarnya merupakan kumpulan dari angka 0 dan angka 1 yang dapat dimengerti oleh
komputer. Kumpulan angka 0 dan angka 1 tersebut akan memerintahkan komputer untuk
melakukan sesuatu. Pemrograman dengan cara memberikan angka 0 dan angka 1 secara
langsung ini disebut bahasa mesin.
Bahasa Pascal, Basic, Delphi, dan lainnya tidak lagi merupakan bahasa yang
menggunakan angka 0 dan angka 1 dalam pemrogramannya, tetapi menggunakan
perintah-perintah tertentu yang merupakan kumpulan dari banyak angka 0 dan 1. Dengan
demikian kita tidak langsung menggunakan bahasa mesin.
Penggabungan beberapa angka 0 dan 1 tersebut secara otomatis memudahkan
suatu program komputer. Bahasa Pascal maupun bahasa Delphi merupakan bahasa
pemrograman tingkat tinggi yang dapat diprogram untuk berkomunikasi dengan alat luar.
Alat luar yang dimaksud bisa berupa alat yang sudah tersedia dipasaran seperti printer,
modem, keyboard dll, bisa juga berupa alat yang kita buat sendiri seperti Traffic Light
Mini, Prototipe Robot, Led dan lain-lain.
KATA PENGANTAR
Puji dan syukur penulis panjatkan kehadirat Allah SWT atas segala nikmat dan
kesehatan yang telah diberikan sehingga Tugas Akhir ini dapat diselesaikan dengan tepat
waktu. Laporan Tugas Akhir ini khusus membahas tentang pengendalian traffic light
yang dikendalikan menggunakan bahasa pemrograman Delphi.
Laporan Tugas Akhir ini berisi tentang segala sesuatu yang berhubungan dengan
traffic light yang dikendalikan oleh sebuah bahasa pemrograman yaitu Delphi.
Diharapkan Laporan ini dapat berguna untuk para Mahasiswa Teknik Komputer
dan para pembaca yang hobi elektronika sehingga laporan ini dapat dijadikan sebagai
suatu pegangan atau referensi apabila suatu saat nanti ada yang mau mencoba membuat
suatu alat yang dikendalikan oleh pemrograman dikomputer.
Pada kesempatam ini penulis mengucapkan banyak terima kasih kepada seluruh
pihak yang telah turut membantu sehingga Laporan Tugas Akhir ini dapat terselesaikan
tepat waktu.
Penulis
IWAN KURNIAWAN
BAB I
PENDAHULUAN
1.1Latar Belakang Masalah
Penulis mengambil judul Traffic Light Simulator dilatarbelakangi oleh masih
sedikitnya penelitian-penelitian yang membahas tentang masalah tersebut. Ketika penulis
melakukan surfing atau menjelajahi internet, penulis seringkali menjumpai milis atau
mailing list yang banyak menanyakan perihal pembuatan Traffic Light Simulator
tersebut.
Kemudian untuk ilmu yang mendukung penulis mengambil judul diatas adalah
bahwa penulis telah memperoleh pengetahuan tentang dasar-dasar ilmu elektro dan juga
pemrograman yang didapatkan selama penulis mengikuti perkuliahan dari semester I
sampai dengan semester VI.
1.2Identifikasi Masalah
Masalah yang akan penulis bahas adalah mengenai cara kerja Traffic Light
Simulator. Adapun masalah yang akan dibahas adalah sebagai berikut :
• Pembuatan skema
• Jalur sambungan antar komponen elektronika,
• Cara kerja
• Koneksi ke komputer
• Pemrograman dikomputer
• Hasil yang diperoleh.
6
Pada penelitian ini penulis akan menggunakan sebanyak 6 buah rangkaian
yang disatukan dilengkapi dengan dua belas buah lampu.
1.3Pembatasan Masalah
Untuk masalah yang diteliti, penulis akan membatasinya hanya seputar aplikasi
yang akan dihasilkan dengan menggunakan bahasa pemrograman Delphi sebagai
pengontrol dari kerja rangkaian yang juga dibuat sendiri hingga mencapai hasil
yang akan diperoleh.
1.4 Maksud dan Tujuan
Adapun maksud penulis mengambil judul Traffic Light Simulator adalah sebagai
syarat dalam mengikuti ujian sidang juga untuk semakin menambah pengalaman dari
penulis pribadi perihal rangkaian elektronika beserta koneksinya ke komputer.
Sedangkan tujuan yang ingin didapat adalah mengembangkan dan menambah
suatu ilmu pengetahuan tentang suatu rangkaian elektro yang bekerja berdasarkan
perintah dari komputer.
1.5Metode Penelitian
Penelitian yang penulis lakukan adalah dengan membuat sendiri contoh dari
rangkaian elektronik, maka dalam hal ini penulis mencoba membuat sendiri rangkaian
Traffic Light Simulator dengan memanfaatkan beberapa macam buku panduan.
Laporan penulis susun bagian demi bagian untuk mempermudah pengambilan
langkah-langkah yang diperlukan. Sedangkan mengenai masalah atau kesulitan yang
timbul selama penulis melakukan penelitian, ada beberapa masalah yang penulis temui
7
ketika mempraktekkan secara langsung alat yang penulis buat terutama masalah koneksi
dan pemrograman di komputer.
Adapun metode lain yang penulis lakukan adalah dengan cara :
1.Observasi, yaitu melakukan percobaan langsung dengan cara membuat sendiri
rangkaian yang akan diteliti.
2.Studi Pustaka, yaitu dengan cara mempelajari berbagai macam buku dan majalah
atau tabloid yang banyak membahas seputar masalah yang berhubungan dengan
penelitian yang sedang penulis lakukan.
3.Tukar Pikiran, yaitu dengan saling bertukar pikiran dengan sesama teman-teman
mahasiswa perihal penelitian yang tengah dilaksanakan.
1.6. Sistematika Penulisan
Untuk lebih mudah mengerti isi serta tujuan dari pembahasan tugas akhir ini,
maka dapat diuraikan pembahasan sebagai berikut :
BAB I : Pendahuluan
Bab ini berisi tentang latar belakang masalah, identifikasi
masalah, maksud dan tujuan metode penelitian, dan sistematika
penulisan,.
BAB II: Pengertian
Dalam bab ini penulis akan menjelaskan secara teoritis mengenai
pengertian-pengertian dan konsep Traffic Light.
BAB III : Analisis Sistem
Dalam bab ini penulis akan menjelaskan tentang sistem yang
sedang dianalisa.
8
BAB IV : Implementasi
Bab ini berisi tentang perancangan dalam membangun suatu
program, kemudian tahap instalasi sampai dengan testing yang
dilakukan.
BAB V : Kesimpulan dan Saran
Dalam bab ini penulis mencoba memberikan kesimpulan-
kesimpulan dari masalah yang telah dibahas sehingga, dari
kesimpulan tersebut penulis dapat mengambil suatu pelajaran
penting tentang cara kerja suatu alat yang di kendalikan oleh
komputer
9
BAB II
LANDASAN TEORI
2.1 Pengertian Traffic Light
Traffic Light merupakan sarana untuk memudahkan pengaturan pada para
pengendara kendaraan untuk mendapatkan antrian berjalan sesuai urutan yang telah
ditentukan. Traffic Light ditujukan agar kendaraan dapat berjalan dengan tertib dan lancar
sesuai lampu indikator yang memberikan tanda kapan harus berhenti, kapan harus hati-
hati, dan kapan harus berjalan. Jadi, pada umumnya traffic light merupakan peraturan
yang harus ditaati oleh semua pemakai jalan agar arus lalu lintas tidak macet. Biasanya
traffic light dipasang dipertigaan jalan, perempatan, simpang lima, dan sebagainya.
2.2 Komponen-komponen Traffic Light
Adapun komponen-komponen yang penulis gunakan dalam melakukan penelitian
adalah sebagai berikut :
1.Lampu
Lampu yang digunakan adalah lampu pijar warna dengan tegangan AC 220
Volt dan daya 5 Watt. Lampu pijar tersebut terdiri dari 3 warna yaitu merah,
kuning dan hijau. Karena yang akan dibuat adalah miniatur perempatan, maka
jumlah kebutuhan untuk masing-masing warna tersebut adalah 4 kali.
Sementara itu, masing-masing cabang perempatan membutuhkan 3 buah
lampu dengan warna yang berbeda. Dengan demikian, kebutuhan lampu pijar
untuk masing-masing warna pada sebuah perempatan adalah 1 buah. Jadi, total
lampu pijar yang dibutuhkan adalah 4 buah lampu warna merah, 4 buah lampu
warna kuning, dan 4 buah lampu warna hijau dengan spesifikasi yang sama
yaitu 5 Watt / 220 Volt AC.
10
2.Vitting Tempel
Vitting tempel adalah alat untuk menghubungkan lampu pijar dengan sumber
AC 220 Volt. Rangkaian traffic light ini membutuhkan vitting temple
sebanyak 12 buah, disamakan dengan kebutuhan lampu pijar.
3. Kabel Penghubung
Kabel penghubung adalah kabel yang digunakan untuk menghubungkan
lampu yang satu dengan lampu yang lainnya dalam rangkaian traffic light.
4. Kabel Power AC
Kabel power AC adalah kabel yang menghubungkan sumber tegangan 220
volt ke rangkaian pengendali untuk catu daya rangkaian.
5. Kabel Port Printer
Kabel port printer adalah kabel yang digunakan untuk menghubungkan
komputer dengan rangkaian pengendali. Kabel tersebut memiliki 25 pin.
Namun yang akan digunakan untuk mengendalikan traffic light hanya 6 pin
saja.
Adapun gambar dari Paralel port adalah seperti berikut
Gbr(1-2) : Parallel Port
6. Rangkaian Pengendali
Rangkaian pengendali adalah rangkaian yang digunakan sebagai driver
pengendalian dan digunakan untuk memproses sinyal keluaran dari port
11
printer untuk menyalakan lampu traffic light. Rangkaian pengendali ini terdiri
atas resistor, dioda, transistor dan relay.
1.Resistor
Secara harfiah resistor berarti hambatan. Sebagai komponen elektronika,
resistor berfungsi mengatur serta membatasi arus listrik. Secara umum,
resistor disimbolkan seperti gambar dibawah ini :
Gbr(2-2) : Simbol Resistor
Besarnya nilai tahanan resistor ditentukan oleh warna yang tertera pada
badan resistor. Kode-kode warna tersebut dapat dilihat dalam table berikut
:
Warna Angka Pertama
Angka Kedua
Faktor Perkalian
Toleransi Dalam %
Hitam 0 0 1 -Coklat 1 1 10 -Merah 2 2 102 -Jingga 3 3 103 2%Kuning 4 4 104 -Hijau 5 5 105 -Biru 6 6 106 -Ungu 7 7 107 -
Abu-abu 8 8 108 -Putih 9 9 109 -Emas - - X 0.1 5%Perak - - X 0.01 10%Tak
Berwarna- - - 20%
Satuan untuk resistor adalah ohm. Hukum ohm menyatakan bahwa bila
nilai tahanannya semakin besar maka arusnya akan semakin kecil. Tetapi
12
sebaliknya bila nilai tahanannya kecil, maka arusnya akan semakin besar
pula.
2.Dioda
Dioda adalah salah satu komponen elektronika yang berfungsi untuk
menyearahkan arus. Dioda memiliki dua terminal yaitu Anoda dan Katoda.
Simbol dioda adalah seperti berikut :
Gbr(3-2) : Simbol Dioda
Arah panah yang menggambarkan dioda menunjukkan arah arus
konvensional (berlawanan dengan aliran elektron). Bagian belakang panah
dinamakan anoda dan ujung panah dinamakan katoda.
Dioda merupakan komponen nonlinier yang resistansinya bergantung pada
arus yang mengalir. Oleh karena itu dioda hanya dibenarkan untuk ayunan
sinyal yang kecil saja.
Adapun contoh gambar dioda adalah sebagai berikut :
Gbr(4-2) : Dioda
3.Transistor
Transistor berasal dari kata transfer resistor yang dikembangkan oleh
Berdeen, Shockley, dan Brittam pada tahun 1948 di perusahaan elektronik
A K
13
Bell Telephone Laboratories. Penamaan tersebut berdasarkan prinsip
kerjanya, yaitu mentransfer atau memindahkan arus. Transistor memiliki
tiga buah kaki, yaitu basis, kolektor dan emitor. Sedangkan jenis transistor
ada dua macam yaitu transistor jenis NPN dan Transistor jenis PNP.
Adapun simbol dari transistor adalah sebagai berikut :
Gbr(5-2) : Simbol Transistor
Pada jenis NPN, kaki emitor selalu lebih negatif terhadap kolektornya.
Pada jenis PNP berlaku hal sebaliknya. Transistor dapat juga disebut
sebagai penahan arus yang dapat diatur, karena dengan transistor kita
dapat mempengaruhi kekuatan suatu arus. Transistor mengatur arus
dengan cara elektronis. Tidak ada suatu tombol atau lainnya yang
digunakan untuk pengaturannya. Sebuah transistor terdiri dari dua buah
dioda yang telah digabungkan dengan cara yang sangat khusus yang dapat
digambarkan sebagai berikut :
Gbr(6-2) : Skema Transistor
4.Relay
Relay dapat dianggap sebagai salah satu komponen Digital, karena pada
dasarnya relay bekerja dengan mode ON/OFF. Kumparan adalah bagian
C
BE NPN
C
BE PNP
BC
E
14
input relay dan kontak merupakan bagian outputnya. Relay merupakan
komponen elektronika yang dapat difungsikan sebagai saklar. Relay ini
akan menghubungkan rangkaian beban menjadi ON atau OFF sesuai
dengan pemberian energi elektromagnetis. Energi tersebut akan
menyebabkan relay membuka atau menutup kontak pada rangkaian.
Adapun contoh gambar relay adalah seperti berikut :
Gbr(7-2) : Skema Relay
2.3 Prinsip kerja Traffic Light
Traffic light dibuat menggunakan parallel port sebagai perantara keluaran dari
komputer yang keaktifannya dapat diatur melalui pemrograman Delphi. Paralel port dapat
mengeluarkan tegangan kurang lebih 5 Volt. Tegangan tersebut akan aktif jika ada
instruksi yang dibuat dalam pemrograman Delphi. Jika tegangan aktif, maka kita dapat
membuat transistor pada rangkaian penggerak menjadi on sehingga relay akan menjadi
saklar on. Keadaan tersebut menyebabkan arus AC yang berhenti pada saklar elektronik
dapat mengalir dalam rangkaian traffic light sehingga lampu dapat menyala. Lampu yang
dinyalakan dalam setiap cabang perempatan traffic light diatur penyalaannya sehingga
kendaraan bisa berjalan bergiliran sesuai dengan warna lampu traffic light yang menyala.
2.4 Borland Deplhi
15
Untuk mengendalikan traffic light dibutuhkan suatu program khusus dari suatu
bahasa pemrograman, oleh karena itu maka penulis akan menggunakan bahasa
pemrograman Delphi sebagai sarana untuk mengendalikan traffic light tersebut.
Delphi merupakan program aplikasi database yang berbasis Object Pascal dari
Borland serta memiliki kemampuan membangun aplikasi yang multi-threaded. Artinya,
jika aplikasi database semakin kompleks, maka aplikasi tersebut perlu dijalankan dalam
beberapa bagian dan masing-masing bagian akan menjalankan fungsi tertentu. Bagian-
bagian tersebut dinamakan threads. Dengan demikian dapat dikatakan bahwa Delphi
adalah sebuah program aplikasi yang mendukung pembuatan, pemakaian, dan
pengontrolan thread.
Berkaitan dengan bahasa pemrograman Delphi, komputer merupakan alat yang
dapat digunakan sebagai pengendali pusat. Melalui pemrograman Delphi, komputer dapat
mengirimkan sinyal-sinyal digital, dimana tiap-tiap sinyal atau bit tersebut adalah kode
biner 0 atau 1. Sinyal biner ini akan menentukan kerja dari alat terkendali. Komputer
tidak hanya bisa mengirimkan sinyal ke alat luar, tetapi juga bisa menerima sinyal dari
alat luar tergantung bagaimana pemrograman Delphi direkayasa sedemikian rupa
sehingga komputer bisa dijadikan alat pengendali pusat.
Bahasa pemrograman Delphi mampu untuk mengakses port-port yang ada
dikomputer dalam hal ini salah satunya adalah parallel port. Port tersebut mudah dipakai
karena sudah memiliki alamat, masukan, keluaran, dan sela. Kemudahan tersebut mirip
dengan program terapan siap pakai yang semuanya sudah disiapkan untuk segera bisa
dipakai.
Komputer biasanya memiliki lebih dari satu parallel port, yang satu berada di
video adapter, sebuah lagi di multi I/O atau multi function card. Paralel port yang bukan
di video (monochrome) adapter memiliki beberapa nama yaitu LPT1 Dan LPT2. Masing-
16
masing memiliki alamat sendiri. Untuk memudahkan istilah, parallel port yang di video
adapter selanjutnya dinamai LPT0. Untuk menyingkat nama, parallel port selanjutnya
disebut LPT.
Berikut table nomor dan nama register parallel port.
LPT0 LPT1 LPT2 Sifat Nama$3BC $378 $278 R/W Data Port (DP), 8 bit$3BE $37A $27A R/W Printer Control (PC), 5/4 bit$3BD $379 $279 R Printer Status (PS), 5 bit
Sifat R/W maksudnya adalah Read/Write, Read berarti CPU akan membaca data
dari peranti masukan atau Write yang berarti akan menulis data ke peranti keluaran.
Pada mulanya sifat R/W DP (Data Port) hanya bagi dirinya sendiri, tidak boleh
disambung dengan keluaran alat lain. Jadi, DP dapat membaca keluarannya sendiri.
Sebenarnya hal ini bisa dirombak agar DP boleh disambung ke keluaran alat lain. Dengan
demikian, DP dapat membaca keluaran dari alat lain tersebut. DP didukung oleh IC
74LS374 sehingga mampu mengeluarkan arus 2,6 mA pada logika 1 dan 24 mA pada
logika 0. DP bit 0 – 7 berarti data bit 0 sampai bit 7.
PC (Printer Control) terdiri dari 8 bit yang masing-masing kegunaannya dapat
dijelaskan sebagai berikut :
Bit 7 6 5 4 3 2 1 0
Hanya 5 bit PC yang memiliki keluaran (di soket). Bit ke 5 hanya untuk dirinya
sendiri, tidak keluar ke soket.
1 : strobe, terbalik1 : autofeed, terbalik0 : init, normal1 : select in, terbalik1 : IRQ enable, normal
Tidak dipakai.
17
Semua keluaran berasal dari IC 7405, open collector dengan 4K7 resistor. Logika
0 mampu menanggung beban 7 mA, sedangkan logika 1 mampu menanggung 0,6 mA.
Bit0, 1 dan 3 bersifat terbalik (invert), artinya jika register PC sedang berlogika 1,
maka kaki soket (DB25) yang bersangkutan berlogika 0, demikian pula sebaliknya.
Logika 1 di bit 4 meng-enable IRQ7. Sela perangkat keras IRQ7 berasal dari PS
bit 6 (Ack). Semua LPT memakai sebuah sela, yaitu IRQ7.
PS : Printer Status
Bit 7 6 5 4 3 2 1 0
Perubahan logika 1 ke logika 0 di Ack membangkitkan sela perangkat keras
IRQ7. Akan tetapi, perangkat tersebut sebelumnya harus di-enable oleh PC bit 4.
Berikut ini adalah Nomor dan Nama Sinyal LPT
Nama Port LPT Nama Sinyal Nomor pin DB-25 betinaDP – 0 Data bit 0 2DP – 1 Data bit 0 3DP – 2 Data bit 0 4DP – 3 Data bit 0 5DP – 4 Data bit 0 6DP – 5 Data bit 0 7DP – 6 Data bit 0 8
Tidak dipakai
1 : select, normal.0 : error, normal
1 : paper end, normal0 : acknowledge (Ack) normal.1 : busy, terbalik.
18
DP – 7 Data bit 0 9PC – 0 Strobe 1PC – 1 Autofeed 14PC – 2 Init 16PC – 3 Select 17PS – 3 Error 15PS – 4 Select 13PS – 5 Paper end 12PS – 6 Acknowledge 10PS – 7 Busy 11
Ground 18..25
BAB III
ANALISIS SISTEM
3.1 Sistem Pengendali
Pada jaman teknologi seperti sekarang ini, sistem pengendali sangat berkaitan erat
dengan komputer. Penggunaan bahasa pemrograman tertentu memampukan komputer
untuk mengendalikan kinerja peralatan lain. Namun demikian perlu direncanakan sebuah
metode yang memungkinkan komputer mengarahkan gerakan dan respons sebuah
peralatan secara terkendali. Para ilmuwan telah mempelajari sistem pengendali ini serta
telah menerapkannya dalam dunia rekayasa untuk kepentingan perusahaan dan industri.
Sistem pengendali tidak terlepas dari kerja mekanik dan elektrik.
Sistem kendali terbagi dua, yaitu Kendali Loop Tertutup dan Kendali Loop
Terbuka
1. Kendali Loop Tertutup
Kendali loop tertutup merupakan sebuah sistem yang mengukur kesalahan,
kemudian menggunakan kesalahan tersebut untuk membetulkan proses yang telah
terjadi. Diagram blok kendali loop tertutup digambarkan seperti gambar dibawah.
+ e m cr
19
Gbr(1-3) : Skema kendali Loop Tertutup
Tanda panah menunjukkan arah aliran informasi. Di dalam berbagai sistem,
informasi dikirim sebagai sinyal elektronik. Pada kenyataannya apa yang berada
di dalam kotak-kotak bisa berupa sebuah perangkat lain seperti peralatan mesin,
komputer, rangkaian elektronik, dan sebagainya.
Huruf r merupakan singkatan dari masukan referensi yang menentukan suatu
nilai yang diharapkan bagi sistem yang dikendalikan tersebut. Untuk berbagai
sistem yang akan menjadi pertimbangan dalam materi ini, nilai r akan
dihasilkan oleh komputer.
Lingkaran dengan silang didalamnya disebut titik penjumlahan. Di dalam
diagram diatas tampak bahwa terdapat dua sinyal yang masuk ke titik
tersebut, yaitu sinyal r dan sinyal b. b adalah umpan balik dari keluaran.
Keluaran dari titik penjumlahan adalah sinyal kesalahan (e). Nilai e adalah
selisih dari r dan b. Dengan kata lain, sinyal kesalahan e adalah perbedaan
antara apa yang diinginkan dengan apa yang dihasilkan.
Kotak berlabel pengendalian menerima sinyal kesalahan dan menghasilkan
sinyal kontrol m. Seringkali pengendalian tersebut merupakan suatu
peranti yang sangat rumit yang dapat terdiri dari beberapa bagian lagi.
Kotak berlabel sistem terkendali adalah peranti yang sedang dikendalikan.
Sistem pengendalian menjadi lengkap setelah sinyal keluaran c
diumpankan kembali ketitik penjumlahan. Sebelum masuk ke titik
penjumlahan, sinyal c akan melalui kotak yang diberi label elemen umpan
balik, yang berfungsi mengalihkan sinyal c ke dalam bentuk yang dapat
Sistem terkendali
Elemen Umpan balik
Pengendali
b
20
diterima di titik penjumlahan. Sebagai contoh, c adalah posisi sebuah
motor, b adalah tegangan listrik. Dalam hal ini, fungsi dari elemen umpan
balik adalah mengalihkan posisi mekanis menjadi volt.
Sistem diatas adalah sistem loop tertutup, dimana loop tersebut berupa
suatu lintasan tertutup pada aliran informasi dari masukan ke keluaran dan
kembali ke masukan lagi.
2. Kendali Loop Terbuka
Gambaran system pengendalian loop terbuka diperlihatkan seperti
dibawah ini
Gbr(2-3) : Skema Kendali Loop Terbuka
Sebagai contoh dari pengendalian loop terbuka adalah pemanggang roti.
Masukan dari alat ini berupa warna, begitu pula dengan keluarannya. Pada
umumnya, hasil yang diperlukan memuaskan karena pihak pabrik telah
melakukan kalibrasi. Meskipun demikian, ada kemungkinan pemanggang
roti tersebut menjadi tidak akurat lagi setelah terjadi perubahan yang tidak
diperhitungkan sebelumnya, seperti terjadinya kerusakan alat. Kita dapat
menyimpulkan bahwa pengendalian loop tertutup lebih sederhana dan
lebih murah, tetapi hanya sesuai untuk situasi di mana semua pengaruh
dapat diperkirakan serta tidak tergantung pada faktor-faktor luar.
3.1.1 Sistem Tiga Bus
Sistem terkendali
inputPengendali
Output
21
Komputer memiliki ROM dan RAM dimana tidak hanya tersimpan program,
tetapi juga tersimpan hasil perhitungan serta berbagai data lainnya. Apapun yang diwakili
oleh data tersebut, tidak lain adalah sekelompok bit (binary digit). Penggunaan data
tersebut tergantung pada letak penyimpanannya didalam memori. Lokasi memori yang
berbeda digunakan komputer untuk tujuan/maksud yang berbeda pula. Misalnya, lokasi
memori tertentu digunakan sebagai penyimpanan data untuk keperluan layar monitor.
Setiap ribuan titik yang membentuk citra pada layar dikaitkan dengan sebuah bit di dalam
memori. Apabila data yang sama ini ditempatkan dilokasi memori lain untuk menyimpan
program, maka komputer akan memperlakukannya sebagai program yang tentu saja
hanya akan menghasilkan pesan salah (error message). Dengan demikian, suatu data
dapat mewakili sebuah instruksi ataupun sinyal yang akan dikirimkan untuk
mengendalikan peranti eksternal. Apapun penggunaan data tersebut, ia selalu
bergerak/berpindah melalui sistem bus di dalam komputer. Komputer standar memiliki
sistem tiga bus, yaitu bus data, bus alamat, dan bus kontrol.
a. Bus Data
Bus data digunakan sebagai pembawa kata (word) didalam sistem. Setiap
kabel/kawat didalam bus data membawa satu sinyal biner (0 atau 1).
Dengan demikian, bus data 8-bit dapat menangani delapan sinyal yang
berlainan, seperti informasi dari delapan saklar yang terpisah. Delapan
kawat didalam bus data diberi nomor (D0-D7). D0 merupakan kawat bus
data pertama. Bit tersebut paling tidak berarti (least signifikan bit). D7
merupakan kawat bus data paling berarti (most signifikan bit). Pada
umumnya, semakin besar bus data semakin besar pula kemampuan yang
dimiliki komputer dalam hal perhitungan dan kecepatan.
b. Bus Alamat
22
Fungsi sinyal pada bus alamat adalah untuk membantu mengaktifkan atau
memilih lokasi memori tertentu. Setelah lokasi memori diaktifkan,
komputer dapat membaca data dari lokasi tersebut ataupun menulis serta
menyimpan data ke dalamnya.
Saat lokasi memori tertentu diaktifkan dan alamatnya ditempatkan pada
bus alamat, semua lokasi memori yang tersisa di nonaktifkan (disable).
Cara yang sederhana ini memungkinkan komputer untuk dapat
berkomunikasi ke satu (dan hanya satu) lokasi pada saat tertentu. Di
samping itu, mekanisme ini menghindarkan beberapa lokasi dalam memori
mencoba berkomunikasi dengan CPU secara bersamaan.
c. Bus Kontrol
Untuk menggambarkan fungsi bus kontrol, dapat dicontohkan pada sebuah
kawat pada bus di dalam komputer yang berbasis mikroprosesor. Setiap
mikroprosesor memiliki satu atau dua jalur yang berfungsi untuk
memberitahukan peranti pendukung di dalam sistem tersebut. CPU akan
membaca data dari peranti masukan atau menulis data ke peranti keluaran.
Jalur ini dikenal dengan jalur kontrol READ/WRITE. Untuk
memudahkannya, pihak pabrik secara umum menyebutnya sebagai jalur
R/W. Dalam peristilahan komputer, sebuah jalur dikatakan sebagai “driven
low” apabila logikanya 0 dan “Driven high” apabila logikanya 1.
Saat CPU memasang logika 1 pada jalur R/W, dia memberitahukan sistem
komputer bahwa dia sedang melakukan proses READ atau memasukkan
data dari suatu lokasi yang alamatnya ada pada bus alamat saat itu.
Sementara itu, bila logika yang dipasang adalah 0, maka proses WRITE
sedang dilakukan atau data keluar ke suatu lokasi yang alamatnya ada pada
23
bus alamat saat itu. Pemilihan operasi WRITE pada saat jalur R/W “low”
ditunjukkan dengan garis horizontal di atas huruf W.
3.2 Koordinasi Komputer
3.2.1 Rangkaian
Pertama-tama penulis membuat rangkaian catu daya sebagai pemasok
sumber tenaga bagi rangkaian traffic light. Adapun skemanya adalah
sebagai berikut
Adapun komponen-komponennya adalah sebagai berikut :
1. Trafo 5 Amper
2. Dioda 1N4002
3. Elektrolit Condensator (ElCo) 6800 Mikro Farad
Dibawah ini adalah gambar dari skema rangkaian traffic Light yang telah
dibuat oleh penulis
+VCC
Input
RT
D
TrafoD
C
24
Gbr(3-3) : Skema 1 Rangkaian Traffic Light
dengan komponen-komponen beserta kapasitasnya sebagai berikut :
1. Resistor dengan nilai hambatan 10 K Ohm
2. Transistor C3807
3. Dioda N4002
4. Relay 12 Volt
5. Lampu 5 watt
3.2.2 Cara Kerja
Prinsip kerja rangkaian pengendali ini adalah jika ada sinyal yang
berlogika 1 dari komputer melalui port printer, maka sinyal tesebut akan
membuat transistor yang ada dirangkaian pengendali mendapat arus yang
mengakibatkan transistor tersebut menjadi on. Keadaan tersebut akan
menyebabkan kumparan yang ada di dalam relay dilewati arus. Kondisi
tersebut akan menyebabkan magnet kontaktor ON relay terhubung secara
otomatis dan kontak ON kemudian terhubung dengan sumber arus bolak-
balik sehingga lampu traffic light menyala. Demikian juga semua lampu
yang ada didalam rangkaian traffic light menggunakan prinsip pemberian
logika 1 agar lampu traffic light menyala..+VCC
Input
RT
Lamp
D
25
Gbr(4-3) Logika 1, Traffic Light Menyala
Jika ada sinyal yang berlogika 0 dari komputer melewati port printer, maka sinyal
tersebut akan menyebabkan transistor yang berada dirangkaian pengendali menjadi
berada dalam keadaan cut off sehingga transistor menjadi off. Kondisi off dari transistor
ini akan membuat kumparan yang ada didalam relay tidak dilewati arus sehingga tidak
ada energi elektromagnetis yang akan membuat kontaktor ON terhubung dengan sumber
arus bolak-balik sehingga lampu traffic light padam. Demikian juga semua lampu yang
ada di dalam rangkaian traffic light menggunakan prinsip pemberian logika 0 supaya
lampu traffic light padam. Seperti gambar dibawah ini :
Gbr(5-3) : Logika 0, Traffic Light Padam
Adapun alasan penulis memilih Transistor type C3807 adalah karena type
inilah yang ternyata berhasil berfungsi sebagai saklar elektronik yang
ketika diberi arus 4 volt maka transistor ini akan mengalirkan arus listrik
ke relay. Sedangkan sebelumnya penulis telah mencoba menggunakan
+VCC
Input
RT
D
Lamp
26
transistor dengan type BC 109 dan 2SB178 namun hasilnya kurang begitu
memuaskan, dimana traffic light tidak menyala.
3.3 Algoritma
Adapun algoritma atau urutan dari langkah-langkah untuk menyelesaikan
masalah yang penulis hadapi dalam penyusunan program adalah sebagai
berikut:
Penulis akan mengawalinya dengan algoritma dari form yang pertama kali
ditampilkan ketika program di Run yaitu dari form Selamat Datang.
Jika program di Run maka
Tampilkan Form Selamat Datang
Lalu pada Form Selamat Datang
Tampilkan Label1
Tampilkan Tombol Save
Jika Tombol Save ditekan maka
Tutup Form Selamat Datang
Lalu Tampilkan FormLogin
Pada FormLogin
Tampilkan Label1
Tampilkan Label2
Tampilkan EdId (Kotak isisan)
Tampilkan EdPassword (Kotak isian)
Tampilkan BtnOk
Tampilkan BtnCancel
27
Jika BtnOk ditekan maka
Mulai
Jika EdId.Text='' maka
mulai
Tampilkan pesan('User ID Harus diisi!!');
i := i+1
Fokuskan kursor di EdId
EdId.Text := '';
selesai
selain itu
mulai
sertakan Data
mulai
Jika tidak sama antara text di EdId dengan data di Field ‘USER_ID’ dalam
Database maka
mulai
Tampilkan pesan('User ID Tidak terdaftar dalam Database!!');
I := I+1
selesai
selain itu
mulai
Jika tidak sama antara text di EdPassword dengan data di Field ‘PASSWORD’
dalam database maka
mulai
28
Tampilkan pesan('Password Anda Salah !!');
selesai
selain itu
Jika Text di EdPassword sama dengan data di Field ‘PASSWORD' dalam
database maka
mulai
Tampilkan FormUtama
Sembunyikan FormLogin
selesai
selesai
selesai
jika i=3 maka Keluar dari aplikasi;
selesai
selesai
Jika FormLogin.BtnCancel ditekan maka
mulai
Keluar dari aplikasi;
selesai
selesai
Jika FormUtama aktif maka
Deklarasi
{ nama variable }
FormUtama : Tform1;
29
X,y : integer;
{ nama prosedur }
procedure BtnMulaiClick(Sender:Tobject)
{ Prosedur untuk menindaklanjuti penekanan tombol Mulai }
procedure BtnResetClick(Sender:Tobject)
{ Prosedur untuk menindaklanjuti penekanan tombol Reset }
procedure BtnStopClick(Sender:Tobject)
{ Prosedur untuk menindaklanjuti penekanan tombol Stop }
procedure Timer1Timer(Sender:Tobject)
{ Prosedur untuk memberikan jarak waktu bagi penyalaan lampu }
procedure reset;
{ Prosedur untuk reset }
procedure tulisport(addr:word;data:byte);
{ Prosedur untuk menulis data di port }
procedure kirim1(data:byte);
{ Prosedur untuk mengirim data pertama }
procedure kirim2(data:byte);
{ Prosedur untuk mengirim data kedua }
procedure merah1;
{ Prosedur untuk penyalaan lampu merah1 }
procedure hijau1;
{ Prosedur untuk penyalaan lampu hijau1 }
procedure kuning1;
{ Prosedur untuk penyalaan lampu kuning1 }
procedure merah2;
30
{ Prosedur untuk penyalaan lampu merah2 }
procedure hijau2;
{ Prosedur untuk penyalaan lampu hijau2 }
procedure kuning2;
{ Prosedur untuk penyalaan lampu kuning2 }
Tampilkan FormUtama
Tampilkan BtnMulai
Tampilkan BtnReset
Tampilkan BtnStop
Tampilkan Lampu1.Brush.Color:=clmaroon;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clOlive;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=clgreen;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clmaroon;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clOlive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clmaroon;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clOlive;
31
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clmaroon;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clOlive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=clgreen;
Tampilkan Lampu12.Brush.Style:=BSSolid;
Jika prosedur tulisport dipanggil maka
Mulai
Asm { menggunakan bahasa assembler }
Mov dx,addr;
{ memberikan nilai yang ada pada variable addr kepada dx }
Mov al,data;
{ memberikan nilai yang ada pada variable data kepada al }
Out dx,al;
{ mengirim data al ke dx }
Selesai;
Selesai;
Jika prosedur kirim1 dipanggil maka
Mulai
Panggil prosedur tulisport($378,data);
32
Selesai;
Jika prosedur kirim2 dipanggil maka
Mulai
Panggil prosedur tulisport($37A,data);
Selesai;
Jika Prosedur reset dipanggil maka
Mulai
Panggil prosedur tulisport($378,$00) ;
Panggil prosedur tulisport($37A,$0B) ;
Timer1.Enabled : = False ;
Tampilkan Lampu1.Brush.Color:=clmaroon;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clOlive;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=clgreen;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clmaroon;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clOlive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clmaroon;
33
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clOlive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clmaroon;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clOlive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=clgreen;
Tampilkan Lampu12.Brush.Style:=BSSolid;
Selesai ;
Jika prosedur merah1 dipanggil maka
Mulai
Panggil prosedur kirim1($49);
Panggil prosedur kirim2($09);
Tampilkan Lampu2.Brush.Color:=clolive;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clolive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clolive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clolive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu1.Brush.Color:=clred;
34
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clmaroon;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=cllime;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=clgreen;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clmaroon;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clred;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=cllime;
Tampilkan Lampu12.Brush.Style:=BSSolid;
Jika prosedur hijau1 dipanggil maka
Mulai
Panggil prosedur kirim1($4C) ;
Panggil prosedur kirim2($09) ;
Tampilkan Lampu3.Brush.Color:=cllime;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu1.Brush.Color:=clmaroon;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clolive;
35
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clred;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clmaroon;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clolive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=cllime;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clred;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clolive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clolive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=clgreen;
Tampilkan Lampu12.Brush.Style:=BSSolid;
Selesai;
Jika prosedur kuning1 dipanggil maka
Mulai
Panggil prosedur kirim1($4A) ;
Panggil prosedur kirim2($09) ;
Tampilkan Lampu3.Brush.Color:=clgreen;
36
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clYellow;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu1.Brush.Color:=clmaroon;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clred;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clmaroon;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clyellow;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clred;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clolive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clolive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Selesai ;
Jika prosedur merah2 dipanggil maka
Mulai
37
Panggil prosedur kirim1($49) ;
Panggil prosedur kirim2($09) ;
Tampilkan Lampu4.Brush.Color:=clred;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clolive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=cllime;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clolive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=cllime;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clmaroon;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clred;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu1.Brush.Color:=clmaroon;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clolive;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clolive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=clgreen;
38
Tampilkan Lampu12.Brush.Style:=BSSolid;
Selesai ;
Jika prosedur hijau2 dipanggil maka
mulai
panggil prosedur kirim1($61);
panggil prosedur kirim2($09);
Tampilkan Lampu6.Brush.Color:=cllime;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clmaroon;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clolive;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clred;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clolive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clmaroon;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clolive;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=cllime;
Tampilkan Lampu12.Brush.Style:=BSSolid;
39
Tampilkan Lampu1.Brush.Color:=clred;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clolive;
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=clgreen;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Selesai ;
Jika prosedur kuning2 dipanggil maka
mulai
panggil prosedur kirim1($51);
panggil prosedur kirim2($09);
Tampilkan Lampu6.Brush.Color:=clgreen;
Tampilkan Lampu6.Brush.Style:=BSSolid;
Tampilkan Lampu5.Brush.Color:=clYellow;
Tampilkan Lampu5.Brush.Style:=BSSolid;
Tampilkan Lampu1.Brush.Color:=clred;
Tampilkan Lampu1.Brush.Style:=BSSolid;
Tampilkan Lampu7.Brush.Color:=clred;
Tampilkan Lampu7.Brush.Style:=BSSolid;
Tampilkan Lampu11.Brush.Color:=clyellow;
Tampilkan Lampu11.Brush.Style:=BSSolid;
Tampilkan Lampu12.Brush.Color:=clgreen;
Tampilkan Lampu12.Brush.Style:=BSSolid;
Tampilkan Lampu2.Brush.Color:=clolive;
40
Tampilkan Lampu2.Brush.Style:=BSSolid;
Tampilkan Lampu3.Brush.Color:=clgreen;
Tampilkan Lampu3.Brush.Style:=BSSolid;
Tampilkan Lampu4.Brush.Color:=clmaroon;
Tampilkan Lampu4.Brush.Style:=BSSolid;
Tampilkan Lampu8.Brush.Color:=clolive;
Tampilkan Lampu8.Brush.Style:=BSSolid;
Tampilkan Lampu9.Brush.Color:=clgreen;
Tampilkan Lampu9.Brush.Style:=BSSolid;
Tampilkan Lampu10.Brush.Color:=clmaroon;
Tampilkan Lampu10.Brush.Style:=BSSolid;
Selesai ;
Jika FormUtama.BtnMulai Di Tekan atau Form1.MainMenu1.File1.Mulai1
dipilih maka
mulai
Jika BtnMulai.Enabled = True maka
mulai
Timer1.Enabled : = True ;
Timer1.Interval : = 1000 ;
selesai
selain itu
Timer1.Enabled : = False ;
Selesai ;
41
Jika FormUtama.BtnReset ditekan atau FormUtama.MainMenu1.File1.Mulai
dipilih maka
Mulai
Reset ;
Selesai ;
Jika FormUtama.BtnKeluar ditekan atau FormUtama.MainMenu1.File1.Keluar1
dipilih maka
Mulai
Aplikasi berhenti
Selesai ;
Jika FormUtama.MainMenu1.Edit1.Tambah Data User dipilih maka
Mulai
Tampilkan Form TambahUser
Lalu didalam Form TambahUser
Tampilkan Label1
Tampilkan Label2
Tampilkan Label3
Tampilkan EdId
Tampilkan EdPassword
Tampilkan EdKonfirmasi
Tampilkan BtnOk
Tampilkan BtnCancel
42
Selesai
Jika FtambahUser.BtnOk diklik maka lakukan perintah berikut
Sertakan Data
Mulai
Jika ditemukan Field USER_ID di dalam Data.TbLogin maka
Mulai
Tampilkan pesan ('User ID Ini telah terdaftar, silakan cari yang lain');
mulai
fokuskan kursor di EdId.;
EdId.Text := '';
selesai
selain itu
jika ditemukan Field PASSWORD di dalam database
Data.TbLogin
maka
mulai
Tampilkan Pesan ('Password ini telah terdaftar, silakan cari yang
lain');
Fokuskan kursor di EdPassword;
EdPassword.Text := '';
selesai;
selesai ;
sertakan Data
43
mulai
jika tidak ditemukan Field USER_ID didalam database maka
mulai
Jika tidak ditemukan Field PASSWORD didalam database maka
mulai
jika EdId.Text = '' maka
mulai
Tampilkan pesan('User ID Harus Diisi');
Fokuskan kursor di EdId.
selesai
selain itu
jika EdPassword.Text = '' maka
mulai
Tampilkan pesan('Password Harus diisi');
Fokuskan kursor di EdPassword.;
selesai
selain itu
jika EdKonfirmasi.Text = '' maka
mulai
Tampilkan Pesan('Konfirmasi Harus diisi');
Fokuskan kursor di EdKonfirmasi.;
selesai
selain itu
jika EdPassword.Text tidak sama dengan EdKonfirmasi.Text
maka
44
mulai
Tampilkan pesan('Konfirmasi salah');
Fokuskan kursor di EdKonfirmasi.
selesai
selain itu
mulai
Tambahkan data di dalam database
Data.TbLogin['USER_ID'] := EdId.Text;
Data.TbLogin['PASSWORD'] := EdPassword.Text;
Simpan data yang telah dimasukkan
Lalu Tampilkan pesan('Password Baru Telah Dibuat');
Tutup
Selesai;
selesai
selesai
Jika FormUtama.MainMenu1.Edit1.Ganti Password1 dipilih maka
Mulai
Tampilkan Form Ganti Password
Lalu didalam Form Ganti Password
Tampilkan Label1
Tampilkan Label2
Tampilkan Label3
Tampilkan EdId
45
Tampilkan EdLama
Tampilkan EdBaru
Tampilkan BtnOk
Tampilkan BtnCancel
Tampilkan BtnClose
Tampilkan BtnSave
Selesai
Jika Tombol OK ditekan maka lakukan perintah berikut
Jika ditemukan Data Field EdId.Text dalam database maka
mulai
jka Data.Field USER_ID yang ada di database sama dengan
data baru yang dimasukkan lewat EdId.Text maka
mulai
jka Data.Field PASSWORD yang ada di database sama
dengan data baru yang dimasukkan lewat EdLama.Text maka
mulai
jika ditekan tombol Yes pada pesan aplikasi yang
menampilkan('Anda Yakin ?','Ganti Password') maka
mulai
EdBaru.Color := clWhite;
Label3.Enabled := True;
EdBaru.Text := '';
EdBaru.Enabled := True;
BtnSave.Enabled := True;
EdBaru.SetFocus;
46
selesai
selain itu
tutup
selesai
selain itu jika EdLama.Text = '' maka
mulai
Tampilkan pesan('Password Lama Harus Diisi');
Fokuskan kursor di EdLama
selesai
selain itu
mulai
Tampilkan pesan('Password Lama Salah !!!');
Fokuskan kursor di EdLama
selesai
selesai
selain itu jika EdId.Text = '' maka
mulai
Tampilkan pesan('ID User Harus Diisi');
Fokuskan kursor di EdId;
selesai
selain itu
mulai
Tampilkan pesan('ID User Salah !!!');
Fokuskan kursor di EdId
selesai
47
selesai
selesai
Jika FormUtama.MainMenu1.Edit1.Hapus User1 dipilih maka
Tampilkan Form HapusUser
Lalu didalam Form HapusUser tampilkan
mulai
EdId.Text := '';
EdPassword.Text := '';
EdPassword.PasswordChar := '*';
BtnHapus.Enabled := True;
BtnCancel.Enabled := True;
ActiveControl := EdId;
selesai
Jika FHapusUser.BtnHapus ditekan maka
mulai
sertakan Data
mulai
jika EdId.Text = '' maka
mulai
Tampilkan pesan('User ID Harus Diisi');
Fokuskan kursor di EdId ;
selesai
selain itu
48
Jika EdPassword.Text = '' maka
mulai
Tampilkan pesan('Password Harus diisi');
Fokuskan kursor di EdPassword;
selesai
selain itu
jika tidak sama antara data yang dimasukkan lewat EdId dengan data di Field
'USER_ID' didalam database maka
mulai
Tampilkan pesan('User ID ini Tidak terdaftar !!');
Fokuskan kursor di EdId;
selesai
selain itu
jika tidak sama antara data yang dimasukkan lewat EdPassword dengan data di
Field 'PASSWORD'maka
mulai
Tampilkan pesan('Password ini tidak terdaftar !!!');
Fokuskan kursor di EdPassword
selesai
selesai
sertakan Data
Jika data yang dimasukkan lewat EdId sama dengan data yanga ada di Field
‘USER_ID’ maka
49
Jika data yang dimasukkan lewat EdPassword sama dengan data yang ada di Field
‘PASSWORD’ maka
mulai
jika jawaban dari tampilan pesan 'Hapus record ?' adalah Yes maka
mulai
Hapus data yang ada di dalam database;
EdId.Text := '';
EdPassword.Text := '';
EdPassword.PasswordChar := '*';
Fokuskan kursor di EdId;
Tampilkan pesan('Data Telah Dihapus');
Tutup FormHapusUser;
selesai
selesai
selesai
Jika tombol Cancel ditekan maka
mulai
Tutup Form Hapus User;
Selesai
Jika FormUtama.Combo1.Text dipilih 20 Detik maka
mulai
x:= y mod 60;
case x of
50
0 :
mulai
Jalankan prosedur hijau1;
selesai;
20 :
mulai
Jalankan prosedur kuning1;
selesai;
30 :
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
50 :
mulai
Jalankan prosedur kuning2;
selesai;
60 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
end
selain itu
51
Jika FormUtama.Combo1.Text dipilih '30 Detik maka
mulai
x:= y mod 80;
case x of
0 :
mulai
Jalankan prosedur hijau1;
selesai;
30 :
mulai
Jalankan prosedur kuning1;
selesai;
40 :
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
70 :
mulai
Jalankan prosedur kuning2;
selesai;
80 :
mulai
Jalankan prosedur merah2;
selesai;
52
selesai;
y := y+1;
selesai
selain itu
Jika FormUtama.Combo1.Text dipilih 1 Menit maka
mulai
x:= y mod 180;
case x of
0 :
mulai
Jalankan prosedur hijau1;
selesai;
60 :
mulai
Jalankan prosedur kuning1;
selesai;
90 :
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
150 :
mulai
Jalankan prosedur kuning2;
selesai;
53
180 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
selesai
selain itu
Jika FormUtama.Combo1.Text dipilih 2 Menit maka
mulai
x:= y mod 360;
case x of
0 :
mulai
Jalankan prosedur hijau1;
selesai;
120 :
mulai
Jalankan prosedur kuning1;
selesai;
180 :
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
54
300 :
mulai
Jalankan prosedur kuning2;
selesai;
360 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
selesai
selain itu
Jika FormUtama.Combo1.Text dipilih 3 Menit maka
mulai
x:= y mod 480;
case x of
0 :
mulai
Jalankan prosedur hijau1;
selesai;
180 :
mulai
Jalankan prosedur kuning1;
selesai;
240 :
55
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
420 :
mulai
Jalankan prosedur kuning2;
selesai;
480 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
selesai
selain itu
Jika FormUtama.Combo1.Text dipilih 4 Menit maka
mulai
x:= y mod 600;
case x of
0 :
mulai
Jalankan prosedur hijau1;
selesai;
240 :
56
mulai
Jalankan prosedur kuning1;
selesai;
300 :
mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
540 :
mulai
Jalankan prosedur kuning2;
selesai;
600 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
selesai
selain itu
mulai
x:= y mod 720;
case x of
0 :
mulai
57
Jalankan prosedur hijau1;
selesai;
300 :
mulai
Jalankan prosedur kuning1;
selesai;
360 : mulai
Jalankan prosedur merah1;
Jalankan prosedur hijau2;
selesai;
660 :
mulai
Jalankan prosedur kuning2;
selesai;
720 :
mulai
Jalankan prosedur merah2;
selesai;
selesai;
y := y+1;
selesai;
BAB IV
IMPLEMENTASI
4.1. Perancangan
58
4.1.1. Form Selamat Datang
No Komponen Properties Nilai1 Form Name
CaptionFselamatDatangSelamat Datang
2 Label NameCaption
Label1‘’
3 Button1 NameCaption
BtnNextNext
4.1.2. Form Login
No Komponen Properties Nilai1 Form Name
CaptionFormLogin
2 BitButton1 NameCaptionKind
BtnOkOKBkOk
3 BitButton2 NameCaptionKind
BtnCancelCancelBkCancel
4 Edit1 NameText
EdIdEdId
5 Edit2 NameTextPasswordChar
EdPasswordEdPassword‘*’
4.1.3. Form Tambah Data User
No Komponen Properties Nilai1 Form Name
CaptionFTambahUserTambah Data User
2 Button1 NameCaption
BtnOkOK
3 Button2 NameCaption
BtnCancelCancel
4 Label1 NameCaption
Label1User ID
5 Label2 Name Label2
59
Caption Password6 Label3 Name
CaptionLabel3Konfirmasi
7 Edit1 NameText
EdIdEdId
8 Edit2 NameTextPasswordChar
EdPasswordEdPassword‘*’
9 Edit3 NameTextPasswordChar
EdKonfirmasiEdKonfirmasi‘*’
10 Table DataBaseNameTableNameNameActive
T_ATloginTbLoginTrue
4.1.4. Form Ganti Password
No Komponen Properties Nilai1 Form Name
CaptionFGantiPasswordGanti Password
2 Button1 NameCaption
BtnOkOK
3 Button2 NameCaption
BtnCancelCancel
4 Button3 NameCaption
BtnCloseClose
5 Button4 NameCaption
BtnSaveSave
6 Label1 NameCaption
Label1User ID
7 Label2 NameText
Label2Password Lama
8 Label3 NameText
Label3Password Baru
9 Edit1 NameText
EdIdEdId
10 Edit2 NameTextPasswordChar
EdLamaEdLama‘*’
11 Edit3 NameTextPasswordChar
EdBaruEdBaru‘*’
4.1.5. Form Hapus User
60
No Komponen Properties Nilai1 Form Name
CaptionFHapusUserHapus User
2 Button1 NameCaption
BtnCancelCancel
3 Button2 NameCaption
BtnHapusHapus
4 Edit1 NameText
EdIdEdId
5 Edit2 NameText
EdPasswordEdPassword
6 Label1 NameCaption
Label1User ID
7 Label2 NameText
Label2Password
8 Table DatabaseNameTableNameNameActive
T_ATloginTbLoginTrue
4.1.6. DataModule
No Komponen Properties Nilai1 DataModule Name Data2 Table DataBaseName
TableName
Name
Active
T_A
TLOGIN
TbLogin
True3 DataSource Name
DataSet
DtsLogin
TbLogin
4.1.7. Form Utama
Data
61
No Komponen Properties Nilai1 Form Name
CaptionFutamaForm Utama
2 MainMenu Name MainMenu13 Timer1 Name Timer14 Shape1 Name
ShapeLampu1stCircle
5 Shape2 NameShape
Lampu2StCircle
6 Shape3 NameShape
Lampu3StCircle
7 Shape4 NameShape
Lampu4StCircle
8 Shape5 NameShape
Lampu5StCircle
9 Shape6 NameShape
Lampu6StCircle
10 Shape7 NameShape
Lampu7StCircle
11 Shape8 NameShape
Lampu8StCircle
12 Shape9 NameShape
Lampu9StCircle
13 Shape10 NameShape
Lampu10StCircle
14 Shape11 NameShape
Lampu11StCircle
15 Shape12 NameShape
Lampu12StCircle
16 Shape13 NameShape
Shape13StRectangle
17 Shape14 NameShape
Shape14StRectangle
62
18 Shape15 NameShape
Shape15StRectangle
19 Shape16 NameShape
Shape16StRectangle
20 Shape17 NameShape
Shape17StRectangle
21 Shape18 NameShape
Shape18StRectangle
22 Shape19 NameShape
Shape19StRectangle
23 Shape20 NameShape
Shape20StRectangle
24 Shape21 NameShape
Shape21StRectangle
25 Shape22 NameShape
Shape22StRectangle
26 Shape23 NameShape
Shape23StCircle
27 GroupBox NameCaption
GroupBox1Simulasi
28 GroupBox NameCaption
GroupBox2Tombol Kontrol
29 Label NameCaption
Label1Waktu Penyalaan
30 ComboBox NameText
Combo1Combo1
31 Button NameCaption
BtnMulaiMulai
32 Button NameCaption
BtnResetReset
33 Button NameCaption
BtnKeluarKeluar
4.2 Implementasi
4.2.1 Spesifikasi
a. Spesifikasi Hardware
Adapun hardware yang penulis pergunakan dalam penelitian ini adalah
sebagai berikut :
1. Mainboard K7SOM dari EliteGroup
2. Prosessor AMD Duron 1.7 GH
3. Memori 128 MB
63
4. VGA OnBoard
5. CD Rom dan CD-RW 52X
6. Monitor
b. Spesifikasi Software
Sedangkan Software yang dipergunakan adalah sebagai berikut :
1. Operating Sistem Windows ME
2. Compiler Delphi dari Borland
3. Microsoft Word untuk penulisan Laporan
4.2.2. Tahap Instalasi
a. Hardware
Untuk menginstal hardware, maka yang diperlukan disini adalah
memasang CD ROM yang akan berfungsi sebagai pembaca isi CD yang
berisi program yang telah dibuat oleh penulis.
b. Software
Untuk menginstal program ini, maka kita memerlukan beberapa tahap
yaitu :
1. Masukkan CD yang berisi program aplikasi Traffic Light Simulator
2. Klik ganda pada Folder TrafficLight
3. Klik pada file Setup
4. Ikuti setiap langkah yang akan muncul selanjutnya
kemudian setelah aplikasi terinstall di komputer, maka kabel printer
mulai dipasangkan ke konektor LPT1 atau parallel port dibelakang CPU
64
komputer. kemudian konektor satunya lagi pasangkan ke konektor di
hardware yang kita buat.
4.3. Testing
4.3.1. Form Login
Test HasilKotak User diisi text ‘ iwan’Kotak Password diisi text‘kurniawan’Tombol OK ditekan
Form Utama Tampil
Kotak User tidak diisi textKotak Password tidakdiisi textTombol OK ditekan
Tampil pesan ‘User ID Harus diisi!!!’
Kotak User diisi text ‘ iwan’Kotak Password tidak diisi textTombol OK ditekan
Tampil pesan ‘Password Harus diisi’
Kotak User diisi text ‘ adi’Kotak Password diisi text‘kurniawan’Tombol OK ditekan
Tampil pesan ‘User ID tidak terdaftar’
Kotak User diisi text ‘ iwan’Kotak Password diisi text‘dedi’Tombol OK ditekan
Tampil pesan ‘Password salah’
Tombol Cancel ditekan Keluar dari aplikasi
4.3.2. Form Tambah User
Test HasilKotak User diisi text ‘ adi’Kotak Password diisi text‘renaldi’Kotak Konfirmasi diisi text ‘renaldi’Tombol OK ditekan
Muncul pesan ‘ Data Baru telah dibuat’
Kotak User diisi text ‘iwan ’Kotak Password diisi text‘kurniawan’Kotak Konfirmasi diisi text ‘kurniawan’Tombol OK ditekan
Muncul pesan ‘Data ini telah terdaftar’
Kotak User diisi text ‘ rudi’Kotak Password diisi text‘kurniawan’Kotak Konfirmasi diisi text ‘kurniawani’Tombol OK ditekan
Muncul pesan ‘Password ini telah terdaftar’
Kotak User diisi text ‘ rudi’Kotak Password diisi text‘suradi’Kotak Konfirmasi diisi text ‘doni’Tombol OK ditekan
Muncul pesan ‘ Konfirmasi salah’
Tombol Cancel ditekan Keluar dari form Tambah data user
65
4.3.3. Form Ganti Password
Test HasilKotak User diisi text ‘ iwan’Kotak Password diisi text‘kurniawan’Kotak Password baru i diisi text ‘renaldi’Tombol OK ditekan
Muncul pesan ‘ Password Baru telah dibuat’
Kotak User diisi text ‘iwan ’Kotak Password diisi text‘dani’Kotak Password baru diisi text ‘kurniawan’Tombol OK ditekan
Muncul pesan ‘Password ini telah terdaftar’
Kotak User diisi text ‘ aldii’Kotak Password diisi text‘kurniawan’Kotak Password baru diisi text ‘renaldi’Tombol OK ditekan
Muncul pesan ‘User Id tidak terdaftar’
Kotak User diisi text ‘ ’Kotak Password diisi text‘suradi’Kotak Password baru diisi text ‘doni’Tombol OK ditekan
Muncul pesan ‘ User ID harus diisi’
Tombol Cancel ditekan Keluar dari form Ganti Password
4.3.4. Hapus User
Test HasilKotak User diisi text ‘ iwan’Kotak Password diisi text‘kurniawan’Tombol OK ditekan
Muncul pesan ‘ Hapus Record?’ Jika ditekan Yes maka record dihapus
Kotak User diisi text ‘iwan ’Kotak Password diisi text‘dani’Tombol OK ditekan
Muncul pesan ‘Password ini tidak terdaftar’
Kotak User diisi text ‘ aldii’Kotak Password diisi text‘kurniawan’Tombol OK ditekan
Muncul pesan ‘User Id tidak terdaftar’
Kotak User diisi text ‘ ’Kotak Password diisi text‘suradi’Tombol OK ditekan
Muncul pesan ‘ User ID harus diisi’
Kotak User diisi text ‘iwan’Kotak Password tidak diisiTombol OK ditekan
Muncul pesan ‘ Password harus diisi ‘
Tombol Cancel ditekan Keluar dari form Hapus user
4.3.5. Form Utama
Test HasilCombo1 dipilih ’20 detik’ Lampu Hijau menyala selama 20 detik
66
Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 30 detikLampu kuning menyala selama 10 detik
Combo1 dipilih ’30 detik’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 40 detikLampu Hijau menyala selama 30 detikLampu kuning menyala selama 10 detik
Combo1 dipilih ’1 Menit’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 90 detikLampu Hijau menyala selama 60 detikLampu kuning menyala selama 30 detik
Combo1 dipilih ’2 Menit’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 180 detikLampu Hijau menyala selama 120 detikLampu kuning menyala selama 60 detik
Combo1 dipilih ’3 Menit’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 240 detikLampu Hijau menyala selama 180 detikLampu kuning menyala selama 60 detik
Combo1 dipilih ’4 Menit’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 300 detikLampu Hijau menyala selama 240 detikLampu kuning menyala selama 60 detik
Combo1 dipilih ’5 Menit’Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih
Lampu Merah menyala selama 360 detikLampu Hijau menyala selama 300 detikLampu kuning menyala selama 60 detik
Menu Edit ‘Tambah Data’ dipilih Form Tambah Data ditampilkanMenu Edit ‘Ganti Password’ dipilih Form Ganti Password ditampilkanMenu Edit ‘Hapus User’ dipilih Form Hapus User ditampilkan
Adapun untuk pengetesan Traffic Light ini, penulis telah mencobanya dengan
membiarkannya selama kurang lebih 5 jam dan ternyata program dan traffic light ini tetap
dapat bejalan dengan baik.
67
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Rangkaian pengendali adalah rangkaian yang dibangun Dari bermacam-macam
komponen elektronika yang memiliki fungsi saling mendukung antara komponen yang
satu dengan komponen yang lain. Masing-masing komponen tersebut digunakan untuk
mencapai satu tujuan, yaitu dapat membuat sakelar elektronik. Sakelar berfungsi
menyambung dan memutuskan arus listrik. Dengan demikian, harus dibuat fungsi
rangkaian pengendali yang sama. Bahkan sebaiknya sakelar elektronik tersebut bersifat
otomatis tanpa ada orang yang bertugas menekan sakelar tersebut.
Rangkaian pengendali tersebut berupa rangkaian penggerak. Rangkaian penggerak
yang digunakan berfungsi sebagai perantara antara komputer dengan peralatan yang
dikendalikan, contohnya traffic light. Komputer hanya mengeluarkan arus yang relatif
kecil, dan beban yang membutuhkan arus tersebut cukup besar yaitu traffic light.
Rangkaian penggerak disini dibangun dari transistor yang dirangkai sebagai sakelar
elektronik. Sakelar elektronik ini dikendalikan oleh data berupa arus yang dikeluarkan
oleh komputer. Untuk memenuhi hal tersebut, dipakailah komponen-komponen seperti
resistor, kapasitor, diode, transistor, dan relay.
68
Traffic light dibuat menggunakan parallel port sebagai perantara keluaran dari
komputer yang keaktifannya dapat diatur melalui pemrograman Delphi. Parallel port
dapat mengeluarkan tegangan kurang lebih 5 Volt. Tegangan tersebut akan aktif jika ada
instruksi yang dibuat dalam pemrograman Delphi. Jika tegangan aktif, maka kita dapat
membuat transistor pada rangkaian penggerak menjadi on sehingga relay akan menjadi
sakelar on. Keadaan tersebut menyebabkan arus AC yang berhenti pada sakelar elektronik
dapat mengalir dalam rangkaian traffic light sehingga lampu dapat menyala.
Jadi kesimpulan yang dapat diambil adalah sebagai berikut :
• Melalui pemrograman dikomputer, suatu alat elektronika dapat
dikendalikan
• Bahasa pemrograman Delphi adalah salah satu bahasa pemrograman yang
dapat digunakan untuk mengendalikan suatu rangkaian elektronika
5.2 Saran
Dalam pembuatan tugas akhir ini tentu saja penulis menyadari bahwa ada banyak
kekurangan yang sengaja atau tidak sengaja telah dilakukan oleh penulis. Oleh karena itu
penulis membuka pintu lebar-lebar bagi para pembaca yang ingin mengomentari atau
memberikan kritik yang bersifat membangun yang tentu saja akan berguna kelak bagi
perkembangan ilmu pengetahuan kita khususnya dalam bidang teknik komputer. Para
pembaca sekalian boleh menyampaikan kritik dan saran dengan membuka alamat Blog
penulis di iwanurbant.web.id atau di alamat email [email protected]. Penulis
akan sangat menghargai saran dan kritik yang diberikan oleh para pembaca.
Adapun saran yang ingin penulis berikan untuk kampus tercinta adalah alangkah
baiknya apabila apa yang dibuat oleh para mahasiswa semester akhir ini dapat
dipergunakan untuk kepentingan kampus itu sendiri.
69
DAFTAR PUSTAKA
• Ario Suitomo 2004, Borland Delphi Win 32 API, Jakarta, Dinastindo Jakarta
• Drs. Agus Irawan Hsr. Dkk, Pintar Elektronika Jilid 1, CV. Bahagia-Batang
• Drs. Agus Irawan Hsr. Dkk, Pintar Elektronika Jilid 2, CV. Bahagia-Batang
• Hengky Alexander Mangkulo, Bank Soal Delphi, Elex Media Komputindo
• Jogianto Hartono 1999, Pengenalan Ilmu Komputer Bagi Pemula, Bandung
Yrama Widya Bandung
• Kusnassryanto Saiful Bahri & Wawan Sjachriyanto, Pemrograman Delphi,
Informatika Bandung
• Rinaldi Munir 2004, Algoritma dan Pemrograman, Informatika Bandung
• Sugiri Amd. Spd & Moh. Supriyadi, Pemrograman Sistem Pengendali dengan
Delphi, Andi Jogya
70
DAFTAR ISTILAH
• Bit, Binary Digit
• DP, Data Port
• Driven Low, Istilah dalam komputer apabila sebuah jalur berlogika 0
• Driven High, Istilah dalam komputer apabila sebuah jalur berlogika 1
• Koneksi, Hubungan atau sambungan
• PC, Printer Control
• Multi-Thread, Bagian-bagian dari aplikasi pada pemrograman Delphi yang
dijalankan
• Skema, Bagan alur sambungan
• Sifat R/W, Read/Write, Read berarti CPU akan membawa data dari peranti
masukan atau Write yang berarti akan menulis data ke peranti keluaran
71
LAMPIRAN
unit USelamatDatang;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TFSelamatDatang = class(TForm) Label1: TLabel; BtnNext: TButton; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure BtnNextClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var FSelamatDatang: TFSelamatDatang;
implementation
uses ULog;
{$R *.dfm}
procedure TFSelamatDatang.FormCreate(Sender: TObject);begin Label1.Caption := 'Selamat Datang Di Program Traffic Light Simulator'; Label1.Font.Color := clBlue; Label1.Font.Size := 24 ;
72
Label1.Transparent := True; BtnNext.Enabled := True;end;
procedure TFSelamatDatang.FormPaint(Sender: TObject);var baris,tinggi : Word;begin tinggi := (ClientHeight + 255) div 256; for baris := 0 to 255 do with Canvas do begin Brush.Color := RGB(baris,0,0); FillRect(Rect(0,baris*tinggi,ClientWidth,(baris+1)*tinggi)); end;
end;
procedure TFSelamatDatang.BtnNextClick(Sender: TObject);begin FormLogin.Show; FSelamatDatang.Hide;end;
end.
73
unit ULog;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables, Buttons;
type TFormLogin = class(TForm) BtnOk: TBitBtn; BtnCancel: TBitBtn; Label1: TLabel; EdId: TEdit; Label2: TLabel; EdPassword: TEdit; procedure BtnOkClick(Sender: TObject); procedure BtnCancelClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var FormLogin: TFormLogin; i : integer;implementation
uses UTrafficLight, UData;
{$R *.dfm}
procedure TFormLogin.BtnOkClick(Sender: TObject);begin
If EdId.Text=''then begin Showmessage('User ID Harus diisi!!'); i:=i+1;
74
EdId.SetFocus; EdId.Text := ''; end else begin With Data Do begin If not Data.TbLogin.Locate('USER_ID',EdId.Text,[]) then begin ShowMessage('User ID Tidak terdaftar dalam Database!!'); i:=i+1; end else begin If NOT Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin ShowMessage('Password Anda Salah !!'); end else If Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin Form1.Show; FormLogin.Hide; end; end; end; if i=3 then application.Terminate; end;end;
procedure TFormLogin.BtnCancelClick(Sender: TObject);begin Application.Terminate;end;
end.
75
unit UTambahUser;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables;
type TFTambahUser = class(TForm) BtnOk: TButton; BtnCancel: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; EdId: TEdit; EdPassword: TEdit; EdKonfirmasi: TEdit; TbLogin: TTable; procedure FormCreate(Sender: TObject); procedure BtnOkClick(Sender: TObject); procedure BtnCancelClick(Sender: TObject);
private { Private declarations } public { Public declarations } end;
var FTambahUser: TFTambahUser;
implementation
uses UData;
{$R *.dfm}
procedure TFTambahUser.FormCreate(Sender: TObject);begin EdId.Text := ''; EdPassword.Text := '';
76
EdKonfirmasi.Text := ''; EdPassword.PasswordChar := '*'; EdKonfirmasi.PasswordChar := '*'; BtnOk.Enabled := True; BtnCancel.Enabled := True; ActiveControl := EdId;
end;
procedure TFTambahUser.BtnOkClick(Sender: TObject);begin with Data Do begin If Data.TbLogin.Locate('USER_ID',EdId.Text,[]) then begin ShowMessage('User ID Ini telah terdaftar, silakan cari yang lain'); EdId.SetFocus; EdId.Text := ''; end else if Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin ShowMessage('Password ini telah terdaftar, silakan cari yang lain'); EdPassword.SetFocus; EdPassword.Text := ''; end; end ;
With Data Do begin If NOt Data.TbLogin.Locate('USER_ID',EdId.Text,[]) then If NOT Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin If EdId.Text = '' Then begin ShowMessage('User ID Harus Diisi'); EdId.SetFocus end Else if EdPassword.Text = '' then begin ShowMessage('Password Harus diisi'); EdPassword.SetFocus; end else if EdKonfirmasi.Text = '' then begin ShowMessage('Konfirmasi Harus diisi'); EdKonfirmasi.SetFocus; end
77
else if EdPassword.Text <> EdKonfirmasi.Text then begin ShowMessage('Konfirmasi salah'); EdKonfirmasi.SetFocus; end else begin Data.TbLogin.Append; Data.TbLogin['USER_ID'] := EdId.Text; Data.TbLogin['PASSWORD'] := EdPassword.Text; Data.TbLogin.Post; ShowMessage('Password Baru Telah Dibuat'); Close; end;
end; end;end;
procedure TFTambahUser.BtnCancelClick(Sender: TObject);begin Close;
end;
end.
78
unit UGantiPassword;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables;
type TFGantiPassword = class(TForm) BtnCancel: TButton; BtnOk: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; EdId: TEdit; EdLama: TEdit; EdBaru: TEdit; BtnClose: TButton; BtnSave: TButton; procedure BtnOkClick(Sender: TObject); procedure BtnCancelClick(Sender: TObject); procedure BtnSaveClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BtnCloseClick(Sender: TObject);
private { Private declarations } public { Public declarations } end;
var FGantiPassword: TFGantiPassword; i : Integer;implementation
uses UData,ULog,UTambahUser;
{$R *.dfm}
procedure TFGantiPassword.BtnOkClick(Sender: TObject);
79
begin
If Data.TbLogin.FindKey([EdId.Text]) Then begin If Data.TbLogin.FieldByName('USER_ID').AsString = EdId.Text Then begin If Data.TbLogin.FieldByName('PASSWORD').AsString = EdLama.Text Then begin If Application.MessageBox('Anda Yakin ?','Ganti Password',MB_YESNO+MB_ICONQUESTION) = IDYES Then begin EdBaru.Color := clWhite; Label3.Enabled := True; EdBaru.Text := ''; EdBaru.Enabled := True; BtnSave.Enabled := True; EdBaru.SetFocus; end Else Close; end Else If EdLama.Text = '' Then begin ShowMessage('Password Lama Harus Diisi'); EdLama.SetFocus; end Else begin ShowMessage('Password Lama Salah !!!'); EdLama.SetFocus; end; end Else If EdId.Text = '' Then begin ShowMessage('ID User Harus Diisi'); EdId.SetFocus; end Else begin ShowMessage('ID User Salah !!!'); EdId.SetFocus; end;end;end;
procedure TFGantiPassword.BtnCancelClick(Sender: TObject);begin Data.TbLogin.Cancel; FormCreate(Sender);end;
80
procedure TFGantiPassword.BtnSaveClick(Sender: TObject);begin If EdBaru.Text = '' Then ShowMessage('Password Baru Harus Diisi') Else With Data DO begin Data.TbLogin.Edit; Data.TbLogin['PASSWORD'] := EdBaru.Text; Data.TbLogin.Post; ShowMessage('Password Baru Telah Dibuat'); Close; end;end;
procedure TFGantiPassword.FormCreate(Sender: TObject);begin EdId.Text := ''; EdLama.Text := ''; EdBaru.Text := ''; EdLama.PasswordChar := '*'; EdBaru.PasswordChar := '*'; Label3.Enabled := False; EdBaru.Enabled := False; EdBaru.Color := clGrayText; BtnSave.Enabled := False; ActiveControl := EdId;end;
procedure TFGantiPassword.BtnCloseClick(Sender: TObject);begin FGantiPassword.Close;end;
end.
81
unit UHapusUser;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables;
type TFHapusUser = class(TForm) TbLogin: TTable; TbLoginUSER_ID: TStringField; TbLoginPASSWORD: TStringField; Label1: TLabel; Label2: TLabel; EdId: TEdit; EdPassword: TEdit; BtnHapus: TButton; BtnCancel: TButton; procedure FormCreate(Sender: TObject); procedure BtnHapusClick(Sender: TObject); procedure BtnCancelClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var FHapusUser: TFHapusUser;
implementation
uses UData;
{$R *.dfm}
procedure TFHapusUser.FormCreate(Sender: TObject);begin EdId.Text := ''; EdPassword.Text := ''; EdPassword.PasswordChar := '*'; BtnHapus.Enabled := True; BtnCancel.Enabled := True; ActiveControl := EdId;
82
end;
procedure TFHapusUser.BtnHapusClick(Sender: TObject);begin with Data Do begin If EdId.Text = '' Then begin ShowMessage('User ID Harus Diisi'); EdId.SetFocus ; end Else if EdPassword.Text = '' then begin ShowMessage('Password Harus diisi'); EdPassword.SetFocus; end else If NOT Data.TbLogin.Locate('USER_ID',EdId.Text,[]) then begin ShowMessage('User ID ini Tidak terdaftar !!'); EdId.SetFocus; end else if NOT Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin ShowMessage('Password ini tidak terdaftar !!!'); EdPassword.SetFocus; end; end;
with Data Do If Data.TbLogin.Locate('USER_ID',EdId.Text,[]) then if Data.TbLogin.Locate('PASSWORD',EdPassword.Text,[]) then begin if MessageBox(windowhandle,'Hapus record ?','Konfirmasi',mb_yesNo+mb_IconQuestion)=IDyes then begin Data.TbLogin.Delete; EdId.Text := ''; EdPassword.Text := ''; EdPassword.PasswordChar := '*'; EdId.SetFocus; ShowMessage('Data Telah Dihapus'); FHapusUser.Close; end; end;end;
83
procedure TFHapusUser.BtnCancelClick(Sender: TObject);begin Close;end;
end.
84
unit UData;
interface
uses SysUtils, Classes, DB, DBTables;
type TData = class(TDataModule) TbLogin: TTable; DtsLogin: TDataSource; private { Private declarations } public { Public declarations } end;
var Data: TData;
implementation
{$R *.dfm}
end.program ProTrafficLight;uses Forms, UTrafficLight in 'UTrafficLight.pas' {Form1}, ULog in 'ULog.pas' {FormLogin}, UTambahUser in 'UTambahUser.pas' {FTambahUser}, UGantiPassword in 'UGantiPassword.pas' {FGantiPassword}, UHapusUser in 'UHapusUser.pas' {FHapusUser}, UData in 'UData.pas' {Data: TDataModule}, UWaktu in 'UWaktu.pas' {FWaktu};
{$R *.res}begin Application.Initialize; Application.CreateForm(TFWaktu, FWaktu); Application.CreateForm(TFormLogin, FormLogin); Application.CreateForm(TForm1, Form1); Application.CreateForm(TFTambahUser, FTambahUser); Application.CreateForm(TFGantiPassword, FGantiPassword); Application.CreateForm(TFHapusUser, FHapusUser); Application.CreateForm(TData, Data); Application.Run; end.
85
unit UTrafficLight;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus;
type TFormUtama = class(TForm) Lampu1: TShape; Lampu2: TShape; Lampu3: TShape; Lampu4: TShape; Lampu5: TShape; Lampu6: TShape; Lampu7: TShape; Lampu8: TShape; Lampu9: TShape; Lampu10: TShape; Lampu11: TShape; Lampu12: TShape; Shape13: TShape; Shape14: TShape; Shape15: TShape; Shape16: TShape; Shape17: TShape; Shape18: TShape; Shape19: TShape; Shape20: TShape; Shape21: TShape; Shape22: TShape; Shape23: TShape; GroupBox1: TGroupBox; GroupBox2: TGroupBox; BtnMulai: TButton; BtnStop: TButton; BtnKeluar: TButton; Timer1: TTimer; MainMenu1: TMainMenu; File1: TMenuItem; Mulai1: TMenuItem; Reset1: TMenuItem; MenuKeluar: TMenuItem; Edit1: TMenuItem; tambahdatauser1: TMenuItem; Hapusdatauser1: TMenuItem; GantiPassword1: TMenuItem;
86
Combo1: TComboBox; Label1: TLabel; Label2: TLabel; Image1: TImage; procedure FormCreate(Sender: TObject); procedure BtnMulaiClick(Sender: TObject); procedure BtnStopClick(Sender: TObject); procedure BtnKeluarClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Mulai1Click(Sender: TObject); procedure Reset1Click(Sender: TObject); procedure MenuKeluarClick(Sender: TObject); procedure GantiPassword1Click(Sender: TObject); procedure ambahdatauser1Click(Sender: TObject); procedure Hapusdatauser1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure reset; procedure tulisport(addr:word;data:byte); procedure kirim1(data:byte); procedure kirim2(data:byte); procedure merah1; procedure hijau1; procedure kuning1; procedure merah2; procedure hijau2; procedure kuning2; procedure kuning3; procedure delay; end;
var FormUtama: TFormUtama; x,y : integer;
implementationuses UGantiPassword, UTambahUser, UHapusUser;
{$R *.dfm} procedure tFormUtama.tulisport(addr:word;data:byte);begin asm mov dx,addr; mov al,data; out dx,al; end;end;
procedure tFormUtama.kirim1(data:byte);
87
begin tulisport($378,data);end;
procedure tFormUtama.kirim2(data:byte);begin tulisport($37A,data);end;
procedure tFormUtama.reset;begin tulisport($378,$00); tulisport($37A,$0B); timer1.enabled:=false; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clOlive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clOlive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clOlive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clOlive; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid;
end;
procedure tFormUtama.merah1 ;begin kirim1($49); kirim2($09);
FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive;
88
FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clred; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu6.Brush.Color:=cllime; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clred; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=cllime; FormUtama.Lampu12.Brush.Style:=BSSolid;end;
procedure tFormUtama.hijau1;begin kirim1($4C); kirim2($09); FormUtama.Lampu3.Brush.Color:=cllime; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clred; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=cllime; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clred; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid;
89
FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid;
end;
procedure tFormUtama.kuning1;begin kirim1($4A); kirim2($09); FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clYellow; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clred; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clyellow; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clred; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid;
end;
procedure tFormUtama.merah2;begin kirim1($49); kirim2($09); FormUtama.Lampu4.Brush.Color:=clred; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=cllime; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=cllime; FormUtama.Lampu3.Brush.Style:=BSSolid;
90
FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clred; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid;
end;
procedure tFormUtama.hijau2;begin kirim1($61); kirim2($09); FormUtama.Lampu6.Brush.Color:=cllime; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clred; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=cllime; FormUtama.Lampu12.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clred; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid;
end;
procedure tFormUtama.kuning2;begin
91
kirim1($51); kirim2($09); FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clYellow; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clred; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clred; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clyellow; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid;
end;
procedure tFormUtama.kuning3;begin kirim1($51); kirim2($09); FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clYellow; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clyellow; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clyellow; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon;
92
FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clyellow; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid;
end;
procedure tFormUtama.delay;begin kirim1($89); kirim2($09); FormUtama.Lampu6.Brush.Color:=clgreen; FormUtama.Lampu6.Brush.Style:=BSSolid; FormUtama.Lampu5.Brush.Color:=clolive; FormUtama.Lampu5.Brush.Style:=BSSolid; FormUtama.Lampu1.Brush.Color:=clmaroon; FormUtama.Lampu1.Brush.Style:=BSSolid; FormUtama.Lampu7.Brush.Color:=clmaroon; FormUtama.Lampu7.Brush.Style:=BSSolid; FormUtama.Lampu11.Brush.Color:=clolive; FormUtama.Lampu11.Brush.Style:=BSSolid; FormUtama.Lampu12.Brush.Color:=clgreen; FormUtama.Lampu12.Brush.Style:=BSSolid; FormUtama.Lampu2.Brush.Color:=clolive; FormUtama.Lampu2.Brush.Style:=BSSolid; FormUtama.Lampu3.Brush.Color:=clgreen; FormUtama.Lampu3.Brush.Style:=BSSolid; FormUtama.Lampu4.Brush.Color:=clmaroon; FormUtama.Lampu4.Brush.Style:=BSSolid; FormUtama.Lampu8.Brush.Color:=clolive; FormUtama.Lampu8.Brush.Style:=BSSolid; FormUtama.Lampu9.Brush.Color:=clgreen; FormUtama.Lampu9.Brush.Style:=BSSolid; FormUtama.Lampu10.Brush.Color:=clmaroon; FormUtama.Lampu10.Brush.Style:=BSSolid;
end;
procedure TFormUtama.FormCreate(Sender: TObject);begin reset; Combo1.Text := '20 Detik';
end;
procedure TFormUtama.BtnMulaiClick(Sender: TObject);
93
begin if BtnMulai.Enabled = True then begin Timer1.Enabled := True; Timer1.Interval := 1000; end else Timer1.Enabled := False;end;
procedure TFormUtama.BtnStopClick(Sender: TObject);begin reset;end;
procedure TFormUtama.BtnKeluarClick(Sender: TObject);begin Application.Terminate;end;
procedure TFormUtama.Timer1Timer(Sender: TObject);var z : TDateTime;Year,Month,Day,Hour,Min,Sec,MSec : Word;begin z := Now; DecodeTime(z,Hour,Min,Sec,MSec); FormUtama.Label2.Caption := IntToStr(Hour)+ ' : ' + IntToStr(Min) + ' : ' + IntToStr(Sec); if (IntToStr(Hour)='23') or (IntToStr(Hour) = '0') then begin x := y mod 2; case x of 0 : begin kuning1; kuning3; end; 1 : begin delay; end; end; y := y+1; end else if (IntToStr(Hour)='1') or (IntToStr(Hour) = '2') then begin x := y mod 2; case x of 0 : begin
94
kuning1; kuning3; end; 1 : begin delay; end; end; y := y+1; end else if (IntToStr(Hour)='3') or (IntToStr(Hour) = '4') then begin x := y mod 2; case x of 0 : begin kuning1; kuning3; end; 1 : begin delay; end; end; y := y+1; end else if (IntToStr(Hour)='5') then begin x := y mod 2; case x of 0 : begin kuning1; kuning3; end; 1 : begin delay; end; end; y := y+1; end else if FormUtama.Combo1.Text = '5 Detik' then begin x:= y mod 14; case x of 0 : begin hijau1;
95
end; 5 : begin kuning1; end; 7 : begin merah1; hijau2; end; 12 : begin kuning2; end; 14 : begin merah2;
end; end;
y := y+1; end else if FormUtama.Combo1.Text = '20 Detik' then begin x:= y mod 50; case x of 0 : begin hijau1; end; 20 : begin kuning1; end; 25 : begin merah1; hijau2; end; 45 : begin kuning2; end; 50 : begin merah2;
end;
96
end;
y := y+1; end else if FormUtama.Combo1.Text = '30 Detik' then begin x:= y mod 70; case x of 0 : begin hijau1; end; 30 : begin kuning1; end; 35 : begin merah1; hijau2; end; 65 : begin kuning2; end; 70 : begin merah2;
end; end;
y := y+1; end else if FormUtama.Combo1.Text = '1 Menit' then begin x:= y mod 130; case x of 0 : begin hijau1; end; 60 : begin kuning1; end; 65 : begin
97
merah1; hijau2; end; 125 : begin kuning2; end; 130 : begin merah2;
end; end;
y := y+1; end else if FormUtama.Combo1.Text = '2 Menit' then begin x:= y mod 250; case x of 0 : begin hijau1; end; 120 : begin kuning1; end; 125 : begin merah1; hijau2; end; 245 : begin kuning2; end; 250 : begin merah2; end;
end; y := y+1; end else if FormUtama.Combo1.Text = '3 Menit' then begin x:= y mod 370;
98
case x of 0 : begin hijau1; end; 180 : begin kuning1; end; 185 : begin merah1; hijau2; end; 365 : begin kuning2; end; 370 : begin merah2; end; end; y := y+1; end else if FormUtama.Combo1.Text = '4 Menit' then begin x:= y mod 490; case x of 0 : begin hijau1; end; 240 : begin kuning1; end; 245 : begin merah1; hijau2; end; 485 : begin kuning2; end; 490 : begin merah2;
99
end; end; y := y+1; end else begin x:= y mod 610; case x of 0 : begin hijau1; end; 300 : begin kuning1; end; 305 : begin merah1; hijau2; end; 605 : begin kuning2; end; 610 : begin merah2; end; end; y := y+1; end;end;
procedure TFormUtama.Mulai1Click(Sender: TObject);begin if BtnMulai.Enabled = True then begin Timer1.Enabled := True; Timer1.Interval := 1000; end else Timer1.Enabled := False;end;
procedure TFormUtama.Reset1Click(Sender: TObject);begin reset;end;
100
procedure TFormUtama.MenuKeluarClick(Sender: TObject);begin Application.Terminate;end;
procedure TFormUtama.GantiPassword1Click(Sender: TObject);begin FGantiPassword.ShowModal; end;
procedure TFormUtama.ambahdatauser1Click(Sender: TObject);begin FTambahUser.ShowModal; FTambahUser := TFTambahUser.Create(Self);end;
procedure TFormUtama.Hapusdatauser1Click(Sender: TObject);begin FHapusUser.ShowModal;end;
end.