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 CIMAHI BANDUNG
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 kesimpulankesimpulan 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 hatihati, 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 Hitam Coklat Merah Jingga Kuning Hijau Biru Ungu Abu-abu Putih Emas Perak Tak Berwarna
Angka Pertama 0 1 2 3 4 5 6 7 8 9 -
Angka Kedua 0 1 2 3 4 5 6 7 8 9 -
Faktor Perkalian 1 10 102 103 104 105 106 107 108 109 X 0.1 X 0.01 -
Toleransi Dalam % 2% 5% 10% 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 : A
K
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
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 : C B
E
C B
NPN
E
PNP
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 :
C B E 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
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. Bagianbagian 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 $3BE $3BD
$378 $37A $379
$278 $27A $279
R/W R/W R
Data Port (DP), 8 bit Printer Control (PC), 5/4 bit 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 1 : strobe, 1 : autofeed, 0 : init, 1 : select in, 1 : IRQ enable,
terbalik terbalik normal terbalik normal
Tidak dipakai. Hanya 5 bit PC yang memiliki keluaran (di soket). Bit ke 5 hanya untuk dirinya sendiri, tidak keluar ke soket.
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 Tidak dipakai 0 : error, 1 : select, 1 : paper end, 0 : acknowledge (Ack) 1 : busy,
normal normal. normal normal. terbalik.
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 DP – 0 DP – 1 DP – 2 DP – 3 DP – 4 DP – 5 DP – 6
Nama Sinyal Data bit 0 Data bit 0 Data bit 0 Data bit 0 Data bit 0 Data bit 0 Data bit 0
Nomor pin DB-25 betina 2 3 4 5 6 7 8
18 DP – 7 PC – 0 PC – 1 PC – 2 PC – 3 PS – 3 PS – 4 PS – 5 PS – 6 PS – 7
Data bit 0 Strobe Autofeed Init Select Error Select Paper end Acknowledge Busy Ground
9 1 14 16 17 15 13 12 10 11 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. r
+
e
m
c
19 Pengendali b
Sistem terkendali
Elemen Umpan balik 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
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 input
Pengendali
Sistem terkendali
Output
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
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
D
C
Trafo
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
D Input T R
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 bolakbalik sehingga lampu traffic light menyala. Demikian juga semua lampu yang ada didalam rangkaian traffic light menggunakan prinsip pemberian +VCC menyala.. logika 1 agar lampu traffic light
D Input T R
Lamp
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 :
+VCC
D Input T
Lamp
R 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
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 1
Komponen Form
2
Label
3
Button1
Properties Name Caption Name Caption Name Caption
Nilai FselamatDatang Selamat Datang Label1 ‘’ BtnNext Next
4.1.2. Form Login
No Komponen 1 Form 2
BitButton1
3
BitButton2
4
Edit1
5
Edit2
Properties Name Caption Name Caption Kind Name Caption Kind Name Text Name Text PasswordChar
Nilai FormLogin BtnOk OK BkOk BtnCancel Cancel BkCancel EdId EdId EdPassword EdPassword ‘*’
4.1.3. Form Tambah Data User
No 1
Komponen Form
2
Button1
3
Button2
4
Label1
5
Label2
Properties Name Caption Name Caption Name Caption Name Caption Name
Nilai FTambahUser Tambah Data User BtnOk OK BtnCancel Cancel Label1 User ID Label2
59 6
Label3
7
Edit1
8
Edit2
9
Edit3
10
Table
Caption Name Caption Name Text Name Text PasswordChar Name Text PasswordChar DataBaseName TableName Name Active
Password Label3 Konfirmasi EdId EdId EdPassword EdPassword ‘*’ EdKonfirmasi EdKonfirmasi ‘*’ T_A Tlogin TbLogin True
4.1.4. Form Ganti Password
1
No
Komponen Form
2
Button1
3
Button2
4
Button3
5
Button4
6
Label1
7
Label2
8
Label3
9
Edit1
10
Edit2
11
Edit3
Properties Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption Name Text Name Text Name Text Name Text PasswordChar Name Text PasswordChar
4.1.5. Form Hapus User
Nilai FGantiPassword Ganti Password BtnOk OK BtnCancel Cancel BtnClose Close BtnSave Save Label1 User ID Label2 Password Lama Label3 Password Baru EdId EdId EdLama EdLama ‘*’ EdBaru EdBaru ‘*’
60
No 1
Komponen Form
2
Button1
3
Button2
4
Edit1
5
Edit2
6
Label1
7
Label2
8
Table
Properties Name Caption Name Caption Name Caption Name Text Name Text Name Caption Name Text DatabaseName TableName Name Active
Nilai FHapusUser Hapus User BtnCancel Cancel BtnHapus Hapus EdId EdId EdPassword EdPassword Label1 User ID Label2 Password T_A Tlogin TbLogin True
4.1.6. DataModule Data
No 1 2
3
Komponen DataModule Table
DataSource
4.1.7. Form Utama
Properties Name DataBaseName
Nilai Data T_A
TableName
TLOGIN
Name
TbLogin
Active Name
True DtsLogin
DataSet
TbLogin
61
No 1
Komponen Form
2 3 4
MainMenu Timer1 Shape1
5
Shape2
6
Shape3
7
Shape4
8
Shape5
9
Shape6
10
Shape7
11
Shape8
12
Shape9
13
Shape10
14
Shape11
15
Shape12
16
Shape13
17
Shape14
Properties Name Caption Name Name Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape
Nilai Futama Form Utama MainMenu1 Timer1 Lampu1 stCircle Lampu2 StCircle Lampu3 StCircle Lampu4 StCircle Lampu5 StCircle Lampu6 StCircle Lampu7 StCircle Lampu8 StCircle Lampu9 StCircle Lampu10 StCircle Lampu11 StCircle Lampu12 StCircle Shape13 StRectangle Shape14 StRectangle
62 18
Shape15
19
Shape16
20
Shape17
21
Shape18
22
Shape19
23
Shape20
24
Shape21
25
Shape22
26
Shape23
27
GroupBox
28
GroupBox
29
Label
30
ComboBox
31
Button
32
Button
33
Button
4.2
Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Shape Name Caption Name Caption Name Caption Name Text Name Caption Name Caption Name Caption
Shape15 StRectangle Shape16 StRectangle Shape17 StRectangle Shape18 StRectangle Shape19 StRectangle Shape20 StRectangle Shape21 StRectangle Shape22 StRectangle Shape23 StCircle GroupBox1 Simulasi GroupBox2 Tombol Kontrol Label1 Waktu Penyalaan Combo1 Combo1 BtnMulai Mulai BtnReset Reset BtnKeluar Keluar
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 Kotak User diisi text ‘ iwan’ Kotak Password diisi text‘kurniawan’ Tombol OK ditekan Kotak User tidak diisi text Kotak Password tidakdiisi text Tombol OK ditekan Kotak User diisi text ‘ iwan’ Kotak Password tidak diisi text Tombol OK ditekan Kotak User diisi text ‘ adi’ Kotak Password diisi text‘kurniawan’ Tombol OK ditekan Kotak User diisi text ‘ iwan’ Kotak Password diisi text‘dedi’ Tombol OK ditekan Tombol Cancel ditekan
Hasil Form Utama Tampil Tampil pesan ‘User ID Harus diisi!!!’ Tampil pesan ‘Password Harus diisi’ Tampil pesan ‘User ID tidak terdaftar’ Tampil pesan ‘Password salah’ Keluar dari aplikasi
4.3.2. Form Tambah User Test Kotak User diisi text ‘ adi’ Kotak Password diisi text‘renaldi’ Kotak Konfirmasi diisi text ‘renaldi’ Tombol OK ditekan Kotak User diisi text ‘iwan ’ Kotak Password diisi text‘kurniawan’ Kotak Konfirmasi diisi text ‘kurniawan’ Tombol OK ditekan Kotak User diisi text ‘ rudi’ Kotak Password diisi text‘kurniawan’ Kotak Konfirmasi diisi text ‘kurniawani’ Tombol OK ditekan Kotak User diisi text ‘ rudi’ Kotak Password diisi text‘suradi’ Kotak Konfirmasi diisi text ‘doni’ Tombol OK ditekan Tombol Cancel ditekan
Hasil Muncul pesan ‘ Data Baru telah dibuat’
Muncul pesan ‘Data ini telah terdaftar’
Muncul pesan ‘Password ini telah terdaftar’
Muncul pesan ‘ Konfirmasi salah’
Keluar dari form Tambah data user
65
4.3.3. Form Ganti Password Test Kotak User diisi text ‘ iwan’ Kotak Password diisi text‘kurniawan’ Kotak Password baru i diisi text ‘renaldi’ Tombol OK ditekan Kotak User diisi text ‘iwan ’ Kotak Password diisi text‘dani’ Kotak Password baru diisi text ‘kurniawan’ Tombol OK ditekan Kotak User diisi text ‘ aldii’ Kotak Password diisi text‘kurniawan’ Kotak Password baru diisi text ‘renaldi’ Tombol OK ditekan Kotak User diisi text ‘ ’ Kotak Password diisi text‘suradi’ Kotak Password baru diisi text ‘doni’ Tombol OK ditekan Tombol Cancel ditekan
Hasil Muncul pesan ‘ Password Baru telah dibuat’ Muncul pesan ‘Password ini telah terdaftar’
Muncul pesan ‘User Id tidak terdaftar’
Muncul pesan ‘ User ID harus diisi’
Keluar dari form Ganti Password
4.3.4. Hapus User Test Kotak User diisi text ‘ iwan’ Kotak Password diisi text‘kurniawan’ Tombol OK ditekan Kotak User diisi text ‘iwan ’ Kotak Password diisi text‘dani’ Tombol OK ditekan Kotak User diisi text ‘ aldii’ Kotak Password diisi text‘kurniawan’ Tombol OK ditekan Kotak User diisi text ‘ ’ Kotak Password diisi text‘suradi’ Tombol OK ditekan Kotak User diisi text ‘iwan’ Kotak Password tidak diisi Tombol OK ditekan Tombol Cancel ditekan
Hasil Muncul pesan ‘ Hapus Record?’ Jika ditekan Yes maka record dihapus Muncul pesan ‘Password ini tidak terdaftar’ Muncul pesan ‘User Id tidak terdaftar’ Muncul pesan ‘ User ID harus diisi’ Muncul pesan ‘ Password harus diisi ‘ Keluar dari form Hapus user
4.3.5. Form Utama Test Combo1 dipilih ’20 detik’
Hasil Lampu Hijau menyala selama 20 detik
66 Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’30 detik’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’1 Menit’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’2 Menit’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’3 Menit’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’4 Menit’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Combo1 dipilih ’5 Menit’ Tombol Mulai ditekan atau menu file ‘Mulai’ dipilih Menu Edit ‘Tambah Data’ dipilih Menu Edit ‘Ganti Password’ dipilih Menu Edit ‘Hapus User’ dipilih
Lampu Merah menyala selama 30 detik Lampu kuning menyala selama 10 detik Lampu Merah menyala selama 40 detik Lampu Hijau menyala selama 30 detik Lampu kuning menyala selama 10 detik Lampu Merah menyala selama 90 detik Lampu Hijau menyala selama 60 detik Lampu kuning menyala selama 30 detik Lampu Merah menyala selama 180 detik Lampu Hijau menyala selama 120 detik Lampu kuning menyala selama 60 detik Lampu Merah menyala selama 240 detik Lampu Hijau menyala selama 180 detik Lampu kuning menyala selama 60 detik Lampu Merah menyala selama 300 detik Lampu Hijau menyala selama 240 detik Lampu kuning menyala selama 60 detik Lampu Merah menyala selama 360 detik Lampu Hijau menyala selama 300 detik Lampu kuning menyala selama 60 detik Form Tambah Data ditampilkan Form Ganti Password ditampilkan 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; end;
procedure delay;
var FormUtama: TFormUtama; x,y : integer; implementation uses 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.