Upload
phamnga
View
259
Download
4
Embed Size (px)
Citation preview
TUGAS AKHIR
REKAYASA PENGATURAN NYALA LAMPU LALU
LINTAS BERDASARKAN JUMLAH KENDARAAN
DENGAN ALGORITMA FUZZY LOGIC
Diajukan untuk memenuhi salah satu syarat
memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
REGINA CHELINIA ERIANDA PUTRI
NIM: 145114006
PROGRAM STUDI TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
ENGINEERING SETTING ON TRAFFIC LIGHTS
BASED ON NUMBER OF VEHICLES WITH FUZZY
LOGIC ALGORITHM
In a partial fulfillment of the requirement
For the degree of Sarjana Teknik
Department of Electrical Engineering
Faculty of Science and Technology Sanata Dharma University
REGINA CHELINIA ERIANDA PUTRI
NIM: 145114006
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO:
“YOU‟LL NEVER LEARN,
IF YOU DON‟T MAKE MISTAKES”
-Anonim-
Skripsi ini kupersembahkan kepada,
Tuhan Yesus Kristus dan Bunda Maria
Orang tua dan Kakak-kakaku
Sahabat dan Teman-teman Seperjuangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Pada persimpangan jalan sering terjadi antrian kendaraan yang tidak merata ditiap
cabang, namun lama lampu lalu lintas pada semua cabang memiliki lama lampu hijau yang
tetap (tidak adaptif). Jika kondisi ini tidak diatasi maka dapat menimbulkan kemacetan
dipersimpangan.
Menanggulangi hal tersebut dibuat prototype sistem yang mengatur lama dari nyala
lampu hijau berdasarkan jumlah kendaraan. Kendaraan masuk dan keluar dari daerah
pengamatan akan dideteksi oleh sensor inframerah. Jumlah kendaraan yang diterima Slave
tiap cabang akan dikirim dengan komunikasi serial I2C ke Master. Pada mikrokontroler
master jumlah ditiap cabang akan diolah menjadi lama lampu hijau dengan bantuan
algoritma fuzzy logic. Perhitungan algoritma Fuzzy Logic diawali dengan tahap fuzzifikasi
yakni jumlah kendaraan dikelompokan dalam suatu kategori berdasarkan derajat
keanggotaan, pada penelitian ini menggunakan 4 kategori yaitu Sedikit, Sedang1, Sedang 2
dan Banyak. Selanjutnya diarahkan ke tahap defuzzifikasi dengan bantuan basis aturan.
Pada tahap deffuzifikasi terdapat 4 kategori yakni Cepat, Agak_Lama1, Agak_Lama2 dan
Lama yang merupakan kategori lama lampu hijau. Pada tahap defuzifikasi ini akan
menghasilkan lama lampu hijau menyala. Lama lampu hijau akan ditunjukan oleh aktuator
berupa lampu pilot 12V, yang akan menyala sesuai dengan lama lampu hijau dari proses
algoritma Fuzzy.
Hasil dari penelitian ini menunjukkan bahwa algoritma Fuzzy Logic dapat mengatur
lama lampu hijau pada tiap cabang sesuai dengan banyaknya kendaraan. Jika suatu cabang
memiliki jumlah kendaraan lebih banyak dibandingkan cabang lainnya maka lama waktu
dari lampu hijau pada cabang tersebut akan lebih lama dibanding cabang lainnya.
Persentase error pengujian dengan perhitungan teoritis adalah 0.05% dan persentase
keberhasilan alat adalah 99.95%.
Kata kunci: Fuzzy logic, mikrokontroler AVR, Pengaturan Lampu Lalu Lintas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
At road intersections there is often a queue of vehicles that is not evenly
distributed in each branch, but for a long time the traffic lights on all branches have a fixed
green light (not adaptive). If this condition is not overcome, it can cause congestion at an
intersection.
Overcoming this was made a system prototype that regulates the duration of the
green light based on the number of vehicles. Vehicles entering and exiting the observation
area will be detected by an infrared sensor. The number of vehicles received by each
branch Slave will be sent with I2C serial communication to the Master. In the master
microcontroller the number of each branch will be processed into a long green light with
the help of fuzzy logic algorithms. The calculation of Fuzzy Logic algorithm begins with
the fuzzification stage, namely the number of vehicles grouped in a category based on the
degree of membership, in this study using 4 categories, namely Sedikit, Sedang1, Sedang 2
and Banyak. Then directed to the defuzzification stage with the help of a rule base. In the
deffuzification stage there are 4 categories, Cepat, Agak_Lama1, Agak_Lama2 and Lama,
which is the old category of green light. In the defuzification stage this will produce a long
green light. The duration of the green light will be shown by the actuator in the form of a
12V pilot lamp, which will light up according to the long green light from the Fuzzy
algorithm process.
The results of this final project indicate that the Fuzzy Logic algorithm can set the
length of the green light at each branch according to the number of vehicles. If a branch has
more vehicles than other branches, the length of time from the green light on the branch
will be longer than the other branches. The percentage of error testing with theoretical
calculations is 0.05% and the percentage of success of the tool is 99.95%.
Key Words: Fuzzy logic, mikrokontroler AVR, Pengaturan Lampu Lalu Lintas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
TUGAS AKHIR .................................................................................................................... i
FINAL PROJECT ............................................................................................................... ii
LEMBAR PERSETUJUAN............................................................................................... iii
LEMBAR PENGESAHAN ................................................................................................ iv
PERNYATAAN KEASLIAN KARYA .............................................................................. v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ................................................. vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI.......................................... vii
INTISARI .......................................................................................................................... viii
ABSTRACT ........................................................................................................................ ix
KATA PENGANTAR ......................................................................................................... x
DAFTAR ISI ....................................................................................................................... xi
DAFTAR GAMBAR ........................................................................................................ xvi
DAFTAR TABEL ............................................................................................................. xix
BAB I PENDAHULUAN ................................................................................................... 1
1.1. Latar Belakang ........................................................................................................ 1
1.2. Tujuan dan Manfaat ................................................................................................ 2
1.3. Batasan Masalah ..................................................................................................... 2
1.4. Metodologi Penelitian ............................................................................................. 2
BAB II DASAR TEORI ..................................................................................................... 4
2.1. LED Inframerah ...................................................................................................... 4
2.2. Photodioda .............................................................................................................. 5
2.3. Transistor [3] ........................................................................................................... 7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
2.4. LCD (Liquid Chrystal Display) .............................................................................. 8
2.4.1. Material LCD ................................................................................................... 9
2.4.2. Pengendali LCD .............................................................................................. 9
2.5. Komparator LM339 .............................................................................................. 10
2.6. Relay ..................................................................................................................... 11
2.7. Mikrokontroler ATmega32 [7] ............................................................................. 12
2.7.1. Arsiektur AVR ATmega32 ............................................................................ 12
2.7.2. Konfigurasi Pin Mikrokontroler ATmega32 ................................................. 12
2.7.3. Organisasi Memori AVR ATmega32 ............................................................ 13
2.7.3.1. Memori Program .................................................................................... 13
2.7.3.2. Memori Data .......................................................................................... 13
2.7.4. Timer / Counter ............................................................................................. 14
2.7.5. Timer/Counter Control Register 0 ................................................................. 14
2.7.6. Timer/Counter 1 ............................................................................................ 15
2.7.7. Register TIMSK (Timer/Counter Interrupt Mask Register) .......................... 15
2.7.8. Register TIFR ................................................................................................ 16
2.7.9. Komunikasi I2C [8] ....................................................................................... 16
2.8. Mikrokontroler Atmega 8 ..................................................................................... 18
2.8.1. Arsitektur ATmega8 [9] ................................................................................ 18
2.8.2. Konfigurasi Pin Mikrokontroler ATmega 8 .................................................. 18
2.8.3. Organisasi Memori AVR ATmega8 .............................................................. 20
2.8.4. Interrupt ......................................................................................................... 21
2.8.4.1. MCUCR (MCU Control Register) ......................................................... 21
2.8.4.2. Register GICR ........................................................................................ 22
2.9. Fuzzy Logic ........................................................................................................... 22
2.9.1. Perbedaan Logika Fuzzy dan Logika Tegas .................................................. 22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2.9.2. Himpunan ...................................................................................................... 23
2.9.3. Dasar Logika Fuzzy ....................................................................................... 23
2.9.3.1. Fungsi Keanggotaan ............................................................................... 23
2.9.4. Cara Kerja Logika Fuzzy ............................................................................... 26
2.9.4.1. Fuzzifikasi .............................................................................................. 26
2.9.4.2. Aturan Dasar Logika Fuzzy ................................................................... 26
2.9.4.3. Mesin Penalaran Kontrol Logika Fuzzy (Inference Engine) ................. 26
2.9.4.4. Defuzzifikasi .......................................................................................... 27
BAB III PERANCANGAN .............................................................................................. 29
3.1. Proses Kerja Sistem .............................................................................................. 29
3.2. Perancangan Prototype ......................................................................................... 31
3.3. Perancangan Perangkat Keras ............................................................................... 33
3.3.1. Minimum System pada ATmega32 ............................................................... 33
3.3.2. Rangkaian pada Mikrokontroler .................................................................... 34
3.3.2.1. Rangkaian pada Master .......................................................................... 34
3.3.2.2. Rangkaian ATmega8 pada Slave A,B,C ................................................ 35
3.3.3. Rangkaian LCD ............................................................................................. 36
3.3.3.1. Rangkaian LCD pada Master ................................................................. 36
3.3.3.2. Rangkaian LCD pada Slave .................................................................... 37
3.3.4. Rangkaian Komparator .................................................................................. 38
3.3.5. Rangkaian Sensor Infra merah ...................................................................... 39
3.3.6. Rangkaian Relay ............................................................................................ 40
3.4. Perancangan Perangkat Lunak .............................................................................. 41
3.4.1. Diagram Alir Utama ...................................................................................... 41
3.4.2. Diagram Alir Anak Cabang ........................................................................... 45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
3.4.3. Diagram Alir Sub Rutin Pengiriman Data dari Slave .................................... 46
3.4.4. Diagram Alir Sub Rutin Fuzzy Logic ............................................................ 47
3.5. Alogaritma Fuzzy Logic ........................................................................................ 48
3.5.1 Framework Input dan Output ........................................................................ 48
3.5.1.1. Framework Input X ................................................................................ 48
3.5.1.2. Framework Output I ............................................................................... 48
3.5.2. Kondisi Rule .................................................................................................. 49
3.5.3. Alogaritma Fuzzy Logic pada Mikrokontroler Master .................................. 50
3.5.3.1. Fuzzifikasi .............................................................................................. 50
3.5.3.2. Basis Aturan ........................................................................................... 51
3.5.3.3. Proses Defuzzifikasi ............................................................................... 51
BAB IV HASIL PENGAMATAN DAN PEMBAHASAN ............................................. 53
4.1. Bentuk Fisik Alat .................................................................................................. 53
4.2. Sistem Kerja Alat .................................................................................................. 55
4.3. Rangkaian Keseluruhan Sistem ............................................................................ 57
4.3.1. Rangkaian Master .......................................................................................... 57
4.3.2. Rangkaian Slave ............................................................................................ 58
4.3.3. Perubahan Perancangan ................................................................................. 59
4.4. Analisis Algoritma Fuzzy Logic............................................................................ 59
4.4.1. Perhitungan Fuzzifikasi ................................................................................. 59
4.4.2. Pemilihan Basis Aturan ................................................................................. 60
4.4.3. Perhitungan Defuzzifikasi ............................................................................. 61
4.5. Hasil Data Pengujian dan Pembahasan ................................................................. 62
4.5.1. Pengujian Hardware ..................................................................................... 62
4.5.1.1. Pengujian Sensor Inframerah dan Komparator ...................................... 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
4.5.1.2. Pengujian Hardware dan Software ........................................................ 63
4.6. Analisa dan Pembahasan Perangkat Lunak .......................................................... 71
4.6.1. Aplikasi CodeVision AVR pada Slave .......................................................... 71
4.6.1.1. Sensor Pendeteksi Kendaraan ................................................................ 71
4.6.1.2. Pengendali Komunikasi I2C................................................................... 74
4.6.2. Aplikasi CodeVision AVR pada Master ....................................................... 75
4.6.2.1. Penerimaan Data I2C ............................................................................. 76
4.6.2.2. Subrutin Nyala Lampu Awal .................................................................. 78
4.6.2.3. Subrutin Proses Algoritma Fuzzy ........................................................... 79
4.6.2.3.1. Fuzzifikasi ........................................................................................... 80
4.6.2.3.2. Basis Aturan (Rule) ............................................................................. 83
4.6.2.3.3. Defuzzifikasi ........................................................................................ 84
4.6.2.4. Subrutin Nyala Adaptif .......................................................................... 85
4.6.2.5. Program Utama ...................................................................................... 87
BAB V KESIMPULAN DAN SARAN............................................................................. 88
5.1. Kesimpulan ........................................................................................................... 88
5.2. Saran ..................................................................................................................... 88
DAFTAR PUSTAKA ........................................................................................................ 89
LAMPIRAN ..................................................................................................................... L-1
Lampiran 1 Listing Program Slave A ............................................................................ L-2
Lampiran 2 Listing Program Slave B ............................................................................ L-5
Lampiran 3 Listing Program Slave C ............................................................................ L-8
Lampiran 4 Listing Program Master ........................................................................... L-11
Lampiran 5 Perhitungan Teoritis Algoritma Fuzzy Logic ......................................... L-40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR
Gambar 2.1 LED Infra merah ................................................................................................ 4
Gambar 2.2 Rangkaian Transmitter ....................................................................................... 5
Gambar 2.3 Penampang Photodioda LED ............................................................................. 5
Gambar 2.4 Prinsip Kerja Photodioda ................................................................................... 6
Gambar 2.5 Operasi reverse-bias menggunakan simbol standar ........................................... 6
Gambar 2.6. (a) Struktur PNP Transistor (b) Simbol PNP Transistor .................................. 7
Gambar 2.7. (a) Struktur NPN Transistor (b) Simbol NPN Transistor ................................. 7
Gambar 2.8. Contoh rangkaian transistor sederhana ............................................................. 8
Gambar 2.9. Kaki-kaki Pada LCD....................................................................................... 10
Gambar 2.10 Komparator LM339 ....................................................................................... 10
Gambar 2.11 Jenis Relay berdasarkan Pole dan Throw ...................................................... 11
Gambar 2.12. Konfigurasi Pin ATmega32 .......................................................................... 12
Gambar 2.13 Register TCCR0 ............................................................................................. 14
Gambar 2.14 Register TCCR1B ......................................................................................... 15
Gambar 2.15 Register TIMSK............................................................................................. 15
Gambar 2.16 Register TIFR ................................................................................................ 16
Gambar 2.17 Ilustrasi I2C ................................................................................................... 16
Gambar 2.18 Kondisi sinyal start dan stop .......................................................................... 17
Gambar 2.19 Sinyal ACK dan NACK................................................................................. 17
Gambar 2.20 Transfer Bit pada I2C bus .............................................................................. 17
Gambar 2.21 Konfigurasi Pin ATmega8 ............................................................................. 18
Gambar 2.22 Register MCU Control ................................................................................... 22
Gambar 2.23 Register GICR ............................................................................................... 22
Gambar 2.24 Perbedaan (a) logika Tegas dan (b) logika Fuzzy ........................................ 23
Gambar 2.25 Representasi Linear Naik ............................................................................... 24
Gambar 2.26 Representasi Linear Turun ............................................................................. 24
Gambar 2.27 Representasi Kurva Segitiga .......................................................................... 25
Gambar 2.28. Representasi Kurva Trapesium ..................................................................... 25
Gambar 3.1 Detail Blok Diagram ........................................................................................ 30
Gambar 3.2. Skema 2D secara keseluruhan ........................................................................ 31
Gambar 3.3. Rancangan prototype (3D). (a) prototype tampak dari atas persimpangan. ... 32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 3.4. (a) sensor kendaraan keluar. (b) sensor kendaraan yang masuk ..................... 32
Gambar 3.5 Contoh penampil Jumlah kendaraan pada Sisi C ............................................ 33
Gambar 3.6. Rangkaian Osilator ......................................................................................... 34
Gambar 3.7. Rangkaian Reset ............................................................................................. 34
Gambar 3.8 Penggunaan port pada ATMEGA32 sebagai Master ...................................... 35
Gambar 3.9 ATmega8 pada Slave ....................................................................................... 36
Gambar 3.10 Skematik LCD 20x4 ...................................................................................... 37
Gambar 3.11 Tampilan LCD pada Master .......................................................................... 37
Gambar 3.12 Rangkaian LCD pada Slave ........................................................................... 38
Gambar 3.13 Tampilan LCD pada Slave ............................................................................. 38
Gambar 3.14 Rangkaian Komparator .................................................................................. 39
Gambar 3.15. Relay Pengaktif Lampu 12VDC ................................................................... 40
Gambar 3.16 Diagram Alir Utama ...................................................................................... 42
Gambar 3.17 Flowchart Mode Nyala Lampu Awal ............................................................ 43
Gambar 3.18. Diagram Alir Anak Cabang X ...................................................................... 45
Gambar 3.19 Diagram Pengiriman Data dari Slave ............................................................ 46
Gambar 3.20 Diagram Alir Sub Rutin Fuzzy Logic ............................................................ 47
Gambar 3.21 Framework Input dan Output ....................................................................... 48
Gambar 3.22 Framework Input X ....................................................................................... 48
Gambar 3.23 Framework Output X ..................................................................................... 49
Gambar 4.1 (a) Prototype Tampak Atas. (b) Prototype keseluruhan salah satu sis ........... 53
Gambar 4.2. (a) Sensor Kendaraan Keluar. (b) Sensor Kendaraan Masuk. (c) Lampu Lalu
Lintas. .................................................................................................................................. 54
Gambar 4.3 (a) Board Relay Lampu Lalu Lintas (b) Board Komparator .......................... 54
Gambar 4.4. (a) Board pada Slave (b) Board pada Master ............................................... 55
Gambar 4.5. Tampilan LCD 16x2 Slave A ......................................................................... 56
Gambar 4.6 Penampil CD 20x4 pada Master ...................................................................... 56
Gambar 4.7 Rangkaian Master ............................................................................................ 57
Gambar 4.8 Rangkaian Aktuator pada Master .................................................................... 58
Gambar 4.9 Rangkaian Keseluruhan Slave ......................................................................... 58
Gambar 4.10. Inisialisasi dan pendeklarasian program pada Slave A ................................. 71
Gambar 4.11. Setting Awal untuk mengaktifkan fungsi Interupsi ...................................... 72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
Gambar 4.12 Listing Program untuk fungsi Interupsi ......................................................... 72
Gambar 4.13 listing program pada void main() slave ......................................................... 73
Gambar 4.14. (a)Setting Port SDA dan SCL I2C Slave. (b) Setting alamat dari Slave ....... 74
Gambar 4.15. Listing Program I2C pada Slave A ............................................................... 74
Gambar 4.16. Void main komunikasi I2C ........................................................................... 75
Gambar 4.17. Inisialisasi dan deklarasi program pada Master ............................................ 76
Gambar 4.18. (a) pengaktifan fungsi I2C (b) inisialisasi port SDA dan SCL Master......... 76
Gambar 4.19. Listing Program I2C ..................................................................................... 77
Gambar 4.20. Penampil jumlah kendaraan tiap cabang ...................................................... 78
Gambar 4.21. Tampilan saat nyala lampu awal ................................................................... 79
Gambar 4.22. Listing program nyala lampu awal ............................................................... 79
Gambar 4.23. Listing program “fuzzifikasi()” ..................................................................... 80
Gambar 4.24. Frame pada pemrograman ............................................................................ 80
Gambar 4.25. Inisialisasi global untuk fungsi “pemilihan()” ............................................. 81
Gambar 4.26 Contoh data yang masuk dalam 2 kategori .................................................... 81
Gambar 4.27. Listing program fungsi “pemilihan()” sisi A ............................................... 82
Gambar 4.28. Listing program "basis_aturan()" ................................................................. 83
Gambar 4.29 Contoh penegasan MOM (a) fungsi turun (b) fungsi naik dan turun ........... 84
Gambar 4.30. Listing program fungsi "defuzzifikasi ()" ...................................................... 84
Gambar 4.31. Fungsi "fuzzy()" ............................................................................................ 85
Gambar 4.32. Listing program nyala lampu adaptif cabang A ............................................ 85
Gambar 4.33. Fungsi "penampil_waktu()" .......................................................................... 86
Gambar 4.34. Listing fungsi "semua_merah()" dan "nyala_adaptif_a()" ........................... 87
Gambar 4.35. Keseluruhan fungsi yang digunakan "cabang_a()" ...................................... 87
Gambar 4.36. Void main program pada Master .................................................................. 87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
DAFTAR TABEL
Tabel 2.1 Penggunaan CS02, CS01, dan CS00 pada TCCR0 ............................................. 14
Tabel 2.2 Penggunaan CS02, CS01, dan CS00 pada TCCR1B .......................................... 15
Tabel 2.3. Port B pada ATmega8 ........................................................................................ 18
Tabel 2.4 Port C ATmega8 .................................................................................................. 19
Tabel 2.5 Port D pada ATmega8 ......................................................................................... 19
Tabel 2.6 Setting kondisi pada INTx ................................................................................... 22
Tabel 3.1. Ukuran Real di Lapangan ................................................................................... 32
Tabel 3.2 Keterangan Penggunaan Pin Master ................................................................... 35
Tabel 3.3 Penggunaan Pin Slave 1 ...................................................................................... 36
Tabel 3.4 Penggunaan Pin LCD ATmega32 ....................................................................... 37
Tabel 3.5 Penamaan Pin LCD pada Slave ........................................................................... 38
Tabel 3.6 Penamaan sensor infra merah .............................................................................. 41
Tabel 3.7 Rincian Mode Awal ............................................................................................. 44
Tabel 3.8 Pewaktuan lampu pada mode nyala lampu awal ................................................. 45
Tabel 3.9 Kondisi Rules ...................................................................................................... 49
Tabel 3.10 Derajat Keanggotaan Framework Input ............................................................ 50
Tabel 4.1 Data dengan kategori terpilih .............................................................................. 60
Tabel 4.2 Defuzzifikasi Penegasan MOM ........................................................................... 61
Tabel 4.3 Data Tegangan Sensor dan Komparator .............................................................. 63
Tabel 4.4 Data Pengujian cabang A ................................................................................... 64
Tabel 4.5 Data Pengujian cabang B ..................................................................................... 66
Tabel 4.6 Data Pengujian cabang C ..................................................................................... 68
Tabel 4.7 Output "basis_aturan()" ...................................................................................... 83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
1. BAB I
PENDAHULUAN
1.1. Latar Belakang
Perkembangan transportasi pada zaman ini sangat pesat, hal ini menyebabkan daya
tarik peminat kendaraan menjadi semakin banyak. Pertambahan jumlah kendaraaan
menyebabkan lalu lintas menjadi padat. Di kota-kota besar sering terjadi kemacetan pada
persimpangan jalan, ditambah dengan tingkat urbaninasi baik untuk bekerja maupun
aktivitas masyarakat yang tidak menentu sering menimbulkan kesenjangan jumlah
kendaraan pada masing-masing cabang persimpangan jalan. Kesenjangan jumlah
kendaraan ini dapat terurai, namun membutuhkan waktu yang lebih lama jika hanya
dengan sistem pewaktuan lampu lalu lintas biasa (tidak adaptif). Oleh karena itu
dibutuhkan perangkat pengatur timer lampu lalu lintas berdasarkan jumlah kendaraan yang
bertujuan untuk mengontrol lama nyala lampu lalu lintas.
Sudah ada solusi yang ditawarkan dengan judul “Perangkat Pengatur Timer Lampu
Lalu Lintas Berdasarkan Antrian Kendaraan” [1]. Kelebihan dari alat ini adalah
menggunakan 1 mikrokontroler dan area yang diamati ada 2 cabang.
Dalam Tugas Akhir ini akan dibuat sistem pengatur lampu lalu lintas berdasarkan
jumlah kendaraan dengan ATmega32 sebagai pemroses data, dan ATmega8 pada setiap
cabang. Jumlah kendaraan yang akan mengantri pada tiap sisi akan dideteksi oleh sensor
infra merah yang ada di ATmega8.
Prinsip kerja sistem ini adalah input berupa jumlah kendaraan tiap cabang. Tahap
pertama proses pengambilan data pada mikrokontroler slave adalah dengan terdeteksinya
prototype kendaraan oleh sensor infra merah. Pemasangan sensor adalah pada setiap
persimpangan akan diberi 2 sensor infra merah, yang mana sensor infra merah-1 akan
bekerja sebagai sensor kendaraan input dan sensor infra merah-2 akan bekerja sebagai
sensor output. Kedua sensor infra merah itu akan menjadi masukan dari masing-masing
mikrokontroler slave. mikrokontroler master akan bekerja sebagai prosessor untuk
mengontrol lama waktu dari nyala lampu lalu lintas, sehingga dapat meningkatkan efisiensi
waktu dari pengguna jalan saat melewati persimpangan. Data yang telah dibaca dari
mikrokontroler master dan slave akan ditampilkan pada LCD 20x4 sebagai pemberi
informasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
1.2. Tujuan dan Manfaat
Tujuan dari penulisan tugas akhir ini adalah membuat hardware (prototype) dan
software untuk rekayasa pengaturan lampu lalu lintas berdasarkan jumlah kendaraan.
Manfaat dari pembuatan alat ini adalah menjadi salah satu solusi untuk mengurai
kesenjangan jumlah kendaraan yang terjadi di persimpangan (pertigaan).
1.3. Batasan Masalah
Agar Tugas Akhir ini mengarah pada tujuan dan menghindari terlalu kompleks
permasalahan yang muncul, maka perlu adanya batasan-batasan masalah yang sesuai
dengan judul tugas akhir ini. Adapun batasan masalahnya antara lain:
a. Mikrokontroler yang digunakan adalah ATmega32.
b. Model persimpangan jalan yang dipakai adalah simpang tiga (pertigaan).
c. Ukuran prototype 220x120cm, panjang jalur 100cm, lebar jalur 14cm.
d. Kapasitas dari setiap jalur adalah 10 unit mobil mainan dengan rasio 1:60 dimana
tiap skala 1 mewakili 7cm.
e. Prototipe kendaraan yang digunakan adalah mobil mainan tanpa baterai.
f. Sensor infra merah digunakan sebagai sensor pendeteksi kendaraan.
g. Sensor infra merah yang digunakan adalah yang berbentuk LED, yang dipasang
dengan jarak antar masing-masing sensor sejauh 90cm.
h. Pemrograman menggunakan perangkat lunak CVAVR.
i. Aktuator berupa lampu lalu lintas merah, kuning, hijau 12V DC.
j. Penampil waktu dan jumlah kendaraan ditampilkan dengan LCD 20x4.
k. Data yang ditampilkan berupa jumlah unit mobil pada tiap cabang (LCD Slave)
dan lama waktu lampu merah,kuning,hijau menyala pada LCD master.
l. Algoritma yang digunakan dengan Fuzzy Logic
1.4. Metodologi Penelitian
1. Studi Literatur, yaitu dengan cara membaca buku-buku, jurnal-jurnal dan sumber
internet yang terpercaya yang berkaitan dengan permasalahan yang dibahas dalam
tugas akhir ini.
2. Perancangan subsistem hardware. Pada tahap ini, penulis mencari bentuk pemodelan
yang optimal dari keseluruhan sistem dan mempertimbangkan bermacam-macam
faktor permasalahan dan kebutuhan yang ditentukan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
3. Pembuatan subsistem hardware. Pada tahap ini penulis membuat hardware dari alat
agar pada perancangan software dapat langsung diaplikasikan. Masukan pertama
berupa sensor infra merah-in yang akan mendeteksi adanya kendaraan yang masuk
ke area penelitian dan sensor infra merah-out yang akan mendeteksi adanya
kendaraan yang keluar.
4. Pembuatan subsistem software. Meliputi programming, pada tahap ini penulis
menggunakan mikrokontroler ATmega32 sebagai kontroler dan pengambil
keputusan yang dimasukan dengan bahasa pemrograman C menggunakan software
Codevision AVR.
5. Eksperimen, yaitu dengan melakukan praktek uji coba berupa pengujian terhadap
hardware dan software dari pembuatan alat dalam tugas akhir.
6. Proses pengambilan data. Pada tahap ini proses pengambilan data dilakukan dengan
cara mengamati data dibaca oleh sensor infra merah pada masing-masing
mikrokontroler slave yang akan tertampil di LCD 20x4 pada mikrokontroler Master.
Mobil mainan akan merepresentasikan kendaraan yang ada di persimpangan jalan.
Lalu nyala lampu akan berubah menyesuaikan dari jumlah kendaraan setiap sisinya.
Semakin banyak jumlah kendaraan akan diatasi dengan memperpanjang waktu
lampu hijau menyala.
7. Analisis dan penyimpulan hasil percobaan. Analisis dilakukan dengan cara
membandingkan data yang dibaca dari jumlah kendaraan dengan lama waktu nyala
lampu dari ketiga sisi. Pengecekan dilakukan dengan membaca data tertampil pada
LCD.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
2. BAB II
DASAR TEORI
2.1. LED Inframerah
Sensor Infra merah yang digunakan adalah LED infra merah. LED infra merah
adalah sebuah penghasil cahaya, yang menghasilkan spectrum infra merah. LED infra
merah menghasilkan panjang gelombang yang sama dengan yang dapat diterima oleh
photodetektor silikon, sehingga LED infra merah dapat dipasangkan dengan Photodioda.
LED inframerah digunakan untuk menghasilkan radiasi inframerah, yang merupakan
P-N junction dimana pada saat LED infra merah dihubungkan secara pra-tegangan (bias
forward), apabila pada anoda diberi tegangan yang lebih positif dari pada katoda pada
LED, arus akan mengalir. Reaksi pada semikonduktor adalah terjadinya perpindahan
elektron dari tipe N menuju tipe P serta perpindahan hole dari tipe P ke tipe N pada pita
valensinya. Akibatnya terjadi rekombinasi antara elektron dan hole maka akan melepaskan
energi yang berupa pancaran cahaya. Dengan berkurangnya arus input dan naiknya suhu,
maka efisiensi pancaran cahaya akan berkurang. Penampang dari LED infra merah
ditunjukan pada Gambar 2.1. [2]
Gambar 2.1 LED Infra merah
Pada LED infra merah memancarkan cahaya yang tidak dapat dilihat oleh mata. LED
akan memancarkan gelombang cahaya pada sebuah panjang gelombang tunggal, atau dapat
dikatakan pada frekuensi tunggal. Namun sesungguhnya LED akan memancarkan
gelombang cahaya dengan satu daerah panjang gelombang. Daerah ini disebut sebagai
panjang gelombang. Pada umumnya LED mempunyai panjang gelombang sebesar 20 –
100 nm. Rangkaian Transmitter yang digunakan adalah dengan seri antara resistor dengan
LED infra merah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Gambar 2.2 Rangkaian Transmitter
Transmitter dirangkai seperti pada Gambar 2.2, rumus yang digunakan untuk
menentukan tahanan (resistor) pada transmitter inframerah adalah:
RT =
(2.1)
2.2. Photodioda
Photodioda merupakan sensor cahaya semikonduktor yang dapat mengubah besaran
cahaya menjadi besaran listrik. Photodioda adalah dioda yang aktif berdasarkan dari
intensitas cahaya, dengan sambungan P-N yang cara kerjanya dipengaruhi oleh cahaya.
Penampang pada photodioda ditunjukan dengan Gambar 2.3.
Gambar 2.3 Penampang Photodioda LED
Prinsip kerjanya sama dengan dioda pada umumnya. Jika photodioda terkena cahaya
maka photodioda akan bekerja seperti resistor. Photodioda akan memberikan resistansi
yang besar agar arus yang mengalir semakin mengecil atau sebaliknya. Cahaya yang dapat
dideteksi oleh photodioda adalah sinar infra merah, ultraviolet hingga sinar X. Cara kerja
photodioda ditunjukan dengan Gambar 2.4, cahaya yang masuk ke photodioda akan
menghasilkan elektron-elektron dan masuk ke pita konduksi dan mengalir kearah positif
dari sumber tegangan, sedangkan hole yang dihasilkan mengalir ke arah negative sumber
tegangan. Besarnya pasangan elektron ataupun hole tergantung dari intensitas cahaya yang
I
VTx
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
diserap oleh photodioda dalam hal ini besarnya yang dihasilkan bergantung dari besar
kecilnya radiasi yang dipancarkan oleh inframerah.
Gambar 2.4 Prinsip Kerja Photodioda
Photodioda adalah perangkat yang beroperasi dalam bias terbalik, seperti yang
ditunjukkan pada Gambar 2.5, di mana I adalah reverse light current. Photodioda memiliki
jendela transparan kecil yang memberikan cahaya untuk menyinari pn junction.
Gambar 2.5 Operasi reverse-bias menggunakan simbol standar
Photodioda berbeda dari dioda penyearah dimana ketika pn juntion terpapar cahaya,
arus balik meningkat dengan intensitas cahaya. Ketika tidak ada cahaya, arus balik hampir
dapat diabaikan dan disebut dark current. arus balik untuk partikel ini kira-kira 1.4 uA
pada tegangan reverse bias 10 V dengan irradiance 0,5mW/cm². Karena itu, hambatan
dari perangkat ini adalah:
(2.2)
Pada 20mW/cm², arus kira-kira 55uA pada VR = 10 V. Perhitungan ini menunjukkan
bahwa photodioda dapat digunakan sebagai perangkat variable-resistance yang dapat
dikontrol oleh intensitas cahaya. [3]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2.3. Transistor [3]
Transistor adalah perangkat yang terdiri dari tiga lapis N-P-N atau P-N-P seperti
ditunjukkan pada Gambar 2.6.(a)(b) dan Gambar 2.7.(a)(b)
3.
„(a) (b)
Gambar 2.6. (a) Struktur PNP Transistor (b) Simbol PNP Transistor
„(a) „(b)
Gambar 2.7. (a) Struktur NPN Transistor (b) Simbol NPN Transistor
Perubahan pada arus basis akan mengakibatkan perubahan yang telah dikuatkan
pada arus kolektor pada tegangan kolektor-emitor yang dikenakan padanya. Simbol
yang sesuai dengan Gambar 2.6 (b). Tegangan dadal akan dicapai bila tegangan yang
ditambahkan mencapai suatu batas. Tegangan balik kolektor-emitor yang dapat
menyebabkan dadal pada sambungan basis-emitor. Pada Gambar 2.6 (a) dan (b),
ditunjukkan transistor P-N-P yang mempunyai karakteristik yang menyerupai transistor
N-P-N, tapi arus dan tegangannya dalam arah kebalikannya. Pada kondisi saturasi (jenuh)
dan keadaan cut-off (mati) maka transistor dapat dijadikan saklar dengan pemutus
dan penyambung (tegangan pada basisnya).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
Gambar 2.8. Contoh rangkaian transistor sederhana
Pada Gambar 2.8. merupakan contoh rangkaian transistor, dimana kondisi cut off,
transistor berada di wilayah cut off ketika persimpangan basis-emitor tidak forward-bias.
Mengabaikan arus bocor, semua arus nol, dan VCE sama dengan VCC.
VCE (cutoff) = VCC (2.3)
Pada kondisi Saturasi, ketika persimpangan basis-emitor berada forward-bias dan ada
arus basis yang cukup untuk menghasilkan arus kolektor maksimum, maka transistor
saturasi. Rumus untuk arus saturasi kolektor adalah:
(2.4)
Karena VCE (sat) sangat kecil dibandingkan dengan VCC, sehingga dapat diabaikan.
Nilai minimum dari arus basis yang dibutuhkan untuk menghasilkan kejenuhan adalah:
(2.5)
Biasanya, IB harus secara signifikan lebih besar dari IB(min) untuk memastikan
bahwa transistor sudah jenuh. Tegangan yang melewati RB adalah:
VRB = VIN – VBE (2.6)
Kemudian nilai hambatan RB dapat diketahui menggunakan Hukum Ohm seperti :
(2.7)
2.4. LCD (Liquid Chrystal Display)
LCD (Liquid Chrystal Display) adalah suatu jenis media yang berfungsi untuk
menampilkan suatu data berupa karakter menggunakan kristal cair. LCD terdiri dari
lapisan cair diantara dua pelat kaca. Film transparan diletakan dibelakang kaca dapat
menghantarkan listrik atau back plane.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.4.1. Material LCD
LCD adalah lapisan dari campuran organik antara lapisan kaca bening dengan
elektroda transparan indium oksida dalam bentuk tampilan seven-segment dan lapisan
elektroda pada kaca belakang. Ketika elektroda diaktifkan dengan medan listrik
(tegangan), molekul organik yang panjang dan silindris menyesuaikan diri dengan
elektroda dari segmen. Lapisan sandwich memiliki polarizer cahaya vertikal depan dan
polarizer cahaya horisontal belakang yang diikuti dengan lapisan reflektor. Cahaya yang
dipantulkan tidak dapat melewati molekul-molekul yang telah menyesuaikan diri dan
segmen yang diaktifkan terlihat menjadi gelap dan membentuk karakter data yang ingin
ditampilkan.
2.4.2. Pengendali LCD
Pada LCD terdapat mikrokontroler yang berfungsi sebagai pengendali tampilan
karakter LCD. Pada tiap mikrokontroler dilengkapi dengan memori dan register sebagai
berikut [4].
DDRAM (Display Data Random Access Memory) merupakan memori tempat karakter
yang akan ditampilkan berada.
CGRAM (Character Generator Random Access Memory) merupakan memori untuk
menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah
sesuai dengan keinginan.
CGROM (Character Generator Read Only Memory) merupakan memori yang
menggambarkan pola sebuah karakter dimana pola tersebut merupakan karakter dasar
yang sudah ditentukan secara permanen oleh pabrikan pembuat LCD (Liquid Cristal
Display) tersebut sehingga pengguna tinggal mengambilnya sesuai alamat memorinya
dan tidak dapat merubah karakter dasar yang ada dalam CGROM
Register control yang terdapat dalam suatu LCD adalah sebagai berikut:
Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler ke
panel LCD (Liquid Cristal Display) pada saat proses penulisan data atau tempat status
dari panel LCD (Liquid Cristal Display) dapat dibaca pada saat pembacaan data.
Register data yaitu register untuk menuliskan atau membaca data dari atau ke
DDRAM. Penulisan data pada register akan menempatkan data tersebut ke DDRAM
sesuai dengan alamat yang telah diatur sebelumnya.
Fungsi dari kaki-kaki pada pin LCD ditunjukan pada Gambar 2.9.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Gambar 2.9. Kaki-kaki Pada LCD
Pin data (D0-D7) adalah jalur untuk memberikan data karakter yang ingin ditampilkan
menggunakan LCD (Liquid Cristal Display) dapat dihubungkan dengan bus data dari
rangkaian lain seperti mikrokontroler dengan lebar data 8 bit.
Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan jenis data
yang masuk, apakah data atau perintah. Logika Low menunjukan yang masuk adalah
perintah, sedangkan Logika High menunjukan data.
Pin R/W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis data,
sedangkan High baca data.
Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar.
Pin VO (Contrast) berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini
dihubungkan dengan trimpot 5 Kohm, jika tidak digunakan dihubungkan ke ground,
sedangkan tegangan catu daya ke LCD sebesar 5 Volt.
2.5. Komparator LM339
Komparator berfungsi untuk membandingkan input yang diterima. Komparator
konvensional umumnya merupkan sebuah penguat opearasional (op-amp). ditunjukan pada
Gambar 2.10
Gambar 2.10 Komparator LM339
Komparator terdiri atas 2 input, Vin (masukan dari sensor) dan Vref (tegangan
referensi). Jika tegangan Vin lebih besar dari tegangan Vref, maka Vo akan mengeluarkan
logika 1 yang berarti 5V atau setara dengan VCC. Sebaliknya Vin lebih kecil dari tegangan
Vref, maka Vo akan mengeluarkan logika 0 yang berarti 0V [5].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
2.6. Relay
Relay adalah komponen yang terdiri dari sebuah kumparan berinti besi yang akan
menghasilkan elektromagnet ketika kumparannya dialiri oleh arus listrik. Elektromagnet
ini kemudian menarik mekanisme kontak yang akan menghubungkan kontak Normally-
Open (NO) dan membuka kontak Normally-Closed (NC). Normally disini berarti relay
dalam keadaan non-aktif atau non-energized, atau kumparan relay tidak dialiri arus. Jadi
kontak Normally-Open (NO) adalah kondisi awal sebelum diaktifkan akan selalu berada
di posisi OPEN (terbuka), dan kontak Normally-Closed (NC) adalah kondisi awal sebelum
diaktifkan akan selalu berada di posisi CLOSE (tertutup). [6]
Berdasarkan penggolongan jumlah Pole dan Throw-nya sebuah relay, maka relay
dapat digolongkan seperti ditunjukan pada Gambar 2.11 :
Single Pole Single Throw (SPST) : Relay golongan ini memiliki 4 Terminal, 2
Terminal untuk Saklar dan 2 Terminalnya lagi untuk Coil.
Single Pole Double Throw (SPDT) : Relay golongan ini memiliki 5 Terminal, 3
Terminal untuk Saklar dan 2 Terminalnya lagi untuk Coil.
Double Pole Single Throw (DPST) : Relay golongan ini memiliki 6 Terminal,
diantaranya 4 Terminal yang terdiri dari 2 Pasang Terminal Saklar sedangkan 2
Terminal lainnya untuk Coil. Relay DPST dapat dijadikan 2 Saklar yang
dikendalikan oleh 1 Coil.
Double Pole Double Throw (DPDT) : Relay golongan ini memiliki Terminal
sebanyak 8 Terminal, diantaranya 6 Terminal yang merupakan 2 pasang Relay
SPDT yang dikendalikan oleh 1 (single) Coil. Sedangkan 2 Terminal lainnya untuk
Coil.
Gambar 2.11 Jenis Relay berdasarkan Pole dan Throw
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
2.7. Mikrokontroler ATmega32 [7]
AVR (Alf and Vegard’s Risc Processor) merupakan seri mikrokontroler CMOS 8-
bit yang diproduksi oleh Atmel.
2.7.1. Arsiektur AVR ATmega32
Mikrokontroler ATmega32 memiliki arsitektur sebagai berikut: Saluran IO
sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D.
a. ADC 10 bit sebanyak 8 Channel.
b. Tiga buah Timer/Counter yaitu Timer 0, Timer 1, dan Timer 2.
c. Watchdog Timer dengan osilator internal.
d. SRAM sebanyak 512 byte.
e. Memori Flash sebesar 32kb.
f. Sumber Interupsi internal dan eksternal.
g. Port SPI (Serial Pheriperal Interface).
h. EEPROM on board sebanyak 512 byte.
i. Komparator analog.
j. Port USART (Universal Synchronus Asynchronus Receiver Transmitter )
2.7.2. Konfigurasi Pin Mikrokontroler ATmega32
Gambar 2.12. Konfigurasi Pin ATmega32
Konfigurasi pin mikrokontroler ATmega32 memiliki 40-pin DIP (Dual On-Line
Package) ATmega32 memiliki konfigurasi pada Gambar 2.12. sebagai berikut:
a. VCC , sebagai power supply
b. GND , sebagai ground
c. Port A (PA7...PA0), berfungsi sebagai input analog pada ADC (Analog Digital
Converter). Port A juga berfungsi sebagai suatu Port I/O 8-bit dua arah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
d. Port B (PB7...PB0), adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-
up (yang dipilih untuk beberapa bit)
e. Port C (PC7...PC0), adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-
up (yang dipilih untuk beberapa bit)
f. Port D (PD7...PD0), adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-
up (yang dipilih untuk beberapa bit)
g. RESET , sebagai reset input.
h. XTAL1 , sebagai input oscillator.
i. XTAL2 , sebagai output oscillator.
j. AVCC adalah pin penyedia tegangan untuk Port A dan ADC.
k. AREF adalah pin referensi analog untuk ADC.
Port A berfungsi sebagai input analog pada A/D Konverter dan port I/O 8-bit dua
arah. Port B, Port C, Port D adalah suatu Port I/O 8-bit dua arah dengan resistor internal
pull-up (yang dipilih untuk beberapa bit)
2.7.3. Organisasi Memori AVR ATmega32
Mikrokontroler ATmega32 memiliki 3 jenis memori yaitu memori program,
memori data dan EEPROM. Masing-masing memiliki ruang sendiri dan terpisah, sebagai
berikut:
2.7.3.1. Memori Program
Kode program disimpan dalam flash memory, yaitu memori jenis non-volatile yang
tidak akan hilang datanya meskipun catu daya dimatikan. Dalam ATmega32 terdapat 32
Kbyte On-Chips di dalam sistem Memory Flash Reprogrammable untuk menyimpan
programa. Untuk keamanan perangkat lunak, flash memori dibagi menjadi dua bagian,
yaitu boot program dan bagian aplikasi program.
2.7.3.2. Memori Data
Memori daya adalah memori RAM (Random Access Memory) yang digunakan
untuk keperluan program. Memori data terdiri dari 32 General Purpose Register (GPR)
yang merupakan register khusus yang bertugas khusus untuk membantu eksekusi program
oleh Arithmetic Logic Unit (ALU) dan I/O Register dan additional I/O yang difungsikan
khusus untuk mengendalikan berbagai peripheral dalam mikrokontroler antara lain pin,
port, Timer/Counter, USART. ATmega32 memiliki kapasitas memori data sebesar 608
Byte yang terbagi menjadi 3 bagian yaitu register I/O dan SRAM.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
2.7.4. Timer / Counter
Timer/Counter adalah fitur dalam mikrokontroler yang memiliki fungsi sebagi
pewaktu (timer) atau sebagai pencacah (counter) suatu nilai cacahan. Pada mikrokontroler
AVR ATMEGA32, fitur Timer/Counter juga dapat difungsikan sebagai pembangkit sinyal
gelombang pulse width modulation (PWM) yang dapat digunakan pada peranti-peranti
yang membutuhkan sinyal gelombang PWM dalam operasinya. ATmega32 mempunyai 3
buah Timer/Counter yakni Timer /Counter 0 (8bit), Timer /Counter 1 (16bit), Timer /
Counter 2 (8bit).
Pada fungsi timer isi register ditambah satu setiap siklus mesin. Pada fungsi
counter, penambahan isi register diatur oleh user secara software. Apabila periode waktu
tertentu telah dilampaui, Timer/Counter segera menginterupsi mikrokontroler untuk
memberitahukan bahwa perhitungan peritode waktu telah selesai dilaksanakan.
2.7.5. Timer/Counter Control Register 0
Timer/Counter 0 merupakan 8 bit Timer/Counter, pengaturan Timer/Counter 0
diatur oleh TCCR0 (Timer/Counter control register 0) yang ditunjukan oleh Gambar 2.13.
Gambar 2.13 Register TCCR0
Bit 3-7 memiliki fungsi untuk melakukan setting pada PWM
Bit 2, 1, 0 (CS02, CS01, CS00)
Clock Select. Ketiga bit tersebut memilih sumber clock yang akan digunakan oleh
Timer/Counter. Dengan konfigurasi yang ditunjukan oleh Tabel 2.1.
Tabel 2.1 Penggunaan CS02, CS01, dan CS00 pada TCCR0
CS02 CS01 CS00 Deskripsi
0 0 0 Tidak ada sumber clock (Timer/Counter berhenti)
0 0 1 ClkI/O/tidak ada prescaling
0 1 0 ClkI/O/8 (dari prescaling)
0 1 1 ClkI/O/64
1 0 0 ClkI/O/256(dari prescaling)
1 0 1 ClkI/O/1024 (dari prescaling)
1 1 0 Sumber Clock eksternal pada pin T0. Clock pada Falling edge
1 1 1 Sumber Clock eksternal pada pin T0. Clock pada Rising edge
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
2.7.6. Timer/Counter 1
Timer/Counter 1 memiliki perbedaan dengan timer yang lain yakni menggunakan 16
bit Timer Counter yang ditunjukan oleh Gambar 2.14.
Gambar 2.14 Register TCCR1B
Bit 2,1,0 (CS11, CS12, CS10)
Clock Select. Ketiga bit tersebut (CS2/CS1/CS0) mengatur sumber clock yang
digunakan untuk Timer/Counter1, dengan konfigurasi ditunjukan oleh Tabel 2.2.
Tabel 2.2 Penggunaan CS02, CS01, dan CS00 pada TCCR1B
CS02 CS01 CS00 Deskripsi
0 0 0 Tidak ada sumber clock (Timer/Counter berhenti)
0 0 1 ClkI/O/tidak ada prescaling
0 1 0 ClkI/O/8 (dari prescaling)
0 1 1 ClkI/O/64
1 0 0 ClkI/O/256(dari prescaling)
1 0 1 ClkI/O/1024 (dari prescaling)
1 1 0 Sumber Clock eksternal pada pin T1. Clock pada Falling edge
1 1 1 Sumber Clock eksternal pada pin T1. Clock pada Rising edge
2.7.7. Register TIMSK (Timer/Counter Interrupt Mask Register)
Bit pada register TIMSK ditunjukan oleh Gambar 2.15.
Gambar 2.15 Register TIMSK
Bit2: TOIE 1/0 (Timer Overflow Interrupt Enable)
Berfungsi untuk mengaktifkan interupsi Overflow TCNT1 ketika bit ini di set (1).
Bit 3-4: OCIE1 B/A (Output Compare Match Interrupt Enable)
Berfungsi untuk mengaktifkan Interupsi Output Compare B Match ketika bit ini
diaktifkan (1).
Bit 5 TCIE1: Timer/Counter 1, Input Capture Interrupt Enable
Berfungsi untuk mengaktifkan input capture ketika bit ini di aktifkan (bernilai 1).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
2.7.8. Register TIFR
Bit pada register TIFR yang ditunjukan oleh Gambar 2.16.
Gambar 2.16 Register TIFR
Bit 2: TOV1
Bit TOV1 adalah flag/indicator terjadinya timer overflow
Bit 3: OCF1B
Bit OCF1 adalah flag/indicator terjadinya timer1 compare B match
Bit 4: OCF1A
Bit OCF1 adalah flag/indicator terjadinya timer1 compare A match
Bit 5: ICF1
Bit ICF1 adalah flag indicator terjadinya input capture pada pin ICP1 (PortB.0)
2.7.9. Komunikasi I2C [8]
I2C (Inter-Integrated Circuit) umumnya disebut sebagai “two-wire interface”.
Konfigurasi I2C ditunjukan pada Gambar 2.17
Gambar 2.17 Ilustrasi I2C
Pada komunikasi Inter Integrated Circuit atau sering disebut I2C adalah standar
komunikasi serial dua arah menggunakan dua saluran yang didesain khusus untuk
mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan
SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan
sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus
dengan membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop,
dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan
sebagai perubahan tegangan SDA dari “1” menjadi “0” pada saat SCL “1”.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Sinyal Stop merupakan sinyal untuk mengakhiri semua perintah, didefinisikan sebagai
perubahan tegangan SDA dari “0” menjadi “1” pada saat SCL “1”. Kondisi
sinyal Start dan sinyal Stop ditunjukan pada Gambar 2.18.
Gambar 2.18 Kondisi sinyal start dan stop
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan
dengan ACK Setelah transfer data oleh master berhasil diterima slave, slave akan
menjawabnya dengan mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi
“0” selama siklus clock ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data
dari Master. Kondisi sinyal acknowledge seperti tampak pada Gambar 2.19
Gambar 2.19 Sinyal ACK dan NACK
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata cara yang
telah ditetapkan yaitu:
Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan sibuk.
Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL
dalam keadan tinggi. Keadaan perubahan “1” atau “0” pada SDA hanya dapat
dilakukan selama SCL dalam keadaan rendah. Jika terjadi perubahan keadaan SDA
pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap sebagai
sinyal Start atau sinyal Stop. ditunjukan pada Gambar 2.20.
Gambar 2.20 Transfer Bit pada I2C bus
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
2.8. Mikrokontroler Atmega 8
2.8.1. Arsitektur ATmega8 [9]
ATmega8 adalah mikrokontroller CMOS 8-bit berarsitektur AVRRISC yang
memiliki 8K byte in-System Programmable Flash. Mikrokontroler dengan konsumsi
daya rendah ini mampu mengeksekusi instruksi dengan kecepatan maksimum 16MIPS
pada frekuensi 16MHz. Untuk ATmega8 dapat bekerja pada tegangan antara 4.5-5.5 V.
2.8.2. Konfigurasi Pin Mikrokontroler ATmega 8
Gambar 2.21 Konfigurasi Pin ATmega8
Gambar 2.21 menunjukan konfigurasi dari setiap pin dari ATmega8 yang memiliki
28 Pin, masing-masing pin memiliki fungsi yang berbeda-beda baik sebagai port maupun
fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-masing kaki ATmega8 :
a. VCC , merupakan supply tegangan digital.
b. GND, merupakan ground untuk semua komponen yang membutuhkan grounding
c. Port B (PB0…PB7) , Port B yang merupakan sebuah 7-bit bi-directional I/O port yang
di dalam masing-masing pin terdapat pull-up resistor. Fungsi pada port B ditunjukan
pada Tabel 2.3.
Tabel 2.3. Port B pada ATmega8
Pin Port Fungsi Alternatif
PB7 XTAL2 (Chip Clock Oscillator pin2)
TOSC2 (Timer Oscillator pin 2)
PB6 XTAL1 (Chip Clock Oscillator pin 1 atau Input Clock Eksternal)
TOSC1 (Timer Oscillator pin 1)
PB5 SCK (Clock Input Bus Master SPI)
PB4 MISO (Bus Master Master Input/Output Slave)
PB3 MOSI (Bus Master Master Output/ Input Slave)
OC2 (Timer/Counter2 Output Compare Match Output)
PB2 SS (Bus Master SPI selector)
OC1B (Timer/Counter 1 Output Compare Match B Output)
PB1 OC1A (Timer/Counter 1 Output Compare Match A Output)
PB0 ICP1 (Timer/Counter1 Input Capture Pin)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
d. Port C (PC5…PC0), Port C yang merupakan sebuah 7-bit bi-directional I/O port yang
di dalam masing-masing pin terdapat pull-up resistor. Fungsi pada port C ditunjukan
pada Tabel 2.4.
Tabel 2.4 Port C ATmega8
Port Pin Fungsi Alternatif
PC6 RESET (Reset Pin)
PC5 ADC5 (ADC input Channel 5)
SCL (Jalur Clock Serial Bus Two-wire )
PC4 ADC4 (ADC input Channel 4)
SDA (Jalur Clock Serial Bus Data Input/Output Two-wire )
PC3 ADC3 (ADC input Channel 3)
PC2 ADC2 (ADC input Channel 2)
PC1 ADC1 (ADC input Channel 1)
PC0 ADC0 (ADC input Channel 0)
e. RESET/PC6 , Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi sebagai
pin I/O. Pin ini memiliki karakteristik yang berbeda dengan setiap pin yang terdapat
pada port C lainnya. Namun jika RSTDISBL Fuse tidak diprogram, maka pin ini
akan berfungsi sebagai input reset. Jika level tegangan yang masuk ke pin ini rendah
dan pulsa yang ada lebih pendek dari pulsa minimum, maka akan menghasilkan
suatu kondisi reset meskipun clock-nya tidak bekerja.
f. Port D (PD7…PD0). Port D merupakan 8-bit bi-directional I/O dengan internal pull-
up resistor. Fungsi dari port ini sama dengan setiap port yang lain. Hanya saja pada
port ini tidak terdapat kegunaan-kegunaan yang lain. Pada port ini hanya berfungsi
sebagai masukan dan keluaran atau biasa disebut dengan I/O. Fungsi pada port D
ditunjukan pada Tabel 2.5.
Tabel 2.5 Port D pada ATmega8
Port Pin Fungsi Alternatif
PC7 AIN1 (Analog Komparator Input Negatif)
PC6 AIN0 (Analog Komparator Input Positif)
PC5 T1 (Timer/Counter 1 Eksternal Counter Input)
PC4 XCK (USART Eksternal Clock Input/Output)
T0 (Timer/Counter 0 Eksternal Clock Input)
PC3 INT1 (Input Eksternal Interrupt 1)
PC2 INT0 (Input Eksternal Interrupt 0)
PC1 TXD (Output Pin USART)
PC0 RXD (Input Pin USART)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
g. AVCC, Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus
dihubungkan secara terpisah dengan VCC karena pin ini digunakan untuk analog saja.
Bahkan jika ADC pada AVR tidak digunakan tetap saja disarankan untuk
menghubungkannya secara terpisah dengan VCC. Jika ADC digunakan, maka
AVCC harus dihubungkan ke VCC melalui low pass filter.
h. AREF, merupakan pin referensi jika menggunakan ADC.
2.8.3. Organisasi Memori AVR ATmega8
Memori ATmega yang terbagi menjadi tiga yaitu :
1. Memori Flash
Memori flash adalah memori ROM tempat kode-kode program berada. Kata flash
menunjukan jenis ROM yang dapat ditulis dan dihapus secara elektrik. Memori flash
terbagi menjadi dua bagian, yaitu bagian aplikasi dan bagian boot. Bagian
aplikasi adalah bagian kode-kode program apikasi berada. Bagian boot adalah
bagian yang digunakan khusus untuk booting awal yang dapat diprogram untuk
menulis bagian aplikasi tanpa melalui 18 programmer/downloader, misalnya
melalui USART.
2. Memori Data
Memori data adalah memori RAM yang digunakan untuk keperluan program.
Memori data terbagi menjadi empat bagian, yaitu 32 GPR (General Purphose
Register) adalah register khusus yang bertugas untuk membantu eksekusi program
oleh ALU (Arithmetic Logic Unit), dalam instruksi assembler setiap instruksi harus
melibatkan GPR. Dalam bahasa C biasanya digunakan untuk variabel global
atau nilai balik fungsi dan nilai-nilai yang dapat memperingan kerja ALU. Dalam
istilah processor computer sehari-hari GPR dikenal sebagai “chace memory”. I/O
register dan aditional I/O register adalah register yang difungsikan khusus untuk
mengendalikan berbagai pheripheral dalam mikrokontroller seperti pin port,
Timer/Counter, usart dan lain-lain. Register ini dalam keluarga mikrokontroller
MCS51 dikenal sebagi SFR (Special Function Register).
3. EEPROM
EEPROM adalah memori yang dapat mengendap ketika chip mati (off), digunakan
untuk keperluan penyimpanan data yang tahan terhadap gangguan catu daya.
4. Timer/Counter 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Timer/Counter 0 adalah sebuah Timer/Counter yang dapat mencacah sumber
pulsa/clock baik dari dalam chip (timer)ataupun dari luar chip (counter) dengan
kapasitas 8-bit atau 256 cacahan. Timer/Counter dapat digunakan untuk :
a) Timer/Counter biasa
b) Clear Timer on Compare Match (selain ATmega8)
c) Generator frekuensi (selain ATmega8)
d) Counter pulsa eksternal
5. Komunikasi Serial Pada ATmega8
Mikrokontroller AVR ATmega8 memiliki port USART pada pin 2 dan pin 3
untuk melakukan komunikasi data antara mikrokontroller dengan mikrokontroller
ataupun mikrokontroller dengan komputer. USART dapat difungsikan sebagai
transmisi data sinkron, dan asinkron. Sinkron berarti clock yang digunakan antara
transmiter dan receiver satu sumber clock. Sedangkan asinkron berarti transmitter
dan receiver mempunyai sumber clock sendiri-sendiri. USART terdiri dalam tiga
blok yaitu clock generator, transmiter, dan receiver.
2.8.4. Interrupt
Interupt adalah kondisi yang membuat CPU berhenti dari rutinitas yang sedang
dikerjakan dan mengerjakan rutin lain (rutin interupsi). ATmega8 memiliki 2 interupsi,
yaitu INT0 dan INT1. Low Level akan memicu kapan pun pin merasakan sinyal LOW
(GND). Setiap pemicu Perubahan Logika saat ini pin berubah dari HIGH (VCC) menjadi
LOW (GND) atau dari LOW (GND) menjadi HIGH (VCC). Pada Falling Edge akan
memicu interupsi saat pin mulai dari HIGH (VCC) sampai LOW (GND). Di Rising Edge
akan memicu interupsi saat pin tersebut beralih dari LOW (GND) ke HIGH (VCC).
Interupsi dapat dikonfigurasi tiap INTx secara mandiri dengan register sebagai berikut:
2.8.4.1. MCUCR (MCU Control Register)
Bit pada register MCUCR ditunjukan dengan Gambar 2.22.
Bit ISC11 dan ISC10
adalah kondisi yang menentukan adanya interupsi eksternal pada pin INT1.
Bit ISC01 dan ISC00
bersama-sama menentukan kodisi yang dapat menyebakan interupsi eksternal pada
pin INT0. keadaan selengkapnya terlihat pada Tabel 2.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Gambar 2.22 Register MCU Control
Tabel 2.6 Setting kondisi pada INTx
ISCx1 ISCx0 Deskripsi
0 0 Logika Rendah pada INTx menghasilkan permintaan interupsi
0 1 Adanya perubahan logika pada INTx menghasilkan permintaan
interupsi
1 0 Falling edge pada INTx menghasilkan permintaan interupsi
1 1 Rising edge pada INTx menghasilkan permintaan interupsi
2.8.4.2. Register GICR
Pemilihan pengaktifan interupsi eksternal diatur oleh register GICR ( General
Interrupt Control Register) ditunjukan dengan Gambar 2.23
Gambar 2.23 Register GICR
Bit 7: INT1 adalah bit untuk mengaktifkan interupsi eksternal 1. Apabila bit tersebut
diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi
eksternal 1 akan aktif.
Bit 6: INT0 adalah bit untuk mengaktifkan interupsi eksternal 0. Apabila bit tersebut
diberi logika 1 dan bit I pada SREG (status register) juga satu , maka interupsi
eksternal 0 akan aktif. [10]
2.9. Fuzzy Logic
Logika fuzzy merupakan suatu teori himpunan logika yang terdapat diantara
kebenaran (true) dan kesalahan (false). Dengan menggunakan Fuzzy Logic nilai yang
dihasilkan bukan hanya ya (1) atau tidak (0) tetapi seluruh kemungkinan diantara 0 dan 1.
2.9.1. Perbedaan Logika Fuzzy dan Logika Tegas
Perbedaan antara kedua jenis logika ini adalah logika fuzzy memiliki nilai 0
hingga 1, sedangkan logika tegas 0 dan 1. Secara grafik perbedaan logika fuzzy dan
logika tegas ditunjukan pada Gambar 2.24.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
„(a) (b)
Gambar 2.24 Perbedaan (a) logika Tegas dan (b) logika Fuzzy
Pada gambar 2.24 (a) apabila x lebih dari atau sama dengan 10 , maka nilai x
dapat dikatakan benar atau y=1, sebaliknya nilai x kurang dari 10 maka dikatakan salah
atau y=0. Sehingga jika x adalah 9, 8, dan 7 dan seterusnya x dikatakan salah atau y=0.
Berbeda dengan gambar 2.24 (b) nilai x= 9, 8, atau 7 atau nilai antara 0 – 10, jika nilai x
semakin dekat dengan 10 maka nilai x memiliki derajat keanggotaan yang lebih besar.
Sehingga angka 9 memiliki derajat keanggotaan yang lebih tinggi dibandingkan angka
[12].
2.9.2. Himpunan
Himpunan Tegas (crisp set) merupakan sekumpulan obyek yang mempunyai
kesamaan sifat tertentu, terdefinisi secara tegas sehingga setiap obyek dapat dengan tegas
apakah merupakan anggota himpunan atau bukan.
Himpunan Kabur (fuzzy set) merupakan pengelompokan sesuatu berdasarkan
variable bahasa (lingustik variabel), yang dinyatakan dalam fungsi keanggotaan. Fuzzy set
dapat dipahami sebagai sekumpulan obyek yang mempunyai kesamaan himpunan atau
bukan. Himpunan kabur (fuzzy set) dapat dipahami sebagai sekumpulan obyek yang
mempunyai kesamaan sifat tertentu, tetapi tidak dapat didefinisikan secara tegas apakah
merupakan anggota himpunan atau bukan. Masalah ini oleh Zadeh di atasi dengan suatu
fungsi yang menyatakan derajat sesuai dengan syarat keanggotaan himpunan tersebut.
Fungsinya disebut fungsi keanggotaan
Nilai fungsi disebut derajat keanggotaan
2.9.3. Dasar Logika Fuzzy
2.9.3.1. Fungsi Keanggotaan
Fungsi keanggotaan merupakan suatu kurva yang menunjukkan pemetaan titik-
titik input data kedalam nilai keanggotaanya (disebut juga dengan derajat keanggotaan)
yang memiliki interval antara 0 sampai 1. Untuk mendapatkan nilai keanggotaan dapat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
menggunakan cara pendekatan fungsi. Ada beberapa fungsi keanggotaan yang
digunakan dalam teori himpunan fuzzy adalah :
Representasi Linier
Pada representasi linear, pemetaan input ke derajat keanggotaannya
digambarkan sebagai suatu garis lurus. Ada 2 keadaan himpunan fuzzy yang linear.
Pertama, kenaikan himpunan dimulai pada nilai domain yang memiliki derajat
keanggotaan nol bergerak ke kanan menuju kenilai domain yang memiliki derajat
keanggotaan lebih tinggi seperti ditunjukan pada Gambar 2.25.
Gambar 2.25 Representasi Linear Naik
Kedua, merupakan kebalikan yang pertama. Garis lurus dimulai dari nilai domain
dengan derajat keanggotaan tertinggi pada sisi kiri, kemudian bergerak menurun ke
nilai domain yang memiliki derajat keanggotaan lebih rendah seperti pada Gambar 2.26.
Gambar 2.26 Representasi Linear Turun
Fungsi keanggotaan linear naik: (2.8)
Fungsi keanggotaan linear turun: (2.9)
Keterangan:
= nilai output dititik derajat keanggotaan tertinggi
= nilai output dititik derajat keanggotaan terendah
= nilai output dititik derajat keanggotaan yang diinginkan
= nilai derajat keanggotaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Representasi Kurva Segitiga
Pada dasarnya merupakan gabungan antara 2 garis (linear) seperti terlihat pada
Gambar 2.27
Gambar 2.27 Representasi Kurva Segitiga
Fungsi keanggotaan kurva segitiga: (2.10)
Keterangan:
= nilai output dititik derajat keanggotaan tertinggi
= nilai output dititik tengah
= nilai output dititik derajat keanggotaan terendah
= nilai output dititik derajat keanggotaan yang diinginkan
= nilai derajat keanggotaan
Representasi Kurva Trapesium
Kurva trapesium pada dasarnya seperti bentuk segitiga, hanya saja ada beberapa
titik yang memiliki nilai keanggotaan 1 seperti pada Gambar 2.28.
Gambar 2.28. Representasi Kurva Trapesium
Fungsi keanggotaan kurva trapesium: (2.11)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Keterangan:
= nilai output dititik derajat keanggotaan tertinggi
= nilai output dititik tengah1
= nilai output dititik tengah2
= nilai output dititik derajat keanggotaan terendah
= nilai output dititik derajat keanggotaan yang diinginkan
= nilai derajat keanggotaan
2.9.4. Cara Kerja Logika Fuzzy
Dalam sistem kontrol logika fuzzy terdapat beberapa tahapan operasional
meliputi:
a. Fuzzifikasi.
b. Mesin penalaran atau inference engine.
c. Aturan dasar (fuzzy rule).
d. Defuzzifikasi.
2.9.4.1. Fuzzifikasi
Fuzzifikasi yaitu suatu proses untuk mengubah suatu masukan dari bentuk tegas
menjadi fuzzy (variabel linguistik) yang biasanya disajikan dalam bentuk himpunan-
himpunan fuzzy dengan suatu fungsi kenggotaannya masing-masing. Output dari
proses fuzzification ini adalah sebuah nilai input fuzzy atau yang biasanya dinamakan
fuzzy input.
2.9.4.2. Aturan Dasar Logika Fuzzy
Aturan dasar atau rule base pada kontrol logika fuzzy merupakan suatu
bentuk aturan relasi/implikasi “Jika-Maka” atau “If-Then” seperti pada pernyataan
berikut:
“JIKA” X=A dan “JIKA” Y=B “MAKA” Z=C
2.9.4.3. Mesin Penalaran Kontrol Logika Fuzzy (Inference Engine)
Mesin penalaran (Inference Engine) adalah proses implikasi dalam menalar
nilai masukan guna menentukan nilai keluar sebagai bentuk pengambil keputusan.
Salah satu model penalaran adalah max-min. Dalam penalaran max-min proses
pertama yang dilakukan adalah melakukan operasi operasi min sinyal keluaran lapisan
fuzzifikasi, yang diteruskan dengan operasi max untuk mencari nilai keluaran yang
selanjutnya akan difuzzifikasikan sebagai bentuk keluaran pengontrol.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
2.9.4.4. Defuzzifikasi
Defuzzifikasi merupakan proses pemetaan himpunan fuzzy kemampuan tegas,
proses ini kebalikan dari proses fuzzifikasi. Metode dalam defuzzifikasi antara lain:
a. Rerata Pusat (Center Of Average)
Kalau himpuna kabur A dalams semesta R merupakan dari m buah himpunan
kabur, yaitu A= ⋃ , maka A diubah menjadi bilangan tegas t(A) yang merupakan
rerata terbobok dari pusat-pusat m buah himpunan kebur tersebut, dengan tinggi masing-
masing himpunan kabur tersebut sebagai bobotnya. Jadi:
∑
∑
(2.11)
Dengan, = pusat himpunan kabur , = Tinggi )
b. COG (Central of Gravity)
Himpunan kabur A dalam semesta R diubah menjadi bilangan tegas t(A) yang
merupakan absis dari pusat gravitasi daerah dibawah grafik fungsi keanggotaan himpunan
kabur A. Jadi:
∫
∫
(2.12)
Bila himpunan kabur A terdefinisi pada semesta berhingga X, maka:
∑
∑
(2.13)
Nilai t(A) dapat dipandang sebagai nilai harapan dari variable x. Fungsi penegasan
Pusat Grafitasi memenehui kriteria masuk akan tetapi proses komputasinya tidak mudah.
c. Purata Maksimum (Mean of Maximum)
Himpunan kabur A dalam semesta R diubah menjadi bilangan tegas t(A) yang
merupakan purata dari semua nilai yang mencapai nilai maksimum dalam yaitu:
∫
∫
(2.14)
Dengan M= | . Apabila M=[a,b], maka:
(2.15)
Apabia himpunan kabur A terdefinisi pada semesta berhingga X maka bilangan tegas
t(A) didefinisikan sebagai rerata dari semua nilai dalam himpunan tegas
M= | , yaitu:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
∑
| | (2.16)
Dengan | | = banyaknya anggoa himpunan tegas M.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
3. BAB III
PERANCANGAN
Dalam bab III ini akan membahas mengenai perancangan perangkat keras dan
perancangan perangkat lunak, pembahasan meliputi:
a. Proses kerja dan mekanisme prototype
b. Perancangan mekanik prototype
c. Perancangan perangkat keras (hardware)
d. Perancangan program (software)
3.1. Proses Kerja Sistem
Pengaturan nyala lampu lalu lintas berdasarkan jumlah kendaraan dirancang untuk
menentukan pewaktuan dari nyala lampu lalu lintas. Proses dari kerja dari prototype ini
memiliki inputan data dari sensor yang berada dimasing-masing slave yang dikirman ke
master atau ditunjukan dengan Gambar 3.1.
Pada proses awal dari sistem dimulai dari sensor masing-masing slave, mobil
mainan sebagai kendaraan yang akan masuk ke area pengamatan akan terdeteksi oleh
sensor infra merah pertama (mA, mB dan mC). Sedangkan kendaraan keluar area
pengamatan akan terdeteksi oleh sensor infra merah kedua (kA, kB dan kC). Jumlah
kendaraan dapat diketahui dari kalkulasi antara 2 sensor infra merah yang mana sensor
infra merah ke-2 berada sebelum lampu lalu lintas. Jumlah dari kendaraan dapat diketahui
dari selisih antara sensor infra merah-1 (sensor-in) sebagai sensor yang mendeteksi
kendaraan masuk (mA, mB, mC) dan sensor infra merah-2 (sensor-out) sebagai sensor
yang mendeteksi kendaraan keluar (kA, kB, kC) dari area pengamatan. Jumlah kendaraan
menjadi masukan untuk diproses oleh mikrokontroler. Pada mikrokontroler akan
membandingkan jumlah kendaraan dari ketiga cabang dipersimpangan, cabang yang
memiliki jumlah kendaraan yang lebih banyak maka akan mendapatkan waktu penyalaan
lampu hijau yang lebih lama. Jumlah client dapat dilihat pada LCD penampil 16x4 pada
slave, sedangkan lama waktu menyala dapat dilihat pada LCD 20x4 pada master.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Gambar 3.1 Detail Blok Diagram
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
3.2. Perancangan Prototype
Perancangan prototype dari sistem menggunakan desain simpang 3 (pertigaan),
sebagai alas dari prototype menggunakan triplek dengan panjang 220cm dan lebar 120cm,
masing-masing jalur memiliki lebar 14cm. Desain 2D seperti pada Gambar 3.2,
Gambar 3.2. Skema 2D secara keseluruhan
Sedangkan dan 3D prototype mengunakan SketchUp. Ditunjukan dengan gambar
3.3, 3.4 (a) dan (b). Pada setiap lajur dapat menampung 10 client, sehingga prototype ini
dapat menampung total 30 client pada saat jalur padat.
Pada keadaan real, prototype jalan dan kendaraan memiliki rasio 1:60 sehingga
ukuran pada keadaan real adalah ditunjukan pada Tabel 3.1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Tabel 3.1. Ukuran Real di Lapangan
Prototype Real
7 cm 4.2 m
90 cm 54 m
100 cm 60 m
114 cm 86.4 m
214cm 128.4 m
Gambar 3.3. Rancangan prototype (3D). (a) prototype tampak dari atas persimpangan.
(a) (b)
Gambar 3.4. (a) sensor kendaraan keluar. (b) sensor kendaraan yang masuk
Keterangan Gambar 3.3 dan Gambar 3.4 (a):
1. Lampu Lalu Lintas
2. Pembatas Jalan
3. Sensor Infra merah Transmitter
4. Sensor Infra merah Receiver dan Led Indikator
1
2
4
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Penampil jumlah kendaraan pada masing-masing cabang maka dipasang LCD 16x2
seperti ditunjukan Gambar 3.5.
Gambar 3.5 Contoh penampil Jumlah kendaraan pada Sisi C
3.3. Perancangan Perangkat Keras
Rancangan ini memiliki beberapa bagian utama dalam subsistem hardware
prototype, yang mengacu pada Gambar 3.1. yaitu:
a. Minimum system dan ATmega32
b. Sensor Infra merah
c. Relay
d. Komparator
e. Optimasi lampu lalu lintas dengan Fuzzy Logic
3.3.1. Minimum System pada ATmega32
Minimum sistem adalah sebuah rangkaian agar mikrokontroler dapat beroperasi
dan diprogram. Minimum sistem berfungsi sebagai I/O dari prototype untuk dapat
memproses masukan dari sensor-sensor, ke mikrokontroler ATmega32 telah diprogram.
Selain power supply mikrokontroler membutuhkan 2 elemen agar dapat berfungsi yaitu
kristal osilator dan rangkaian reset.
Pada kristal osilator menggunakan crystal dengan frekuensi 11.0592 MHz dan
menggunakan dua buah kapasitor 22 pf yang dirangkai pada kaki XTAL1 (input clock
internal) dan XTAL2 (output clock osilator). Mikrokontroler sendiri sudah memiliki
osilator internal sebesar 8MHz tetapi jika membutuhkan kinerja mikrokontroler yang lebih
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
cepat dibutuhkan crystal lebih dari 8MHz. Rangkaian osilator ini berfungsi sebagai
pembangkit frekuensi bagi mikrokontroler. Rangkaian osilator ditunjukan Gambar 3.6.
Gambar 3.6. Rangkaian Osilator
Fungsi dari rangkaian reset adalah untuk memaksa mikrokontroler memulai lagi
program dari awal, hal ini bisa disebabkan saat mikrokontroler mengalami gangguan. Saat
tombol reset di tekan maka mikrokontroler mendapat input logika rendah. Gambar 3.7.
adalah rangkaian reset ATmega32
Gambar 3.7. Rangkaian Reset
Komponen pada rangkaian reset ini adalah berupa resistor, kapasitor dan
pushbutton. Pada gambar terdapat resistor dengan resistansi 10k yang digunakan sebagai
pull-up, tujuannya untuk agar pin reset tidak berlogika 0 secara tidak sengaja. kapasitor
22pf digunakan untuk mengurangi noise.
3.3.2. Rangkaian pada Mikrokontroler
3.3.2.1. Rangkaian pada Master
Pada Gambar 3.8 menunjukan penggunaan pin dari mikrokontroler master dengan
konfigurasi pin yang ditunjukan pada Tabel 3.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
Gambar 3.8 Penggunaan port pada ATMEGA32 sebagai Master
Tabel 3.2 Keterangan Penggunaan Pin Master
Port
ATmega32 Nama Pin Penggunaan Pin
RESET RST Sebagai Reset pada Master
XTAL1 X1 Input kristal eksternal
XTAL2 X2 Output kristal eksternal
PORTA.0 A-MERAH Untuk menyalakan lampu pilot 12 VDC merah cabang A
PORTA.1 A-KUNING Untuk menyalakan lampu pilot 12VDC kuning cabang A
PORTA.2 A-HIJAU Untuk menyalakan lampu pilot 12VDC hijau cabang A
PORTB.0 B-MERAH Untuk menyalakan lampu pilot 12VDC merah cabang B
PORTB.1 B-KUNING Untuk menyalakan lampu pilot 12VDC kuning cabang B
PORTB.2 B-HIJAU Untuk menyalakan lampu pilot 12VDC hijau cabang B
PORTB.6 MOSI
Jalur Downloader PORTB.7 MISO
PORTB.8 SCK
PORTC.2 C-HIJAU Untuk menyalakan lampu pilot 12VDC hijau cabang C
PORTC.6 SCL Komunikasi TWI dan I2C
PORTC.7 SDA
PORTD.0 RW
Pin untuk LCD 20x4
PORTD.1 RS
PORTD.2 E
PORTD.3 D4
PORTD.4 D5
PORTD.5 D6
PORTD.6 D7
3.3.2.2. Rangkaian ATmega8 pada Slave A,B,C
4. Pada Gambar 3.9 menunjukan penggunaan pin dari mikrokontroler slave A,B,C
dengan konfigurasi pin yang ditunjukan pada Tabel 3.3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Gambar 3.9 ATmega8 pada Slave
Tabel 3.3 Penggunaan Pin Slave 1
Port ATmega8 Nama Pin Penggunaan Pin
PORTB.0 RSx Port RS pada LCD, x adalah Slave A,B,C
PORTB.1 RWx Port RW pada LCD, x adalah Slave A,B,C
PORTB.2 Ex Port E pada LCD, x adalah Slave A,B,C
PORTB.3 D4x Port D4 pada LCD, x adalah Slave A,B,C
PORTB.4 D5x Port D5 pada LCD, x adalah Slave A,B,C
PORTB.5 D6x Port D6 pada LCD, x adalah Slave A,B,C
PORTC.0 D7x Port D7 pada LCD, x adalah Slave A,B,C
PORTC.4 SDA Jalur komunikasi dengan Master
PORTC.5 SCL
PORTD.2 masuk_X Sensor kendaraan masuk dicabang A,B,C
PORTD.3 keluar_X Sensor kendaraan keluar dicabang A,B,C
3.3.3. Rangkaian LCD
3.3.3.1. Rangkaian LCD pada Master
4. Pada Gambar 3.10 menunjukan penggunaan pin LCD dari mikrokontroler master
dengan konfigurasi pin yang ditunjukan pada Tabel 3.4. Sedangkan untuk tampilan dari
LCD master ditunjukan pada Gambar 3.11.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
Gambar 3.10 Skematik LCD 20x4
Tabel 3.4 Penggunaan Pin LCD ATmega32
Port ATmega32 Penamaan Pin
PORTD.0 RS
PORTD.1 RW
PORTD.2 E
PORTD.3 D4
PORTD.4 D5
PORTD.5 D6
PORTD.6 D7
Tampilan LCD pada Master akan dirancang seperti gambar 3.11
Gambar 3.11 Tampilan LCD pada Master
3.3.3.2. Rangkaian LCD pada Slave
5. Pada Gambar 3.12 menunjukan penggunaan pin LCD dari mikrokontroler slave
dengan konfigurasi pin yang ditunjukan pada Tabel 3.5. Sedangkan untuk tampilan dari
LCD slave ditunjukan pada Gambar 3.13.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Gambar 3.12 Rangkaian LCD pada Slave
Tabel 3.5 Penamaan Pin LCD pada Slave
Pin ATmega8 Penamaan Pin
PORTB.0 RSX
PORTB.1 RWX
PORTB.2 EX
PORTB.3 D4X
PORTB.4 D5X
PORTB.5 D6X
PORTC.0 D7X
Sedangkan pada Slave tampilan LCD nya adalah seperti Gambar 3.13 dimana X
adalah nama Slave (A,B,C)
Gambar 3.13 Tampilan LCD pada Slave
3.3.4. Rangkaian Komparator
Input untuk mikrokontroler agar dapat terbaca sebagai logika 1 maka harus memiliki
tegangan 2,5V sehingga digunakan rangkaian komparator seperti ditunjukan Gambar 3.15.
Dengan rangkaian yang ditunjukan dengan Gambar 3.14 maka tegangan input pada kaki
non-inverting dari rangkaian dapat dicari dengan rumus:
Vin =
(3.1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
4.
Gambar 3.14 Rangkaian Komparator
3.3.5. Rangkaian Sensor Infra merah
Sensor yang digunakan untuk mendeteksi adanya kendaraan yang melintas
diletakan di samping lajur kendaraan. Cara kerjanya adalah jika sensor infra merah
terhalang oleh mobil, maka lampu indikator receiver yang berada di komparator akan mati
sebagai tanda adanya perubahan kondisi.
Rangkaian transmitter yang dirancang adalah seperti pada Gambar 2.2. Nilai
resistansi didapatkan dari arus yang untuk transmitter sebesar 20 mA [12] dan tegangan
minimum transmitter dapat bekerja adalah sebesar 1.2 Volt (Vd) [12] maka resistansi
transmitter (Rt) yang digunakan dapat dicari dengan Persamaan (2.1) maka,
Rangkaian receiver ditunjukan dengan Gambar 3.14, pada rangkaian ini
menggunakan LM339 sebagai pembanding antara tegangan dari photodioda yang masuk
ke pin non-inverting dan tegangan referensi pada pin inverting. Pin output dari rangkaian
Receiver akan menjadi masukan dari mikrokontroler.
Dengan tegangan reverensi dari VR, maka output dari komparator dapat diatur
"pada intensitas cahaya berapa output dari regulator akan bernilai nol". Untuk
mendapatkan nilai R2 dapat dicari dengan mengetahui dengan persamaan 2.2
Diketahui:
Reverse Light Current = 36 µA
Reverse Dark Current ( ) = 30 nA
Dengan tegangan sumber (Vs) = 5 V
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Sedangkan untuk hambatan saat gelap adalah,
Sebagai inputan ke komparator untuk mendapatkan setengah dari masukan maka
dapat dicari dengan 3.1 Jika tegangan input (Vin) yang diharapkan masuk ke komparator =
2.5V maka,
Vin =
Vin *( ) =
2.5 ( +138.8kΩ) =
2.5 + 347.000 =
347.000 =
= , sehingga R2 adalah 138.800 Ω
3.3.6. Rangkaian Relay
Setelah mikrokontroler menentukan keputusan lama waktu lampu menyala maka
saat kondisi port high akan mengaktifkan relay. Saat relay aktif maka supply +12V akan
mengalirkan arus untuk menyalakan lampu lalu lintas sesuai dengan waktu yang
ditentukan oleh mikrokontroler. Rangkaian ditunjukan dengan Gambar 3.15.
Gambar 3.15. Relay Pengaktif Lampu 12VDC
Diketahui :
Tegangan pin mikrokontroler logika1 adalah Vs = 5 Volt
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Nilai VBE (typ) dari transistor BC547 adalah 700mV [13]
Nilai hfe atau (minimum) transistor BC547 = 110
Resistansi dari koil pada relay adalah RC= 320 Ω [13]
Arus yang dibutuhkan agar relay ON (pada datasheet), untuk menghantarkan
tegangan 12 VDC adalah Ic = 37,5mA [13] yang didapat dari Persamaan 2.4
Ic
= 0.0375 A= 37.5mA
Untuk mencari Ib menggunakan Persamaan 2.5 [13]
Ibsat
= 340
Untuk memastikan bahwa transistor sudah saturasi, maka Ib harus lebih besar dari Ib
(min.) sehingga:
Ib 1.3636 mA
Ketika transistor dalam keadaan ON, VBE ≈ 0,7 V tegangan yang melewati RB diperoleh
menggunakan sehingga digunakan persamaan 2.7.
Rb= –
= 3,153 k
3.4. Perancangan Perangkat Lunak
3.4.1. Diagram Alir Utama
Penamaan pada sensor inframerah ditunjukan pada Tabel 3.6.
Tabel 3.6 Penamaan sensor infra merah
Nama Piranti Port Slave
mA Sebagai pendeteksi kendaraaan masuk pada sisi A PORTD.2 A
mB Sebagai pendeteksi kendaraaan masuk pada sisi B PORTD.2 B
mC Sebagai pendeteksi kendaraaan masuk pada sisi C PORTD.2 C
kA Sebagai pendeteksi kendaraaan keluar pada sisi A PORTD.3 A
kB Sebagai pendeteksi kendaraaan keluar pada sisi B PORTD.3 B
kC Sebagai pendeteksi kendaraaan keluar pada sisi C PORTD.3 C
A-merah
Aktuator berupa Lampu 12VDC
PORTA.7
Master
A-kuning PORTB.0
A-hijau PORTB.1
B-merah PORTB.2
B-kuning PORTB.3
B-hijau PORTB.4
C-merah PORTB.5
C-kuning PORTB.6
C-hijau PORTB.7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Gambar 3.16 Diagram Alir Utama
Pada diagram alir utama ditunjukan oleh Gambar 3.16. Pertama-tama proses
diawali dengan menekan tombol power, setelah itu sistem akan menginisialisasi pada
ATmega sebagai Master. Inisialisasi bertujuan untuk mengenali seluruh sistem berupa
LCD, relay, dan sistem komunikasi.
Setelah inisialisasi, layar LCD akan menampikan jumlah kendaraan yang ada pada
setiap cabang. Diawal proses prototype akan menjalanan Mode Nyala Awal, mode ini
dijalankan sementara agar sensor pada masing-masing slave dapat menghitung jumlah
kendaraan yang telah tertampung. Setelah mendapatkan jumlah ditiap cabang (masing-
masing slave), data akan dikirimkan ke Master untuk diproses oleh dengan logika Fuzzy.
Pada proses oleh Logika Fuzzy, master akan menyalakan lampu hijau sesuai dengan lama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
waktu yang ditentukan. Saat lampu dinyalakan akan kembali dilakukan pengambilan data
dari anak cabang untuk diproses di Logika Fuzzy yakni saat semua lampu lalu lintas
menyala merah (kondisi all red). Pada flowchart sensor masuk maupun keluar memiliki
nama tersendiri. Diagram Alir Sub Rutin Mode Nyala Lampu Awal ditunjukan
Gambar3.17
Gambar 3.17 Flowchart Mode Nyala Lampu Awal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
Dengan rincian waktu sebagai yang ditunjukan pada Tabel 3.7.
Tabel 3.7 Rincian Mode Awal
Detik Cabang A Cabang B Cabang C
0 Merah Merah Merah
3 Hijau Merah Merah
18 Kuning Merah Merah
21 Merah Merah Merah
24 Merah Hijau Merah
39 Merah Kuning Merah
42 Merah Merah Merah
45 Merah Merah Hijau
60 Merah Merah Kuning
63 Merah Merah Merah
Gambar 3.17 menunjukan pada awal proses saat detik =0 maka semua lampu cabang
menyala merah. Pada saat detik=3 maka lampu pada cabang A akan menyala hijau
sedangkan B dan C menyala merah. Jika detik ≠ 3 maka lampu pada cabang A akan tetap
berwarna hijau.
Saat detik=21 maka semua lampu pada cabang menyala merah, pada saat itu master
mengirimkan perintah untuk mengirim data yang didapat pada cabang A karena pada
cabang A sudah melewati fase lampu hijau. Jika detik ≠ 24 maka slave akan tetap
mengirimkan data terkini dari slave, saat detik=24 maka lampu pada cabang A dan C akan
menyala merah sedangkan pada cabang B menyala hijau. Pada saat detik =39 maka lampu
pada cabang A, dan C akan menyala merah dan cabang B menyala kuning.
Saat detik=42 maka semua lampu pada cabang menyala merah, pada saat itu master
mengirimkan perintah untuk mengirim data yang didapat pada cabang B karena pada
cabang B sudah melewati fase lampu hijau. Jika detik ≠ 45 maka slave akan tetap
mengirimkan data terkini dari slave, saat detik=45 maka lampu pada cabang A dan B akan
menyala merah sedangkan pada cabang C menyala hijau. Pada saat detik =60 maka lampu
pada cabang A, dan B akan menyala merah dan cabang C menyala kuning.
Saat detik=63 maka semua lampu pada cabang menyala merah, pada saat itu master
mengirimkan perintah untuk mengirim data yang didapat pada cabang C karena pada
cabang C sudah melewati fase lampu hijau. Jika detik ≠ 63 maka slave akan tetap
mengirimkan data terkini dari slave sampai detik=66. Setelah itu data dikirimkan ke Fuzzy
untuk diolah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Pada mode nyala lampu awal ditentukan nyala lampu hijau, kuning dan kondisi all
red sehingga didapat masing masing lampu merah menyala 42 detik. Sehingga total waktu
yang digunakan untuk 1 siklus adalah 66 detik hanya pada waktu prototype dinyalakan
untuk pertama kali. Rincian pewaktuan lampu ditunjukan oleh Tabel 3.8.
Tabel 3.8 Pewaktuan lampu pada mode nyala lampu awal
Lampu Lama menyala
Hijau 15 detik
Kuning 3 detik
All Red 3 detik
3.4.2. Diagram Alir Anak Cabang
Gambar 3.18. Diagram Alir Anak Cabang X
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Diagram alir anak cabang X (X adalah cabang A,B dan C) ditunjukan dengan
Gambar 3.18. Sistem pada anak cabang X dimulai pada saat Mode Nyala awal dimulai.
Saat sensor tidak mendeteksi adanya kendaraan lewat maka proses akan langsung keluar
dari sistem cabang X. Jika sensor mX mendeteksi adanya kendaraan maka data mX akan
bertambah 1 dan data disimpan pada variable mdX. Proses berlanjut ke proses deteksi
kendaraan keluar. Jika sensor kX tidak mendeteksi adanya kendaraan maka akan langsung
menuju ke perhitungan akhir data. Namun jika sensor kX mendeteksi adanya kendaraan
yang lewat (keluar dari area pengamatan), maka akan data kX akan bertambah 1 dan data
disimpan pada variable kdX. Setelah itu menuju perhitungan data akhir yakni dengan
mengurangi jumlah kendaraan yang masuk dengan jumlah kendaraan yang keluar
(dataX=mX-kX). Setelah itu proses dicabang ini akan berulang terus sampai lampu pada
semua cabang X menyala merah (kondisi All Red), pada kondisi itu slave akan mengirim
data ke Master untuk diolah oleh Logika Fuzzy untuk menentukan lama lampu hijau
berikutnya.
3.4.3. Diagram Alir Sub Rutin Pengiriman Data dari Slave
Gambar 3.19 Diagram Pengiriman Data dari Slave
Diagram Pengiriman Data dari Slave ditunjukan dengan Gambar 3.19. Data
dikirimkan dengan menggunakan komunikasi serial I2C. Program melakukan inisialisasi
pada port slave maupun master. Ketika pemrosesan data parameter pada slave selesai maka
data tersebut dikirim ke master.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
3.4.4. Diagram Alir Sub Rutin Fuzzy Logic
Gambar 3.20 Diagram Alir Sub Rutin Fuzzy Logic
Diagram Alir Sub Rutin Fuzzy Logic ditunjukan dengan Gambar 3.20. Proses sub
rutin diawali dengan inputan dari slave A, B dan C. Nilai input dipetakan ke titik-titik input
data kedalam nilai keanggotaannya (interval 0 sampai 1) pada framework input. Hasil dari
pemetaan input data yang memiliki derajat keanggotaan tertinggi akan diproses dan
disesuaikan dengan kondisi rules yang sudah ditentukan sehingga menghasilkan suatu
himpunan fuzzy baru. Keluaran himpunan fuzzy baru tersebut akan dikonversikan kembali
kedalam bentuk bilangan dengan menggunakan fungsi keanggotaan yang telah digunakan
sebelumnya, dengan hasil berupa lama waktu lampu hijau pada sisi X.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
3.5. Alogaritma Fuzzy Logic
3.5.1 Framework Input dan Output
Gambar 3.21 Framework Input dan Output
Gambar 3.21 merupakan ilustrasi input dan output dari Fuzzy Protipe ini
menggunakan 3 input dan 1 output, dimana output akan disesuaikan dengan urutan lampu
hijau menyala.
3.5.1.1. Framework Input X
Gambar 3.22 merupakan implementasi fungsi Framework Input 1 dengan
spesifikasi sebagai berikut,
x : Cabang X
T : Sedikit_X, Sedang_X, Tinggi_X
X : [0 10]
M : Sedikit_X = L (x: 0 5)
Sedang_X = ˄ (x: 1 5 9)
Banyak_X = L (x: 5 10)
Gambar 3.22 Framework Input X
3.5.1.2. Framework Output I
Gambar 3.23 merupakan implementasi fungsi Framework Output 1 dengan
spesifikasi sebagai berikut,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
x : Lampu Hijau X
T : Cepat_X, Agak Lama_X, Lama_X
X : [4 24]
M : Cepat_X = L (x: 4 14)
Agak Lama_X = ˄ (x: 6 14 22)
Lama_X = L (x: 14 24)
Gambar 3.23 Framework Output X
3.5.2. Kondisi Rule
Pada pemilihan rule, sebelumnya ditentukan kondisi-kondisi seperti ditunjukan
pada Tabel 3.9. Saat cabang A, cabang B dan cabang C memiliki nilai maka output akan
menyesuaikan lampu mana yang mendapat giliran untuk menyala.
Tabel 3.9 Kondisi Rules
No Input A Input B Input C Output A Output B Output C
1. Sedikit Sedikit Sedikit Cepat Cepat Cepat
2 Sedikit Sedikit Sedang Cepat Cepat Agak Lama
3 Sedikit Sedikit Banyak Cepat Cepat Lama
4 Sedikit Sedang Sedikit Cepat Agak Lama Cepat
5 Sedikit Banyak Sedikit Cepat Lama Cepat
6 Sedikit Sedang Sedang Cepat Agak Lama Agak Lama
7 Sedikit Sedang Banyak Cepat Agak Lama Lama
8 Sedikit Banyak Sedang Cepat Lama Agak Lama
9 Sedikit Banyak Banyak Cepat Lama Lama
10 Sedang Sedikit Sedikit Agak Lama Cepat Cepat
11 Sedang Sedikit Sedang Agak Lama Cepat Agak Lama
12 Sedang Sedikit Banyak Agak Lama Cepat Lama
13 Sedang Sedang Sedikit Agak Lama Agak Lama Cepat
14 Sedang Banyak Sedikit Agak Lama Lama Cepat
15 Sedang Sedang Sedang Agak Lama Agak Lama Agak Lama
16 Sedang Sedang Banyak Agak Lama Agak Lama Lama
17 Sedang Banyak Sedang Agak Lama Lama Agak Lama
18 Sedang Banyak Banyak Agak Lama Lama Lama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
(Lanjutan) Tabel 3.9 Kondisi Rules
19 Banyak Sedikit Sedikit Lama Cepat Cepat
20 Banyak Sedang Sedikit Lama Agak Lama Cepat
21 Banyak Sedikit Banyak Lama Cepat Lama
22 Banyak Sedikit Sedang Lama Cepat Agak Lama
23 Banyak Banyak Sedikit Lama Lama Cepat
24 Banyak Sedang Sedang Lama Agak Lama Agak Lama
25 Banyak Sedang Banyak Lama Agak Lama Lama
26 Banyak Banyak Sedang Lama Lama Agak Lama
27 Banyak Banyak Banyak Lama Lama Lama
3.5.3. Alogaritma Fuzzy Logic pada Mikrokontroler Master
Input dari Fuzzy Logic berupa data dari slave yang akan disimpan dalam variable
dataA, dataB, dataC.
3.5.3.1. Fuzzifikasi
Setiap input dari slave masing-masing akan memiliki derajat keanggotaan, range dari
derajat keanggotaan adalah [0 1]. Nilai derajat keanggotaan input, akan bernilai sama
dengan derajat keanggotaan output. Sebagai contoh pada Gambar 3.22 yakni Framework
Sedikit_X, memiliki fungsi linear turun maka untuk menentukan nilai derajat keanggotaan
input menggunakan persamaan 2.9, dan pada fungsi linear naik yang ditunjukan dengan
Gambar 2.22 pada kurva Tinggi_X menggunakan persamaan 2.8. Sehingga rincian derajat
keanggotaan ditunjukan dengan Tabel 3.10 sebagai berikut,
Tabel 3.10 Derajat Keanggotaan Framework Input
Keanggotaan Derajat keanggotaan Keterangan
( )
0
( )
( )
0
1
( )
0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Nilai dari derajat keanggotaan yang digunakan, dipilih dengan membandingkan derajat
keanggotaan yang berasal dari ketiga input. Pemilihan derajat keanggotaan yang paling
rendah dilakukan dengan fungsi CVAVR sebagai berikut:
3.5.3.2. Basis Aturan
Kondisi pada masukan terlebih dahulu disesuaikan dengan basis aturan sehingga
masing-masing kondisi merujuk pada salah satu rule seperti pada Tabel 3.9. Basis aturan
yang akan menentukan rule mana yang akan digunakan untuk menghasilkan kondisi
Framework output lama lampu hijau.
3.5.3.3. Proses Defuzzifikasi
Proses defuzzifikasi yang digunakan adalah MOM (Mean of Maximum) yakni
dengan menggunakan persamaan 2.15.
(3.2)
Bagian pembilang (a+b) dapat di cari dengan melihat fungsi segitiga yang
digunakan, pada fungsi linear turun yang ditunjukan dengan Gambar 2.20 pada kurva
Cepat_X menggunakan persamaan 2.9. Sehingga untuk mencari nilai output berdasarkan
kondisi dan nilai derajat keanggotaan menjadi,
(3.3)
Jika disubtitusi dengan Framework Cepat_X yang digunakan maka rumus nilai output
akan menjadi,
(3.4)
(3.5)
Untuk mencari nilai output pada fungsi linear naik pada Framework Lama_X
berdasarkan nilai derajat keanggotaan menjadi,
( ) (3.6)
( ) (3.7)
(3.8)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Dan pada fungsi segitiga yang ditunjukan dengan Gambar 2.22 pada kurva
Sedang_X menggunakan persamaan 2.8. yakni penjumlahan antara fungsi linear naik dan
fungsi linear turun sehingga untuk mencari nilai output berdasarkan Framework
Agak_Lama_X berdasarkan nilai derajat keanggotaan menjadi,
( ( )) (( ) ) (3.9)
( ( )) (( ) ) (3.10)
(3.11)
Setelah mendapat nilai t(A) untuk memenuhi persyaratan MOM disetiap rulenya.
Nilai dari defuzzifikasi merupakan output yang real dari lamanya lampu hijau.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
4. BAB IV
HASIL PENGAMATAN DAN PEMBAHASAN
Pada bab ini akan dibahas mengenai hasil pengamatan dari prototype sistem rekayasa
pengaturan lampu lalu lintas. Hasil pengamatan berupa pengujian sensor inframerah yang
mendeteksi kendaraan yang masuk dan keluar dari area pengamatan. LCD 20x4 berfungsi
sebagai penampil data yang diterima Master dari tiap slave dan lama lampu lalu lintas yang
sudah menggunakan algoritma Fuzzy Logic, dan pembahasan perangkat lunak.
4.1. Bentuk Fisik Alat
Perangkat keras dari prototype rekayasa pengaturan lampu lalu lintas terdiri atas
minimum sistem ATmega8, ATmega32. Bentuk dari fisik prototype rekayasa pengaturan
lampu lalu lintas seperti ditunjukan pada Gambar 4.1.(a) dan (b). Sensor kendaraan
ditunjukan pada Gambar 4.2 (a) dan (b), serta lampu lalu lintas ditunjukan pada Gambar
4.2 (c).
5. „ (a) (b)
Gambar 4.1 (a) Prototype Tampak Atas. (b) Prototype keseluruhan salah satu sis
Sisi C
Sisi A
Sisi B
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
6.
(a) (b) (c)
Gambar 4.2. (a) Sensor Kendaraan Keluar. (b) Sensor Kendaraan Masuk. (c) Lampu Lalu
Lintas.
Keterangan Gambar 4.2:
1. Sensor Transmitter (Pemancar sinar inframerah)
2. Receiver dari sensor keluar (Sensor 2)
3. Sensor Transmitter
4. Receiver dari sensor masuk (Sensor 1)
7. (a) (b)
8. Gambar 4.3 (a) Board Relay Lampu Lalu Lintas (b) Board Komparator
Gambar 4.3.(a) merupakan tampilan board relay yang mengaktifkan lampu lalu lintas.
Pada board komparator seperti ditunjukan Gambar 4.3 (b) pin Out1, V Ref 1 dan VPhd 1
merupakan titik pengambilan data tegangan untuk Sensor 2 (keluar). Sedangkan Out2, V
Ref 2 dan Vphd 2 merupakan titik pengambilan data tegangan untuk Sensor 1 (masuk).
3 1
2 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
9. „(a) (b)
10. Gambar 4.4. (a) Board pada Slave (b) Board pada Master
Keterangan Gambar 4.4:
1. LCD 16x2 pada Board Slave
2. Mikrokontroler Atmega8
3. LCD 20x4 pada Board Master
4. Mikrokontroler Atmega32
Board Relay yang menyalakan lampu ditunjukan pada Gambar 4.3(a), Board
Komparator ditujukan pada Gambar 4.3.(b). Sedangkan Gambar 4.4(a) menunjukan board
dari minimum sistem ATmega8 yang berfungsi menerima data dari setiap sensor pada tiap
cabang. Gambar 4.4 (b) menunjukan board dari minimum sistem ATmega32 sebagai
Master yang bertugas memproses data yang diterima dari slave serta mengaktifkan lampu
lalu lintas.
4.2. Sistem Kerja Alat
Sistem kerja pada prototype rekayasa pengaturan lampu lalu lintas adalah jumlah
kendaraan dari masing-masing cabang akan mempengaruhi lama lampu hijau menyala
setiap cabangnya, sesuai dengan perintah yang telah diprogram pada Master. LCD 16x2
pada masing-masing slave akan memberikan informasi kepada pengamat jumlah
kendaraan yang terdapat pada tiap cabang. Penampil LCD pada slave A ditunjukan seperti
pada Gambar 4.5.
1
2
3
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Gambar 4.5. Tampilan LCD 16x2 Slave A
Keterangan Gambar 4.5:
1. Jumlah kendaraan masuk
2. Jumlah kendaraan keluar
3. Jumlah kendaraan diarea pengamatan
4. Informasi milik Slave A
Masing-masing slave mendapatkan data jumlah kendaraan dari kondisi yang
dideteksi oleh sensor inframerah tiap cabang. Data dari jumlah kendaraan dikirimkan
kepada Master secara serial melalui komunikasi I2C, dengan mengirimkan data berupa
karakter. Master akan menerima karakter tersebut yang berisi data jumlah kendaraan pada
tiap cabang, informasi tersebut dapat diketahui oleh pengamat melalui penampil LCD
20x4.
Pada awal sistem dinyalakan Master akan menjalankan lampu awal terlebih dahulu,.
Setelah Master akan menjalankan program nyala lampu adaptif dengan bantuan algoritma
Fuzzy Logic. Master akan mengolah data dari tiap slave dengan cara membandingkan
cabang A dengan cabang lain. Setelah data diolah dengan logika fuzzy, maka didapatkan
lama lampu hijau untuk semua cabang. Nyala adaptif lama lampu hijau akan dimulai dari
cabang A. Kemudian Master akan menyalakan lampu hijau pada cabang A sesuai dengan
output dari Fuzzy Logic untu lampu hijau cabang A. Sedangkan lampu merah pada cabang
B dan cabang C akan menyala sampai pada urutan nyala lampu. Proses akan berulang
kembali untuk cabang lainnya secara bergantian. Penampil LCD 20x4 Master ditunjukan
pada Gambar 4.6.
Gambar 4.6 Penampil CD 20x4 pada Master
1
2
3
4
1
2 4
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Keterangan Gambar 4.6:
1. Banyaknya Kendaraan di Sisi C
2. Kondisi atau case yang digunakan untuk defuzzifikasi
3. Lama lampu hijau sisi C
4. Hitung mundur lama lampu hijau sisi B
4.3. Rangkaian Keseluruhan Sistem
4.3.1. Rangkaian Master
Gambar 4.7 merupakan rangkaian keseluruhan dari Rangkaian Master, yang terdiri
dari rangkaian reset, rangkaian komunikasi I2C, rangkaian pin downloader, dan
konfigurasi pin pada mikrokontroler Atmega32. Sedangkan Gambar 4.8 merupakan
rangkaian dari aktuator berupa relay dan lampu pilot merah, kuning dan hijau yang
dikendalikan oleh mikrokontroler master.
Gambar 4.7 Rangkaian Master
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Gambar 4.8 Rangkaian Aktuator pada Master
4.3.2. Rangkaian Slave
Pada Gambar 4.9 menunjukan rangkaian keseluruhan pada sub sistem slave yang
terdiri atas rangkaian sensor dan komparator, rangkian reset, rangkaian power, rangkaian
downloader, rangkaian komunikasi I2C dan konfigurasi pin dari ATmega8.
Gambar 4.9 Rangkaian Keseluruhan Slave
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
4.3.3. Perubahan Perancangan
Pada perancangan komparator pada rencana awal menggunakan IC LM339. Salah
satu faktor yang menyebabkan perubahan IC yang dipakai yaitu output komparator yang
dikeluarkan tidak sesuai yang diharapkan yakni sekitar (0,13V - 0,20V). Analisa awal
adalah disebabkan karena tegangan untuk IC LM339 hanya 5V sehingga output
komparator tidak akan mencapai tegangan 5V untuk pembacaan oleh mikrokontroler
ATmega8. Sudah dilakukan percobaan dengan menaikan tegangan VCC menjadi 12V dan
penambahan dioda zener 5V ke ground pada output komparator yang bertujuan membatasi
jika ada kelebihan tegangan lebih dari 5V, namun keluaran masih belun sesuai. Selanjutnya
dioda zener diganti dengan rangkaian pull-up pada output, keluaran yang dihasilkan sesuai
namun pada saat pembacaan sensor tidak sesuai dengan program yang menggunakan
interupsi falling edge.
Maka dilakukan penggantian IC komparator dengan IC LF353 dengan perancangan
komparator yang sama
4.4. Analisis Algoritma Fuzzy Logic
Pada sub bab ini akan dijelaskan mengenai proses mendapatkan lama lampu secara
teoritis dengan Algoritma Fuzzy metode Mamdani (Max-Min) dengan metode deffuzifikasi
MOM (Mean of Maximum).
4.4.1. Perhitungan Fuzzifikasi
Pada proses fuzzifikasi merupakan proses untuk memberikan nilai derajat
keanggotaan dari suatu jumlah kendaraan. Misalnya pada percobaan 11 pada Tabel 4.5
terdapat 1 kendaraan untuk sisi A, 4 kendaraan untuk sisi B, dan 9 kendaraan pada sisi C.
Perhitungan setiap tahapan secara teoritis, diawali pada tahap fuzzifikasi seperti
ditunjukan Tabel 4.1 untuk menentukan nilai derajat keanggotaan disetiap cabangnya.
Setiap data yang masuk ke master adalah jumlah kendaraan dari tiap slave, masing-masing
data dari tiap slave akan memiliki kategori terpilih yang didapat dari perbandingan semua
nilai derajat keanggotaan ditiap kategori. Secara teoritis suatu data dapat termasuk dalam 2
kategori sekaligus, sehingga untuk menentukan hanya ada 1 kategori terpilih adalah
dengan cara membandingkan kedua kategori tersebut. Kategori yang memiliki nilai derajat
keanggotaan tertinggi akan dijadikan sebagai kategori terpilih dari data itu. Pemilihan
kategori pada tahap ini merupakan tahap MAX dari metode Mamdani.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
Tabel 4.1 Data dengan kategori terpilih
Data Perhitungan Fuzzifikasi
Kategori terpilih Sedikit Sedang 1 Sedang 2 Banyak
0
Sedikit (SK)
1
Sedikit (SK)
2
Sedikit (SK)
3
Sedang 1 (SD1)
4
Sedang 1 (SD1)
5
Sedang 2 (SD2)
6
Sedang 2 (SD2)
7
Sedang 2 (SD2)
8
Banyak (BY)
9
Banyak (BY)
10
Banyak (BY)
Sehingga untuk kategori terpilih untuk kasus 1 kendaraan untuk sisi A, 4 kendaraan
untuk sisi B, dan 9 kendaraan pada sisi C adalah Sedikit pada cabang A dengan nilai
derajat keanggotaan 0,8 (secara teoritis) dan 80 (pada program), Sedang 1 pada cabang B
dengan nilai derajat keanggotaan 0,75 (secara teoritis) dan 75 (pada program) dan Banyak
untuk cabang C dengan nilai derajat keanggotaan 0,8 (secara teoritis) dan 80 (pada
program). Pada tahap fuzzifikasi input datanya adalah jumlah kendaraan setiap cabang dan
keluarannya adalah nilai derajat keanggotaan.
4.4.2. Pemilihan Basis Aturan
Setelah didapatkan kategori terpilih dari setiap cabang maka selanjutnya akan
diarahkan pada perhitungan deffuzifikasi dengan bantuan dari Basis Aturan. Setiap
kategori terpilih akan mengarahkan ke perhitungan defuzzifikasi seperti ditunjukan pada
Tabel 3.9.
Pada kasus tersebut memiliki kategori yang Sedikit, Sedang1 dan Banyak akan
mengarah pada Tabel 3.9 nomor 7. Keluaran lama lampu hijau cabang A berada di kategori
Cepat, cabang B berada di kategori Agak Lama sedangkan cabang C berada di kategori
Lama. Sehingga masukan dari proses basis aturan adalah kategori yang dimiliki setiap
cabang dan keluarannya adalah kategori output terpilih untuk proses defuzzifikasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
4.4.3. Perhitungan Defuzzifikasi
Pada proses akhir algoritma Fuzzy Logic adalah tahap defuzzifikasi, tahap ini akan
menggembalikan data menjadi lama lampu hijau. Tahap defuzzifikasi adalah tahap dimana
input nilai derajat keanggotaan dari jumlah kendaraan setiap cabang dan keluarannya
adalah lama lampu hijau.
Pada tahap defuzzifikasi ini nilai derajat keanggotaan yang digunakan adalah
derajat keanggotaan yang paling minimum. Tahap ini merupakan tahapan MIN dari metode
Mamdani. Kemudian untuk proses penegasan pada proses defuzzifikasi adalah dengan
metoe MOM (Mean of Maximum).
Pada tahap defuzzifikasi ini menggunakan fungsi linear naik dan turun. Dengan
adalah nilai derajat keanggotaan terendah dari ketiga cabang. Proses defuzzifikasi
dengan penegasan MOM seperti ditunjukan pada Tabel 4.2.
Tabel 4.2 Defuzzifikasi Penegasan MOM
No Kategori Rumus
1. Cepat
2. Agak Lama 1 ( )
3. Agak Lama 2 ( )
4. Lama
Pada kasus tersebut derajat terendah dari ketiga slave adalah 0,75 dan hasil dari
basis aturan untuk kasus tersebut pada output cabang A adalah cepat. Sehingga
menggukanan rumus penegasan MOM pada Tabel 4.2.
Sehingga lama lampu hijau untuk cabang A yang berisi 1 kendaraan adalah 5,25,
namun pada pemrograman dibulatkan 1 angka dibelakang koma menjadi 5,2 detik. Pada
output cabang B adalah Agak Lama. Sehingga menggukanan rumus penegasan MOM
menjadi,
( )
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Sehingga lama lampu hijau untuk cabang B yang berisi 4 kendaraan adalah 14
detik. Pada output cabang C adalah Lama. Sehingga menggukanan rumus penegasan
MOM menjadi,
Sehingga lama lampu hijau untuk cabang C yang berisi 9 kendaraan adalah 22,75
detik. Namun pada pemrograman dibulatkan 1 angka dibelakang koma menjadi 22,7 detik
4.5. Hasil Data Pengujian dan Pembahasan
Pada sub bab ini dilakukan pengujian dan pembahasan terhadap perangkat keras dan
pengujian program dari prototype rekayasa pengaturan lampu lalu lintas. Pengujian
perangkat keras dilakukan dengan pengujian sensor inframerah, pengujian komparator, dan
pengujian transistor. Pengujian pada program dilakukan dengan pengujian apakah Master
dapat menerima data serial sudah sesuai dengan data yang ada pada tiap slave dan apakah
lama lampu hijau sesuai dengan jumlah kendaraan pada tiap slave.
4.5.1. Pengujian Hardware
Pengujian Hardware dilakukan pada perangkat elektronik yaitu sensor inframerah,
photodioda dan komparator dilakukan dengan pengukuran tegangan, pengukuran tegangan
referensi pada tiap cabang.
4.5.1.1. Pengujian Sensor Inframerah dan Komparator
Pengujian sensor inframerah dilakukan dengan pengambilan nilai tegangan keluaran
sensor inframerah, tegangan photodioda, tegangan referensi dan tegangan output dari
komparator. Data diambil ada tiap sensor dan komparator dari tiap cabang yang ada pada
prototype.
Pada Tabel 4.3. menunjukan nilai tegangan pada sensor infrared, output photodida,
tegangan referensi dan output komparator. Saat sinar inframerah tidak sampai ke
photodioda atau terhalang kendaraan yang menyebabkan resistansi semakin kecil maka
tegangan mendekati VCC. Tegangan dari photodioda akan masuk ke komparator, jika
tegangan photodioda lebih besar dari tegangan referensi sebagai nilai batas, maka outputan
dari komparator akan mendekati dari VCC.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Tabel 4.3 Data Tegangan Sensor dan Komparator
Slave
Tegangan Tegangan Photodioda
(volt) Tegangan
Output Komparator
(volt)
Infrared
(volt)
Ada
Mobil
Tidak Ada
Mobil
referensi
(volt)
Ada
Mobil
Tidak Ada
Mobil
A Sen. 1
1,15 4,47 0,14 1,60 3,70 -0,06
Sen. 2 4,48 0,15 1,59 3,70 -0,06
B Sen. 1
1,15 4,35 0,21 1,50 3,59 -0,01
Sen. 2 4,35 0,19 1,51 3,59 -0,01
C Sen. 1
1,15 4,49 0,18 1,52 3,67 -0.02
Sen. 2 4,49 0,19 1,54 3,67 -0,01
Dari Tabel 4.3 tegangan output dari komparator >2,5V sehingga mikrokontroler
dapat membaca sebagai logika 1, dan saat tidak ada kendaraan maka outputan dari
komparator akan mendekati ground sehingga terbaca oleh mikrokontroler sebagai logika 0.
Nilai tegangan ini sesuai untuk pembacaan mikrokontroler saat mendeteksi ada atau tidak
adanya kendaraan.
4.5.1.2. Pengujian Hardware dan Software
Pengujian software dan hardware pada prototype dilakukan untuk menguji
penggabungan sistem menjadi satu kesatuan dilakukan dengan melihat informasi yang
ditunjukan LCD 20x4 sebagai penampil Master. Pengujian dilakukan sebanyak 65 kali
percobaan yang bertujuan untuk mengetahui lama lampu hijau dengan berbagai kondisi
jumlah kendaraan. Pada pengaturan lama lampu hijau diambil secara berurutan diawali
dengan nyala lampu adaptif, setelah proses selesai maka akan dilanjutkan dengan nyala
lampu adaptif untuk cabang A sesuai dengan proses algoritma Fuzzy Logic. Seperti
ditunjukan Tabel 4.4.
Keterangan Tabel 4.4, Tabel 4.5 dan Tabel 4.6:
Perc. = Percobaan
Perhit. = Perhitungan teoritis
err (%) = Error
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Tabel 4.4 Data Pengujian cabang A P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang A
Jumlah Jumlah Jumlah A B C Waktu
1 0 0 0 0 0 0 4 4 0.00
2 2 0 3 2 0 3 6.5 6.5 0.00
3 1 2 6 1 2 6 6 6 0.00
4 1 0 8 1 0 8 6 6 0.00
5 2 4 0 2 4 0 6 6 0.00
6 2 5 1 2 5 1 6 6 0.00
7 2 4 4 2 4 4 6 6 0.00
8 0 3 7 0 3 7 6.5 6.5 0.00
9 0 6 3 0 6 3 6.5 6.5 0.00
10 1 5 7 1 5 7 6.5 6.5 0.00
11 1 4 9 1 4 9 5.2 5.25 0.95
12 2 6 10 2 6 10 6 6 0.00
13 0 8 1 0 8 1 6 6 0.00
14 1 9 4 1 9 4 5.2 5.25 0.95
15 0 8 7 0 8 7 6.5 6.5 0.00
16 2 10 10 2 10 10 6 6 0.00
17 3 2 0 3 2 0 14 14 0.00
18 6 0 0 6 0 0 14 14 0.00
19 3 2 4 3 2 4 14 14 0.00
20 3 1 5 3 1 5 14 14 0.00
21 6 1 4 6 1 4 14 14 0.00
22 5 1 7 5 1 7 14 14 0.00
23 4 2 8 4 2 8 14 14 0.00
24 6 0 9 6 0 9 14 14 0.00
25 4 3 1 4 3 1 14 14 0.00
26 3 7 1 3 7 1 14 14 0.00
27 5 3 0 5 3 0 14 14 0.00
28 6 7 0 6 7 0 14 14 0.00
29 3 4 3 3 4 3 14 14 0.00
30 3 3 6 3 3 6 14 14 0.00
31 4 5 4 4 5 4 14 14 0.00
32 4 6 6 4 6 6 14 14 0.00
33 6 3 4 6 3 4 14 14 0.00
34 7 3 5 7 3 5 14 14 0.00
35 6 7 3 6 7 3 14 14 0.00
36 5 7 5 5 7 5 14 14 0.00
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
(Lanjutan) Tabel 4.4. Data Pengujian cabang A P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang A
Jumlah Jumlah Jumlah A B C Waktu
37 4 4 8 4 4 8 14 14 0.00
38 3 6 9 3 6 9 14 14 0.00
39 5 3 9 5 3 9 14 14 0.00
40 7 7 9 7 7 9 14 14 0.00
41 4 10 2 4 10 2 14 14 0.00
42 6 10 1 6 10 1 14 14 0.00
43 4 8 3 4 8 3 14 14 0.00
44 4 9 7 4 9 7 14 14 0.00
45 5 9 3 5 9 3 14 14 0.00
46 7 8 5 7 8 5 14 14 0.00
47 4 10 8 4 10 8 14 14 0.00
48 7 8 9 7 8 9 14 14 0.00
49 10 1 2 10 1 2 22 22 0.00
50 9 2 3 9 2 3 21.5 21.5 0.00
51 8 0 5 8 0 5 22 22 0.00
52 10 2 8 10 2 8 22 22 0.00
53 9 4 0 9 4 0 22.7 22.75 0.22
54 9 6 1 9 6 1 22.7 22.75 0.22
55 8 3 4 8 3 4 21.5 21.5 0.00
56 10 3 7 10 3 7 21.5 21.5 0.00
57 9 7 4 9 7 4 21.5 21.5 0.00
58 8 5 5 8 5 5 22 22 0.00
59 10 4 8 10 4 8 22 22 0.00
60 9 7 9 9 7 9 21.5 21.5 0.00
61 10 10 2 10 10 2 22 22 0.00
62 8 9 3 8 9 3 21.5 21.5 0.00
63 9 9 6 9 9 6 22.7 22.75 0.22
64 10 10 9 10 10 9 23 23 0.00
65 10 10 10 10 10 10 24 24 0.00
Persentase Error Cabang A 0.04
Saat lampu hijau pada cabang A menyala, kondisi lampu pada cabang B dan C
adalah lampu merah menyala. Setelah nyala lampu hijau dari cabang A selesai maka akan
dilanjutkan dengan menyalakan semua lampu merah atau kondisi (allred) selama 3 detik.
Kemudian dilanjutkan dengan perhitungan kembali Algoritma Fuzzy Logic oleh
mikrokontroler untuk menentukan nyala lampu hijau pada cabang B. Data pengujian nyala
lampu hijau untuk cabang B ditunjukan pada Tabel 4.5.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Tabel 4.5 Data Pengujian cabang B P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang B
Jumlah Jumlah Jumlah A B C Waktu
1 0 0 0 0 1 0 4 4 0.00
2 2 0 3 2 0 3 6.5 6.5 0.00
3 1 2 6 1 2 6 6 6 0.00
4 1 0 8 1 0 8 6 6 0.00
5 2 4 0 2 4 0 14 14 0.00
6 2 5 1 2 5 1 14 14 0.00
7 2 4 4 2 4 4 14 14 0.00
8 0 3 7 0 3 7 14 14 0.00
9 0 6 3 0 6 3 14 14 0.00
10 1 5 7 1 5 7 14 14 0.00
11 1 4 9 1 4 9 14 14 0.00
12 2 6 10 2 6 10 14 14 0.00
13 0 8 1 0 8 1 22 22 0.00
14 1 9 4 1 9 4 22.7 22.75 0.22
15 0 8 7 0 8 7 21.5 21.5 0.00
16 2 10 10 2 10 10 22 22 0.00
17 3 2 0 3 2 0 6.5 6.5 0.00
18 6 0 0 6 0 0 5.2 5.25 0.95
19 3 2 4 3 2 4 6.5 6.5 0.00
20 3 1 5 3 1 5 6.5 6.5 0.00
21 6 1 4 6 1 4 5.2 5.25 0.95
22 5 1 7 5 1 7 6.5 6.5 0.00
23 4 2 8 4 2 8 6 6 0.00
24 6 0 9 6 0 9 5.2 5.25 0.95
25 4 3 1 4 3 1 14 14 0.00
26 3 7 1 3 7 1 14 14 0.00
27 5 3 0 5 3 0 14 14 0.00
28 6 7 0 6 7 0 14 14 0.00
29 3 4 3 3 4 3 14 14 0.00
30 3 3 6 3 3 6 14 14 0.00
31 4 5 4 4 5 4 14 14 0.00
32 4 6 6 4 6 6 14 14 0.00
33 6 3 4 6 3 4 14 14 0.00
34 7 3 5 7 3 5 14 14 0.00
35 6 7 3 6 7 3 14 14 0.00
36 5 7 5 5 7 5 14 14 0.00
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
(Lanjutan) Tabel 4.5. Data Pengujian cabang B P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang B
Jumlah Jumlah Jumlah A B C Waktu
37 4 4 8 4 4 8 14 14 0.00
38 3 6 9 3 6 9 14 14 0.00
39 5 3 9 5 3 9 14 14 0.00
40 7 7 9 7 7 9 14 14 0.00
41 4 10 2 4 10 2 22 22 0.00
42 6 10 1 6 10 1 22.7 22.75 0.22
43 4 8 3 4 8 3 21.5 21.5 0.00
44 4 9 7 4 9 7 21.5 21.5 0.00
45 5 9 3 5 9 3 21.5 21.5 0.00
46 7 8 5 7 8 5 21.5 21.5 0.00
47 4 10 8 4 10 8 22 22 0.00
48 7 8 9 7 8 9 21.5 21.5 0.00
49 10 1 2 10 1 2 6 6 0.00
50 9 2 3 9 2 3 6.5 6.5 0.00
51 8 0 5 8 0 5 6 6 0.00
52 10 2 8 10 2 8 6 6 0.00
53 9 4 0 9 4 0 14 14 0.00
54 9 6 1 9 6 1 14 14 0.00
55 8 3 4 8 3 4 14 14 0.00
56 10 3 7 10 3 7 14 14 0.00
57 9 7 4 9 7 4 14 14 0.00
58 8 5 5 8 5 5 14 14 0.00
59 10 4 8 10 4 8 14 14 0.00
60 9 7 9 9 7 9 14 14 0.00
61 10 10 2 10 10 2 22 22 0.00
62 8 9 3 8 9 3 21.5 21.5 0.00
63 9 9 6 9 9 6 22.7 22.75 0.22
64 10 10 9 10 10 9 23 23 0.00
65 10 10 10 10 10 10 24 24 0.00
Persentase Error Cabang B 0.05
Saat lampu hijau pada cabang B menyala, kondisi lampu pada cabang A dan C
adalah lampu merah menyala. Setelah nyala lampu hijau dari cabang B selesai maka akan
dilanjutkan dengan menyalakan semua lampu merah atau kondisi (allred) selama 3 detik.
Kemudian dilanjutkan dengan perhitungan kembali Algoritma Fuzzy Logic oleh
mikrokontroler untuk menentukan nyala lampu hijau pada cabang C. Data pengujian nyala
lampu hijau untuk cabang C ditunjukan pada Tabel 4.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Tabel 4.6 Data Pengujian cabang C P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang C
Jumlah Jumlah Jumlah A B C Waktu
1 0 0 0 0 0 0 4 4 0.00
2 2 0 3 2 0 3 14 14 0.00
3 1 2 6 1 2 6 14 14 0.00
4 1 0 8 1 0 8 22 22 0.00
5 2 4 0 2 4 0 6 6 0.00
6 2 5 1 2 5 1 6 6 0.00
7 2 4 4 2 4 4 14 14 0.00
8 0 3 7 0 3 7 14 14 0.00
9 0 6 3 0 6 3 14 14 0.00
10 1 5 7 1 5 7 14 14 0.00
11 1 4 9 1 4 9 22.7 22.75 0.22
12 2 6 10 2 6 10 22 22 0.00
13 0 8 1 0 8 1 6 6 0.00
14 1 9 4 1 9 4 14 14 0.00
15 0 8 7 0 8 7 14 14 0.00
16 2 10 10 2 10 10 22 22 0.00
17 3 2 0 3 2 0 6.5 6.5 0.00
18 6 0 0 6 0 0 5.2 5.25 0.95
19 3 2 4 3 2 4 14 14 0.00
20 3 1 5 3 1 5 14 14 0.00
21 6 1 4 6 1 4 14 14 0.00
22 5 1 7 5 1 7 14 14 0.00
23 4 2 8 4 2 8 22 22 0.00
24 6 0 9 6 0 9 22.7 22.75 0.22
25 4 3 1 4 3 1 6.5 6.5 0.00
26 3 7 1 3 7 1 6.5 6.5 0.00
27 5 3 0 5 3 0 6.5 6.5 0.00
28 6 7 0 6 7 0 6.5 6.5 0.00
29 3 4 3 3 4 3 14 14 0.00
30 3 3 6 3 3 6 14 14 0.00
31 4 5 4 4 5 4 14 14 0.00
32 4 6 6 4 6 6 14 14 0.00
33 6 3 4 6 3 4 14 14 0.00
34 7 3 5 7 3 5 14 14 0.00
35 6 7 3 6 7 3 14 14 0.00
36 5 7 5 5 7 5 14 14 0.00
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
(Lanjutan) Tabel 4.6. Data Pengujian cabang C P
erc.
SLAVE MASTER
Per
hit
.
err.
(%
)
A B C Data Master Cabang C
Jumlah Jumlah Jumlah A B C Waktu
37 4 4 8 4 4 8 22 22 0.00
38 3 6 9 3 6 9 21.5 21.5 0.00
39 5 3 9 5 3 9 21.5 21.5 0.00
40 7 7 9 7 7 9 21.5 21.5 0.00
41 4 10 2 4 10 2 6 6 0.00
42 6 10 1 6 10 1 5.2 5.25 0.95
43 4 8 3 4 8 3 14 14 0.00
44 4 9 7 4 9 7 14 14 0.00
45 5 9 3 5 9 3 14 14 0.00
46 7 8 5 7 8 5 14 14 0.00
47 4 10 8 4 10 8 22 22 0.00
48 7 8 9 7 8 9 21.5 21.5 0.00
49 10 1 2 10 1 2 6 6 0.00
50 9 2 3 9 2 3 14 14 0.00
51 8 0 5 8 0 5 14 14 0.00
52 10 2 8 10 2 8 22 22 0.00
53 9 4 0 9 4 0 5.2 5.25 0.95
54 9 6 1 9 6 1 5.2 5.25 0.95
55 8 3 4 8 3 4 14 14 0.00
56 10 3 7 10 3 7 14 14 0.00
57 9 7 4 9 7 4 14 14 0.00
58 8 5 5 8 5 5 14 14 0.00
59 10 4 8 10 4 8 22 22 0.00
60 9 7 9 9 7 9 21.5 21.5 0.00
61 10 10 2 10 10 2 6 6 0.00
62 8 9 3 8 9 3 14 14 0.00
63 9 9 6 9 9 6 14 14 0.00
64 10 10 9 10 10 9 23 23 0.00
65 10 10 10 10 10 10 24 24 0.00
Persentase Error Cabang C 0.07
Saat lampu hijau pada cabang C menyala, kondisi lampu yang menyala pada
cabang A dan B adalah lampu merah. Setelah nyala lampu hijau dari cabang C selesai
maka akan dilanjutkan dengan menyalakan semua lampu merah atau menyalakan kondisi
(allred) selama 3 detik. Kemudian dilanjutkan dengan perhitungan kembali Algoritma
Fuzzy Logic oleh mikrokontroler untuk menentukan nyala lampu hijau pada cabang A,
begitu seterusnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
Pada Tabel 4.4 untuk percobaan 11 kolom “Slave” menunjukan jumlah kendaraan
yang dideteksi cabang A,B,C adalah 1,4,9. Pada kolom “Data Master” menunjukan data
yang diterima oleh master dari komunikasi I2C dari slave A,B dan C adalah 1,4 dan 9.
Kolom “Cabang X” nilai 5,2 menunjukan hasil dari algoritma fuzzy logic cabang A yakni
lama lampu hijau yang akan menyala. Kolom “Perhit.” nilai 5.25 merupakan hasil
perhitungan secara teoritis cabang A. Sedangkan kolom “error” memiliki nilai
0.952380952% yang merupakan persentase error dari pengujian dengan perhitungan
algoritma Fuzzy Logic dari percobaan 11.
Dari pengujian data yang telah dilakukan dapat dikatakan berhasil. Komunikasi I2C
dapat mengirimkan data dari slave ke master, hal ini dapat dilihat di Tabel 4.5, Tabel 4.6
dan Tabel 4.7, pada kolom “Data Master” memiliki nilai yang sama dengan “Jumlah”
pada tiap cabang. Jumlah kendaraan dari masing-masing cabang akan mempengaruhi lama
dari nyala lampu hijau. Semakin banyak kendaraan maka akan semakin lama nyala lampu
hijau, sedangkan semakin sedikit kendaraan maka akan semakin cepat nyala lampu hijau
cabang tersebut.
Terdapat perbedaan dari lama lampu hijau antara perhitungan teoritis dengan
pengujian alat (Tabel 4.4, Tabel 4.5, Tabel 4.6.) karena pada programing yang ditampilkan
hanya 1 angka dibelakang koma.
Persentase error pada perbandingan pengujian dan perhitungan secara teoritis
adalah dengan menggunakan rumus Persamaan 4.1
(4.1)
Persentase keberhasilan alat didapatkan dengan menggunakan rumus Persamaan 4.2
(4.2)
Sehingga persentase keberhasilan alat dengan algoritma Fuzzy Logic adalah 99.95%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
Dari pengujian prototype dapat dikatakan berhasil, sensor inframerah dan
photodioda pada masing-masing slave dapat bekerja dengan mendeteksi kendaraan yang
masuk dan keluar. Kemudian data jumlah kendaraan dikirimkan ke Master dengan
komunikasi serial I2C dan diolah oleh mikrokontroler ATmega32. Lampu lalu lintas juga
dapat bekerja dengan baik yaitu dengan menyala sesuai dengan lama lampu hijau yang
ditentukan oleh program Fuzzy Logic.
Pada proses pengujian prototype pendeteksian oleh sensor slave dapat berjalan
dengan baik. Namun terdapat kondisi saat 1 kendaraan yang terbaca oleh slave sebagai 2
kendaraan. Hal ini terjadi karena posisi sensor pendeteksi masih terlalu tinggi terhadap
mobil-mobil rendah yang menyebabkan 1 kendaraan terbaca sebagai 2 kendaraan, karena
pada mobil-mobilan rendah terdapat celah sehingga slave membaca kondisi Falling Edge
2x. Posisi dari led infrared dan led photodioda juga harus diperhatikan agar dapat
mendeteksi kendaraan yang melintas.
4.6. Analisa dan Pembahasan Perangkat Lunak
Pada sub bab ini akan dibahas mengenai analisis dan listing program pada slave dan
Master menggunakan CodeVision AVR.
4.6.1. Aplikasi CodeVision AVR pada Slave
Pada sub bab ini akan dibahas masing-masing fungsi pada listing program Slave
menggunakan software CodeVision AVR diantaranya program pendeteksi kendaraan
(sensor inframerah), dan program komunikasi serial menggunakan komunikasi I2C.
4.6.1.1. Sensor Pendeteksi Kendaraan
Pada pembacaan sensor pendeteksi kendaraan yakni led inframerah sebagai
transmitter, proses pembacaan photodioda dan komunikasi I2C menggunakan
mikrokontroler ATmega8.
Gambar 4.10. Inisialisasi dan pendeklarasian program pada Slave A
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
Gambar 4.10. menunjukan inisialisasi dan deklarasi fungsi yang akan digunakan
dalam pemrograman slave. Variabel “masukA” digunakan untuk menyimpan jumlah data
dari sensor 1 (sensor masuk) yang ada dicabang A. Variabel “keluarA” digunakan untuk
menyimpan jumlah data dari sensor 2 (sensor keluar) yang ada dicabang A. Variabel
“data_A” digunakan untuk menyimpan data keseluruhan dari cabang A. Penggunaan
variabel“buff” adalah sebagai array untuk wilayah pertukaran data jumlah kendaraan.
Pendeteksian kendaraan menggunakan sensor inframerah dan photodioda, saat
photodioda terkena pancaran sinar inframerah maka tegangan yang dikeluarkan photodioda
dibawah 1V sedangkan saat tidak terkena pancaran sinar inframerah akan memiliki
teganagan diatas 2,5V. Sehingga saat photodioda tidak terkena pancaran sinar inframerah
mikrokontroler dapat terbaca logika 1, maka dibutuhkan special port Interupsi yang
dimiliki ATmega8. Penggunaan instruksi interupsi maka harus mengaktifkan port interupsi
terlebih dahulu. Interupsi yang digunakan adalah dengan menggunakan mode Falling Edge
yang bertujuan akan membaca data saat adanya perubahan dari logika 1 ke 0. Seperti
ditunjukan dengan Gambar 4.11. dan listing program yang ditunjukan Gambar 4.12.
Gambar 4.11. Setting Awal untuk mengaktifkan fungsi Interupsi
Gambar 4.12 Listing Program untuk fungsi Interupsi
Instruksi “masukA++” berfungsi sebagai operator penjumlah, yang akan
menambah nilai 1 pada variabel “masukA“ jika kondisi interupsi terpenuhi, begitu juga
pada variabel “keluarA. Seperti ditunjukan Gambar 4.12. adalah program interupsi cabang
A yang digunakan untuk sensor masuk dan sensor keluar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
Pengaturan interrupt juga bisa di cek pada nilai MCUCR pada void main().Seperti
ditunjukan Gambar 4.13. Register MCUCR berfungsi untuk mengatur pemicu interupsi.
Pada program slave MCUCR meniliki nilai 0x0A atau pada fungsi biner 0000 1010 yang
memiliki arti bahwa fungsi interup 1 dan 2 menggunakan transisi turun atau Falling Edge.
pada line 71 menunjukan pada program ini mengaktifkan LCD dengan 16 karakter
sedangkan line 72 menunjukan pada program ini mengaktifkan interupsi. Variabel
“data_A” merupakan hasil dari operasi pengurangan antara data pada variabel “masukA”
dan “keluarA”, dimana “data_A” adalah variabel yang berisi data dari jumlah kendaraan
pada cabang A.
Gambar 4.13 listing program pada void main() slave
Fungsi dari instruksi lcd_gotoxy(8,0) adalah sebagai koordinat dari karakter yang
ditampilkan, (0,1 ) berarti karakter pertama akan diletakan pada kursor ke 0 pada koordinat
sumbu x dan 1 berarti pada baris ke 2 pada koordinat sumbu y. Fungsi dari sprintf adalah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
menuliskan string “masukA” di dalam flash ke LCD. Sedangkan fungsi lcd_puts()
menuliskan string buff di dalam SRAM ke LCD,
4.6.1.2. Pengendali Komunikasi I2C
Pada masing-masing slave memiliki alamat tersendiri yakni pada pengaturan pada
saat mengkonfigurasi awal. Pada pengaturan penggunaan komunikasi I2C ditunjukan
dengan Gambar 4.14 (a) dan (b).
„(a) (b)
Gambar 4.14. (a)Setting Port SDA dan SCL I2C Slave. (b) Setting alamat dari Slave
Listing program komunkasi 12C ditunjukan Gambar 4.15 dan 4.16. Pengaturan
alamat 0x02 memiliki arti bahwa slave A dikenal sebagai slave dengan nomor 1, sedangan
slave B akan memiliki alamat 0x04 (slave nomor 2) dan slave C memiliki alamat 0x06
(slave nomor 3). Pada register TWAR (TWI Address Register) bit7-bit1 merupakan bit
untuk menyimpan alamat sebagai slave, sedangkan bit 0 (register TWGCE) digunakan
untuk mengaktifkan respon sebagai slave.
Gambar 4.15. Listing Program I2C pada Slave A
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
Gambar 4.16. Void main komunikasi I2C
Sedangkan komunikasi I2C pada slave merupakan sebuah fungsi interupsi yakni jika
fungsi I2C dipanggil maka akan menjalanan program yang ada didalamnya, fungsi masing-
masing adalah sebagai berikut:
a. if (TWSR==0xA8) TWDR=data_A>>8; (line 39, 40)
Kondisi ini berarti jika register TWSR bernilai 0xA8 maka data jumlah kendaraan
akan mengisi register TWDR, dengan menggeser bit satu per satu. TWSR bernilai
0x48 adalah berupa isyarat yang diberikan oleh Master sebagai tanda start untuk
komunikasi I2C, dan sebagai tanda bahwa register TWDR sedang dalam proses
penulisan data.
b. if (TWSR==0xB8) TWDR=data_A; (line 42, 43)
Kondisi ini berarti jika TWSR bernilai 0xB maka komunikasi telah di stop oleh
Master,dan data sudah tersimpan dalam register TWDR.
c. TWCR|=0x80; (line 53)
Kondisi ini berarti menandakan bahwa komunikasi I2C telah selesai dan langsung
mereset interupsi I2C kembali.
4.6.2. Aplikasi CodeVision AVR pada Master
Mikrokontroler pengendali pada Master dan komunikasi I2C menggunakan
mikrokontroler ATmega32. Pada Gambar 4.17 menunjukan deklarasi program.
Seperti ditunjukan line 10-16 merupakan fungsi-fungsi library yang akan gunakan
dikeseluruhan program dengan instruksi “#include”. Selanjutnya fungsi dari “#define”
seperti ditunjukan line 18-37 bertujuan mendefinisikan sebuah variabel untuk
menginisialisasikan port atau nilai secara global dalam suatu program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
Gambar 4.17. Inisialisasi dan deklarasi program pada Master
4.6.2.1. Penerimaan Data I2C
„(a) (b)
Gambar 4.18. (a) pengaktifan fungsi I2C (b) inisialisasi port SDA dan SCL Master
Komunikasi yang digunakan untuk menerima data adalah dengan komunikasi I2C.
pada setting awal pengaktifan komunikasi I2C seperti ditunjukan pada Gambar 4.18 (a).
Sedangkan ada Gambar 4.18 (b) menunjukan pengaturan port yang digunakan untuk
komunikasi I2C ada pada PORT C, sedangkan pin 7 digunakan untuk port SDA dan pin 6
digunakan untuk port SCL. Bit rate yang digunakan adalah 100kHz.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
Gambar 4.19. Listing Program I2C
Pada gambar 4.19. deklarasi int pada program berfungsi sebagai penetapan a, b, c,
data_A, data_B dan data_C sebagai variabel int. begitu juga dengan “buff”, “buff1”,
“buff2”, “buff3” yang ditetapkan sebagai variabel char. Sedangkan komunikasi I2C pada
Master memiliki fungsi masing-masing sebagai berikut:
a. i2c_start(); (line 47)
berfungsi untuk memulai sebagai sinyal START untuk memulai komunikasi transfer
data pada I2C Bus.
b. i2c_write((add_slaveA<<1)|read); (line 48)
Setelah sinyal start diterima kemudian diikuti oleh address byte (7 bit address+ 1 bit
pengarah data). Alamat dari slave A disimpan pada variabel “add_slaveA” sebagai
alamat I2C untuk komunikasi dengan Master. Alamat pada slave A dikenali Master
dengan alamat 0x01. Dilanjutkan dengan pengiriman data untuk mode pengalamatan
8bit, dengan pengisian format bit MSB ke LSB dimana bit alamat tersebut
mengandung informasi bit read yang berarti memberi perintah untuk membaca data
pada slave A.
c. a=i2c_read(1)<<8; (line 49)
Berfungsi membaca data data dan menyimpannya pada variabel a. Penggunaan <<8
digunakan karena data yang dikirim bernilai 10bit, jika tidak digeser (<<) maka data
ang dikirimkan tidak utuh.
d. a|=i2c_read(0); (line 50)
Dilakukan tahap pembacaan data yang selanjutnya disimpan pada variabel a yang
berarti data berasal dari Slave A.
e. i2c_stop(); (line 51)
Master mengirim sinyal stop.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
Setelah proses komunikasi I2C selesai dilanjutkan dengan proses menampilkan
data yang diterima, agar dapat dipastikan data sudah diterima oleh Master dengan
menampilkan data dengan fungsi “tampil_data()”.
Pada line 77, 82, 87 merupakan pemanggilan kembali fungsi I2C untuk penerimaan
data dari slave. Kemudian data disimpan pada karakter a untuk slave A, karakter c untuk
slave B dan karakter c untuk slave C, yang disimpan pada array sisA,sisB, dan sisC.
Sedangkan pada line 78-80 berfungsi untuk menampilkan karakter pada LCD, pengamat
akan mendapatkan informasi tentang banyaknya kendaraan pada masing-masing sisi.
Karakter “%d” pada line 79,84, dan 89 berfungsi untuk menampilkan data desimal dengan
kapasitas 2 karakter.
Setelah data diterima oleh Master, kemudian data akan di tampilkan pada LCD
20x4 seperti ditunjukan dengan listing program pada Gambar 4.20.
Gambar 4.20. Penampil jumlah kendaraan tiap cabang
4.6.2.2. Subrutin Nyala Lampu Awal
Sebelum proses pengiriman data dan perhitungan nyala lampu adaptif, master
akan menjalankan prosedur nyala lampu awal terlebih dahulu. Tujuannya adalah untuk
memberikan waktu agar slave mendapatkan data jumlah kendaraan dalam jangka waktu
tertentu disetiap cabangnya. Lama lampu merah, kuning dan hijau sudah dideklarasikan
dilokal memori pada fungsi “nyala_lampu_awal()”. Fungsi “nyala_lampu_awal()” hanya
dieksekusi satu kali yakni saat pertama kali sistem dinyalakan. Pada proses ini Master
sudah dapat menerima data dari komunikasi I2C. Saat fungsi “nyala_lampu_awal()”
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
berjalan, LCD akan tertampil seperti ditunjukan pada Gambar 4.21, sedangkan listing
program “nyala_lampu_awal()” ditunjukan Gambar 4.22.
Gambar 4.21. Tampilan saat nyala lampu awal
Gambar 4.22. Listing program nyala lampu awal
4.6.2.3. Subrutin Proses Algoritma Fuzzy
Algoritma Fuzzy Logic menggunakan metode Mamdani. Pada metode Mamdani,
komposisi aturan menggunakan metode MAX, sedangkan aplikasi fungsi implikasi
menggunakan MIN. Metode Mamdani dikenal juga dengan metode MAX-MIN. Fungsi
penegasan defuzzifikasi menggunakan MOM (Mean of Maximum).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
4.6.2.3.1. Fuzzifikasi
Tahap fuzzifikasi adalah tahapan untuk menentukan besar derajat keanggotaan
yang dimiliki suatu data, dimana data yang masuk akan ditentukan kategorinya. Awal
proses dari Algoritma Fuzzy seperti ditunjukan Gambar 4.23, setiap data yang diterima dari
proses komunikasi I2C masing-masing data akan memiliki variabel baru (line 168-170).
Macam-macam kategori yang digunakan untuk proses fuzzifikasi ada 3 bagian yakni
sedikit, sedang dan banyak, sesuai dengan Framework pada Gambar 3.23. Namun secara
programming kategori dibagi menjadi 4 bagian yakni sedikit, sedang1, sedang2 dan
banyak. Karena pada fungsi linear pada fuzzifikasi yang digunakan adalah fungsi linear
turun untuk bagian sedikit, fungsi linear naik untuk bagian sedang 1, fungsi linear turun
untuk bagian sedang 2 dan fungsi linear naik untuk bagian banyak, seperti ditunjukan
Gambar 4.24.
Gambar 4.23. Listing program “fuzzifikasi()”
Gambar 4.24. Frame pada pemrograman
Rumus penentuan nilai derajat keanggotaan menggunakan Tabel 3.10. Secara
teoritis derajat keanggotaan memiliki nilai minimal 0 dan maksimal 1, tetapi programing
untuk mencari hasil minimum pada fungsi CVAVR “min (int a, int b)” menggunakan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
nilai yang merupakan bilangan bulat (integer). Sehingga pada program untuk mencari nilai
derajat digunakan pengali 20, maka nilai derajat keanggotaan minimal 0 dan maksimal
menjadi 100. Pada line 172-179 adalah proses pemberian nilai derajat keanggotaan dari
data yang masuk dan setiap data akan memiliki derajat keanggotaan pada setiap kategori.
Gambar 4.25. Inisialisasi global untuk fungsi “pemilihan()”
Pada Gambar 4.25. merupakan inisialisasi secara global. Proses selanjutnya adalah
pengkategorian dengan memilah data sesuai dengan jumlah kendaraan yang masuk, secara
teoritis setiap data berupa jumlah kendaraan dapat masuk kedalam suatu kategori dengan
membandingkan derajat keanggotaan ditiap kategori. Kategori yang memiliki derajat
keanggotaan tertinggi akan menjadi kategori terpilih dari suatu data.
Secara programing pada fungsi “pemilihan()” terdapat pemanggilan fungsi
“fuzzifikasi()” (line 211), karena data yang digunakan pada fungsi “pemilihan()” berasal
dari fungsi “fuzzifikasi()”. Fungsi “pemilihan()” dilakukan sebab setiap data tertentu
memiliki kemungkinan termasuk dalam 2 kategori sekaligus Pemilahan dilakukan dengan
menyeleksi data menggunakan fungsi if (line 221, 224, 233, 241) sesuai dengan banyaknya
data yang dimiliki. Setelah data dipilah berdasarkan jumlahnya, kemudian data dipilah
kembali berdasarkan derajat keanggotaan dari kategori yang memiliki potensi
bersinggungan. Gambar 4.26. adalah listing program fungsi “pemilihan()” dan kondisi 1
data yang memiliki 2 kategori ditunjukan pada Gambar 4.27.
Gambar 4.26 Contoh data yang masuk dalam 2 kategori
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
Gambar 4.27. Listing program fungsi “pemilihan()” sisi A
Nilai derajat keanggotaan tertinggi akan menjadi kategori terpilih untuk data,
disinilah proses MAX pada metode MAX-MIN. Pada fungsi “pemilihan()” disediakan
beberapa array yang berfungsi menyimpan derajat keanggotaan tertinggi sesuai dengan
kategorinya. Setiap pada fungsi ini terdapat array dan variabel baru diberi nilai awal = 0
(line 212-218), yang bertujuan mereset array (sisiA[0], sisiA[1], sisiA[2], sisiB[0],
sisiB[1], sisiB[2], sisiC[0], sisiC[1], sisiC[2]) dan variabel (volumeA1a, volumeA1b,
volumeA2a, volumeAb2, volumeB1a, volumeB1b, volumeB2a, volumeB2b, volumeC1a,
volumeC1b, volumeC2a, volumeC2b) sebelum dimasukan data baru. Pada tahap ini
kategori sedang dibagi menjadi 2 yakni “sedang_x1” dan “sedang_x2”, karena pada
framework kategori sedang membutuhkan 2 fungsi keanggotaan himpunan kabur yakni
fungsi naik dan fungsi turun.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
4.6.2.3.2. Basis Aturan (Rule)
Gambar 4.28. Listing program "basis_aturan()"
Setelah fungsi “pemilihan()” dilanjutkan dengan fungsi “basis_aturan()”. Pada
fungsi “basis_aturan()” terjadi proses impilkasi (jika-maka) yang menggunakan metode
MIN. Pada fungsi “basis_aturan()” adalah tahap mencari derajat keanggotaan minimum
tiga data dari slave berbeda. Secara program proses pencarian derajat keanggotaan
terendah masing-masing slave dengan cara membandingan 2 kondisi terlebih dahulu
dengan menggunakan fungsi CVAVR “min(int a, intb)”, kemudian hasil minimum itu di
bandingkan kembali dengan data selanjutnya agar didapat derajat keanggotaan terendah
(line 284, 287, 290, 293). Derajat keanggotaan terendah dari ketiga slave akan menjadi
data input untuk proses defuzzifikasi (penegasan) atau pengubahan menjadi output lama
nyala lampu pada logika fuzzy. Dalam array r[x] bertujuan menentukan rumus
defuzzifikasi yang dipilih sesuai dengan kondisi yang telah ditentukan seperti pada Tabel
3.9.. Secara programing outputan sesuai metode penegasan MOM (Mean of Maximum)
adalah seperti ditunjukan Gambar 4.28.
Tabel 4.7 Output "basis_aturan()"
No Persamaan MOM Kondisi Output
1 (14 - (0.1 * x)) + 4 Rendah
2 (22 - (0.08 * x)) + ((0.08*x)+6) Sedang
3 ((0.1 * x ) + 4) + 24 Tinggi
Terdapat berbedaan pada Tabel 4.4 dengan Persamaan 3.1, 3.2, dan 3.3 karena pada
dimana terdapat pengembalian nilai dari derajat keanggotaan dengan mengalikan nilai
yang dikalikan dengan derajat keanggotaan (r[x]) dengan 0,01. Karena nilai derajat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
keanggotaan awal dijadikan 100 seperti ditunjukan pada Tabel 4.8, namun proses
defuzzifikasi dengan penegasan MOM belum selesai pada tahap ini.
4.6.2.3.3. Defuzzifikasi
Setelah data masuk pada fungsi “basis_aturan()” maka tahap selanjutnya adalah
proses defuzzifikasi. Pada defuzzifikasi dengan metode penegasan MOM secara teoritis
menggunakan Persamaan (2.14), yakni data dari derajat keang gotaan tertinggi kategori
output dijumlahkan dan dibagi 2 untuk mendapat nilai tengah tertinggi. Contohnya
ditunjukan pada Gambar 4.29 (a) dan (b).
„(a) (b)
Gambar 4.29 Contoh penegasan MOM (a) fungsi turun (b) fungsi naik dan turun
Sehingga rumus defuzzifikasi penegasan MOM untuk Gambar 4.29 (a) adalah
,
dan untuk Gambar 4.29 (b)
dimana fungsi naik adalah b1 dan fungsi turun adalah b2
Gambar 4.30. Listing program fungsi "defuzzifikasi ()"
Pada Gambar 4.30 menunjukan listing program fungsi “defuzzifikasi()” yang
mengarahkan kondisi-kondisi yang didapat pada fungsi “pemilihan()”, untuk memilih
kondisi yang akan dipilih pada rule sebagai output. Kondisi ini akan mengarah kembali
kepada salah satu kondisi pada “basis_aturan()” dengan bantuan fungsi “fuzzy()”
1 2 30
a1 a2
1 2 3 4 5
b1 b2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
Gambar 4.31. Fungsi "fuzzy()"
Seperti ditunjukan Gambar 4.31 fungsi “fuzzy()” ini sebagai penyempurnaan dari
penegasan MOM, yakni pada hasil akhir perhitungan output dari “basis_aturan()” akan
dibagi 2. Penentuan kondisi dari berbagai kategori ke hasil akhir didapatkan dari melihat
kondisi yang terpenuhi pada Tabel 3.9, dengan memasukan data yang nilai derajat
keanggotaan tertinggi sesuai dengan kategori. Setelah itu kondisi yang digunakan akan
ditampilkan pada LCD 20x4 (line 444). Pada akhir line menggunakan fungsi “break();”
yang bertujuan jika kondisi terpenuhi maka proses akan langsung keluar dari fungsi, dan
lanjut ke fungsi berikutnya.
4.6.2.4. Subrutin Nyala Adaptif
Setelah didapatkan lama nyala lampu, program akan menyalakan lampu hijau
sesuai cabang yang diaktifkan. Listing program hitung mundur salah satu cabang
ditunjukan Gambar 4.32.
Gambar 4.32. Listing program nyala lampu adaptif cabang A
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
Pada fungsi “hitung_mundur_A()” akan menampilkan lama hitung mundur lampu
hijau (line 520-522). Pemberian variabel “kali” (line 512) bertujuan untuk memberikan
jeda waktu 1 detik untuk setiap hitung mundur.
Kemudian untuk listing program menampilkan lama waktu lampu hijau menyala
hasil dari perhitungan logika fuzzy tanpa adanya hitung mundur ditunjukan pada Gambar
4.33.
Gambar 4.33. Fungsi "penampil_waktu()"
Selanjutnya adalah listing program urutan nyala lampu menyala. Pada setiap lampu
lalu lintas memiliki kondisi dimana semua lampu merah akan menyala atau kondisi allred
(fungsi “semua_merah()”). Pada kondisi allred ditentukan waktu lama kondisi ini selama
3 detik dan lama lampu kuning selama 3 detik (line 572).
Pada lama lampu hijau dengan keluaran dari logika fuzzy terdapat waktu outputan
yang memiliki nilai pecahan atau terdapat koma. Namun pada penampil lama lampu hijau
menyala akan menghitung mundur dengan nilai bulat karena pada proses hitung mundur
umumnya menggunakan bilangan bulat.
Saat giliran kondisi nyala lampu hijau pada cabang A aktif, maka pada cabang B
dan C akan menyala, lampu merah pada cabang A akan mati (line 584-587) dan akan
mengaktifkan lampu hijau A dengan fungsi ”hitung_mundur_A()” (line 588). Setelah
hitung mundur selesai maka lampu hijau akan mati (line 590), lalu lampu kuning akan
menyala selama waktu yang sudah ditentukan (line 591-593). Setelah kondisi kuning
kemudian dilanjutkan dengan pemanggilan fungsi “semua_merah()”. Listing program
ditunjukan pada Gambar 4.34.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
Gambar 4.34. Listing fungsi "semua_merah()" dan "nyala_adaptif_a()"
4.6.2.5. Program Utama
Keseluruhan fungsi data yang digunakan dan ditampilkan disatukan pada fungsi
“cabang_a()” begitu juga untuk cabang B dan C. seperti ditunjukan Gambar 4.35. Pada
void mainnya hanya menampilkan “tampil_data()” lalu “nyala_lampu_awal()”, kemudian
looping fungsi “cabang_a()”, fungsi “cabang_b()”, fungsi “cabang_c()”. Seperti
ditunjukan Gambar 4.36.
Gambar 4.35. Keseluruhan fungsi yang digunakan "cabang_a()"
Gambar 4.36. Void main program pada Master
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
5. BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Setelah melakukan perancangan, pembuatan dan pengujian pada prototype
rekayasa pengaturan lampu lalu lintas. Dapat diambil kesimpulan sebagai berikut:
1. Dari hasil pengujian, algoritma Fuzzy Logic dapat digunakan untuk mengatur nyala
lampu hijau pada lampu lalu lintas berdasarkan jumlah kendaraan.
2. Dari hasil pengujian, prototype rekayasa lampu lalu lintas dapat berjalan dengan baik
persentase error pengujian dengan perhitungan teoritis adalah 0.05% dan persentase
keberhasilan alat dengan Algoritma Fuzzy Logic adalah 99.95%.
3. Dari hasil pengujian, pengiriman data dari slave ke master dapat dikirimkan secara
baik dengan komunikasi I2C
4. Dari hasil pengujian, untuk pengujian alat dengan perhitungan secara teoritis sudah
sesuai.
5. Sensor infrared dan photodioda dapat digunakan untuk mendeteksi kendaraan.
5.2. Saran
Berdasarkan hasil yang diperoleh, untuk pengembangan selanjutnya terdapat
beberapa saran:
1. Agar nyala lampu hijau akan lebih bervariasi maka lebih baik jika kondisi framework
input dan outputnya diperbanyak.
2. Alat ini bisa dikembangkan lagi menggunakan wifi atau bluetooth untuk komunikasi
antar mikrokontroler.
3. Prototype jalan raya diperlebar sehingga dapat menampung lebih banyak kendaraan.
4. Peletakan pendeteksi kendaraan yang dibuat secara vertikal dan lebih dari 1 buah,
sehingga tidak terjadi pendeteksian ganda dari 1 kendaaraan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
6. DAFTAR PUSTAKA
[1] Manto. --. Perangkat Pengatur Timer Lampu Lalu Lintas Berdasarkan Antrian
Kendaraan. Depok: Jurnal
[2] POLBAN.--.Otomatisasi Pengisian Minuman Pada Kemasan Berbasis
Mikrokontroler Atmega 8535. ---: Dasar Teori
[3] Floyd, Thomas L.2012. Electronic Device 9th
edition.--.--
[4] ---. LCD (Liquid Cristal Display). http://elektronika-dasar.web.id/lcd-liquid-cristal-
display/ Diakses tanggal 27 Desember 2017
[5] Suparno,Lek dan Lek Satrio Suseno. (2012). Perancangan Robot Pemadam Api
Menggunakan Line Follower Berbasis Mikrokontroler ATMEGA16. Yogyakarta:
Jurnal
[6] ---. Teori Relay Elektro Mekanik. http://elektronika-dasar.web.id/teori-Relay-elektro-
mekanik/ Diakses Tanggal 13 Februari 2018
[7] Nariswari,Yacinta L.M (2016). Aplikasi Penampil Menggunakan Visual Basic Untuk
Optimasi Ketersediaan Tempat Parkir Mobil. Yogyakarta: Tugas Akhir
[8] Surya,Frans. 2007. I2C Protokol. ---. Artikel
[9] Chrismaratika,Chandra. 2013. Simulasi Sistem Antrian Loket Berbasis
Mikrokontroler Atmega8535 dan ATmega8.Yogyakarta: Tugas Akhir
[10] Musbikhin. Interupsi Pada AVR. http://www.musbikhin.com/interupsi-pada-avr
diakses tanggal 18 Februari 2018
[11] Anonim. 2016. Logika Fuzzy.Yogyakarta. Modul
[12] ---.2013.Datasheet infrared IR333.Everlight
[13] ---.---. Datasheet Songle Relay. Songle Relay
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-1
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-2
Lampiran 1
Listing Program Slave A
/*****************************************************
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
int masukA,keluarA,data_A;
unsigned char buff[30], buff1[30];
interrupt [EXT_INT0] void ext_int0_isr(void)
masukA++;
interrupt [EXT_INT1] void ext_int1_isr(void)
keluarA++;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-3
interrupt [TWI] void twi_isr(void)
if (TWSR==0xA8)
TWDR=data_A>>8;
if (TWSR==0xB8)
TWDR=data_A;
TWCR|=0x80;
void main(void)
TWBR=0x48;
TWAR=0x02; // Alamat diMaster 0x01
TWCR=0x45;
TWSR=0x00;
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;
lcd_init(16);
#asm("sei")
while (1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
data_A=masukA-keluarA;
lcd_gotoxy(0,0);
sprintf(buff,"In =%2d",masukA);
lcd_puts(buff);
lcd_gotoxy(0,1);
sprintf(buff,"Out=%2d",keluarA);
lcd_puts(buff);
lcd_gotoxy(8,0);
sprintf(buff,"Data=%2d",data_A);
lcd_puts(buff);
lcd_gotoxy(8,1);
lcd_putsf("Slave-A");
lcd_puts(buff1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-5
Lampiran 2
Listing Program Slave B
/*****************************************************
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
int masukB,keluarB,data_B;
unsigned char buff[30],buff1[30];
interrupt [EXT_INT0] void ext_int0_isr(void)
masukB++;
interrupt [EXT_INT1] void ext_int1_isr(void)
keluarB++;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-6
interrupt [TWI] void twi_isr(void)
if ((TWSR&0xF8)==0xA8)
TWDR=data_B>>8;
if (TWSR==0xB8)
TWDR=data_B;
TWCR|=0x80;
void main(void)
TWBR=0x48;
TWAR=0x04; // Alamat Master 0x02
TWCR=0x45;
TWSR=0x00;
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;
lcd_init(16);
#asm("sei")
while (1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-7
data_B=masukB-keluarB;
lcd_gotoxy(0,0);
sprintf(buff,"In =%2d",masukB);
lcd_puts(buff);
lcd_gotoxy(0,1);
sprintf(buff,"Out=%2d",keluarB);
lcd_puts(buff);
lcd_gotoxy(8,0);
sprintf(buff,"Data=%2d",data_B);
lcd_puts(buff);
lcd_gotoxy(8,1);
lcd_putsf("Slave-B");
lcd_puts(buff1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-8
Lampiran 3
Listing Program Slave C
/*****************************************************
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
int masukC,keluarC,data_C;
unsigned char buff[30],buff1[30];
interrupt [EXT_INT0] void ext_int0_isr(void)
masukC++;
interrupt [EXT_INT1] void ext_int1_isr(void)
keluarC++;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-9
interrupt [TWI] void twi_isr(void)
if ((TWSR&0xF8)==0xA8)
TWDR=data_C>>8;
if (TWSR==0xB8)
TWDR=data_C;
TWCR|=0x80;
void main(void)
TWBR=0x48;
TWAR=0x06; // Alamat Master 0x03
TWCR=0x45;
TWSR=0x00;
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;
lcd_init(16);
#asm("sei")
while (1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-10
data_C=masukC-keluarC;
lcd_gotoxy(0,0);
sprintf(buff,"In =%2d",masukC);
lcd_puts(buff);
lcd_gotoxy(0,1);
sprintf(buff,"Out=%2d",keluarC);
lcd_puts(buff);
lcd_gotoxy(8,0);
sprintf(buff,"Data=%2d",data_C);
lcd_puts(buff);
lcd_gotoxy(8,1);
lcd_putsf("Slave-C");
lcd_puts(buff1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-11
Lampiran 4
Listing Program Master
/*****************************************************
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <i2c.h>
#include <alcd.h>
#include <math.h>
#define write 0
#define read 1
#define mati 0
#define hidup 1
#define add_slaveA 0x01
#define add_slaveB 0x02
#define add_slaveC 0x03
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-12
#define lampuA_merah PORTA.0
#define lampuA_kuning PORTA.1
#define lampuA_hijau PORTA.2
#define lampuB_merah PORTB.0
#define lampuB_kuning PORTB.2
#define lampuB_hijau PORTB.3
#define lampuC_merah PORTC.0
#define lampuC_kuning PORTC.1
#define lampuC_hijau PORTC.2
//================================Penerima
Data================================\\
int a,b,c;
int data_A, data_B, data_C;
char buff[30], buff1[30], buff2[30], buff3[30];
void dataA (void)
i2c_start();
i2c_write((add_slaveA<<1)|read);
a= i2c_read(1)<<8;
a|= i2c_read(0);
i2c_stop();
void dataB (void)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-13
i2c_start();
i2c_write((add_slaveB<<1)|read);
b=i2c_read(1)<<8;
b|=i2c_read(0);
i2c_stop();
void dataC (void)
i2c_start();
i2c_write((add_slaveC<<1)|read);
c=i2c_read(1)<<8;
c|=i2c_read(0);
i2c_stop();
//================================Penampil Data
Slave================================\\
char sisA[30], sisB[30], sisC[30];
void tampil_data (void)
dataA();
lcd_gotoxy(0,0);
sprintf(sisA,"S_A=%2d ",a);
lcd_puts(sisA);
dataB();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-14
lcd_gotoxy(7,0);
sprintf(sisB,"S_B=%2d" ,b);
lcd_puts(sisB);
dataC();
lcd_gotoxy(14,0);
sprintf(sisC,"S_C=%2d" ,c);
lcd_puts(sisC);
//================================Nyala Lampu
Awal================================\\
void nyala_lampu_awal (void)
int delay_allred=3000, delay_hijau=3000, delay_kuning=3000;
lcd_gotoxy(0,1);
lcd_putsf("Kondisi= Nyala Awal");
lcd_puts(buff3);
//**LAMPU LALIN SISI A**\\
delay_ms(100);
lampuA_merah = hidup;
lampuB_merah = hidup;
lampuC_merah = hidup;
delay_ms(delay_allred); // ALL RED (detik 0-3)
lampuA_merah = mati;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-15
lampuA_hijau = hidup;
delay_ms(delay_hijau); // haruse detik (3-18) A-HIJAU
lampuA_hijau = mati;
lampuA_kuning = hidup;
delay_ms(delay_kuning); // haruse detik 18-21 A-KUNING
lampuA_kuning = mati;
lampuA_merah = hidup;
//**LAMPU LALIN SISI B**\\
delay_ms(delay_allred); // haruse detik 21-24 (ALL RED)
lampuB_merah = mati;
lampuB_hijau = hidup;
delay_ms(delay_hijau); // haruse detik 24-39 B-HIJAU
lampuB_hijau = mati;
lampuB_kuning = hidup;
delay_ms(delay_kuning); // haruse detik 39-42 B-KUNING
lampuB_kuning = mati;
lampuB_merah = hidup;
//**LAMPU LALIN SISI C**\\
delay_ms(delay_allred); // detik 42-45 (ALLRED)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-16
lampuC_merah = mati;
lampuC_hijau = hidup;
delay_ms(delay_hijau); // detik 45-60 C-HIJUAU
lampuC_hijau = mati;
lampuC_kuning = hidup;
delay_ms(delay_kuning); // detik 60-63 C-KUNIng
lampuC_kuning = mati;
lampuA_merah = hidup;
lampuB_merah = hidup;
lampuC_merah = hidup;
delay_ms(delay_allred); // detik 63-66 (ALL RED)
lcd_gotoxy(9,1);
lcd_putsf(" ");
lcd_puts(buff3);
//================================Algoritma
Fuzzy================================\\
int sedikit_a, sedang_a0,sedang_a1, banyak_a;
int sedikit_b, sedang_b0, sedang_b1, banyak_b;
int sedikit_c, sedang_c0,sedang_c1, banyak_c;
void fuzzifikasi()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-17
data_A=a;
data_B=b;
data_C=c;
sedikit_a=0;
if(data_A>=0 && data_A<5) sedikit_a=(int)((5-data_A)*20); //
(1)harusnya kan ((5-data_A)/5) tapi gak bisa, jadi disederhanakan menjadi (5-data_A)*0.2
sedang_a0=0;
sedang_a1=0;
if(data_A>=1 && data_A<5) sedang_a0=(int)((data_A-1)*(25)); //
(2)dikalikan 100 karena untuk fungsi min harus integer
if(data_A>=5 && data_A<=9) sedang_a1=(int)((9-data_A)*25);
banyak_a=0;
if(data_A>5 && data_A<=10) banyak_a=(int)((data_A-5)*20);
////////////************************************************////////////
sedikit_b=0;
if(data_B>=0 && data_B<5) sedikit_b=(int)((5-data_B)*20);
sedang_b0=0;
sedang_b1=0;
if(data_B>=1 && data_B<5) sedang_b0=(int)((data_B-1)*25);
if(data_B>=5 && data_B<=9) sedang_b1=(int)((9-data_B)*25);
banyak_b=0;
if(data_B>5 && data_B<=10) banyak_b=(int)((data_B-5)*20);;
////////////************************************************////////////
sedikit_c=0;
if(data_C>=0 && data_C<5) sedikit_c=(int)((5-data_C)*20);
sedang_c0=0;
sedang_c1=0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-18
if(data_C>=1 && data_C<5) sedang_c0=(int)((data_C-1)*25);
if(data_C>=5 && data_C<=9) sedang_c1=(int)((9-data_C)*25);
banyak_c=0;
if(data_C>5 && data_C<=10) banyak_c=(int)((data_C-5)*20);
int volume_A1a,volume_A1b,volume_A2a,volume_A2b;
int volume_B1a,volume_B1b,volume_B2a,volume_B2b;
int volume_C1a,volume_C1b,volume_C2a,volume_C2b;
int pilih_A,pilih_B,pilih_C,sisiA[30], sisiB[30], sisiC[30];
float waktuA, waktuB, waktuC, sA[30], sB[30], sC[30], r[30], rule[30];
char kondisi;
void pemilihan()
fuzzifikasi();
sisiA[0]=0, sisiA[1]=0, sisiA[2]=0;
sisiB[0]=0, sisiB[1]=0, sisiB[2]=0;
sisiC[0]=0, sisiC[1]=0, sisiC[2]=0;
volume_A1a=0,volume_A1b=0,volume_A2a=0,volume_A2b=0;
volume_B1a=0,volume_B1b=0,volume_B2a=0,volume_B2b=0;
volume_C1a=0,volume_C1b=0,volume_C2a=0,volume_C2b=0;
//------Pemilihan A------\\
if(data_A<0)
volume_A1a=(data_A<0); sisiA[0]=100;
if(data_A>=0&&data_A<5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-19
pilih_A=max(sedikit_a,sedang_a0); //pemilihan derajat keanggotaan yang paling
besar (MEAN OF MAX) dari input yang mengenai 2 keadaan
if(pilih_A==sedikit_a) volume_A1a=(data_A>=0&&data_A<5);
sisiA[0]=sedikit_a; //lcd_gotoxy(0,3); lcd_putsf("sd_a0"); lcd_puts(buff1);
else if(pilih_A==sedang_a0) volume_A1b=(data_A>=1&&data_A<5);
sisiA[1]=sedang_a0; //lcd_gotoxy(0,3); lcd_putsf("dg_a0"); lcd_puts(buff1);
if(data_A>=5&&data_A<=10)
pilih_A=max(sedang_a1,banyak_a);
if(pilih_A==sedang_a1) volume_A2a=(data_A>=5&&data_A<=9);
sisiA[1]=sedang_a1; //lcd_gotoxy(0,3); lcd_putsf("dg_a1"); lcd_puts(buff1);
else if(pilih_A==banyak_a) volume_A2b=(data_A>5&&data_A<=10);
sisiA[2]=banyak_a; //lcd_gotoxy(0,3); lcd_putsf("yk_a0"); lcd_puts(buff1);
if (data_A>10)
volume_A2b=(data_A>10); sisiA[2]=100;
//------Pemilihan B------\\
if(data_B<0)
volume_B1a=(data_B<0); sisiB[0]=100;
if(data_B>=0&&data_B<5)
pilih_B=max(sedikit_b,sedang_b0);
if(pilih_B==sedikit_b) volume_B1a=(data_B>=0&&data_B<5);
sisiB[0]=sedikit_b; //lcd_gotoxy(7,3); lcd_putsf("sd_b0"); lcd_puts(buff1);
else if(pilih_B==sedang_b0) volume_B1b=(data_B>=1&&data_B<5);
sisiB[1]=sedang_b0; //lcd_gotoxy(7,3); lcd_putsf("dg_b0"); lcd_puts(buff1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-20
if(data_B>=5&&data_B<=10)
pilih_B=max(sedang_b1,banyak_b);
if(pilih_B==sedang_b1) volume_B2a=(data_B>=5&&data_B<=9);
sisiB[1]=sedang_b1; //lcd_gotoxy(7,3); lcd_putsf("dg_b1"); lcd_puts(buff1);
else if(pilih_B==banyak_b) volume_B2b=(data_B>5&&data_B<=10);
sisiB[2]=banyak_b; //lcd_gotoxy(7,3); lcd_putsf("yk_b0"); lcd_puts(buff1);
if (data_B>10)
volume_B2b=(data_B>10); sisiB[2]=100;
//------Pemilihan C------\\
if(data_C<0)
volume_C1a=(data_C<0); sisiC[0]=100;
if(data_C>=0&&data_C<5)
pilih_C=max(sedikit_c,sedang_c0);
if(pilih_C==sedikit_c) volume_C1a=(data_C>=0&&data_C<5);
sisiC[0]=sedikit_c; //lcd_gotoxy(14,3); lcd_putsf("sd_c0"); lcd_puts(buff1);
else if(pilih_C==sedang_c0) volume_C1b=(data_C>=1&&data_C<5);
sisiC[1]=sedang_c0; //lcd_gotoxy(14,3); lcd_putsf("dg_c0"); lcd_puts(buff1);
if(data_C>=5&&data_C<=10)
pilih_C=max(sedang_c1,banyak_c);
if(pilih_C==sedang_c1) volume_C2a=(data_C>=5&&data_C<=9);
sisiC[1]=sedang_c1; //lcd_gotoxy(14,3); lcd_putsf("dk_c1"); lcd_puts(buff1);
else if(pilih_C==banyak_c) volume_C2b=(data_C>5&&data_C<=10);
sisiC[2]=banyak_c; //lcd_gotoxy(14,3); lcd_putsf("yk_c0"); lcd_puts(buff1);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-21
if (data_C>10)
volume_C2b=(data_C>10); sisiC[2]=100;
void basis_aturan()
pemilihan();
rule[1]=min(sisiA[0],sisiB[0]); r[1]=min(rule[1],sisiC[0]); //
karena min hanya bisanya integer maka data dari fuzzifikasi di kalikan 100, dan
defuzzisikasi di bagi 100 pada pengali derajat keanggotaan
sA[1]=sB[1]=sC[1]=(14-(0.1*r[1]))+4; //sedikit,
sedikit, sedikit
rule[2]=min(sisiA[0],sisiB[0]); r[2]=min(rule[2],sisiC[1]);
//sedikit, sedikit, sedang
sA[2]=sB[2]=(14-(0.1*r[2]))+4; sC[2]=((22-(0.08*r[2]))+((0.08*r[2])+6));
rule[3]=min(sisiA[0],sisiB[0]); r[3]=min(rule[3],sisiC[2]);
//sedikit, sedikit, banyak
sA[3]=sB[3]=(14-(0.1*r[3]))+4; sC[3]=((0.1*r[3])+14)+24;
rule[4]=min(sisiA[0],sisiB[1]); r[4]=min(rule[4],sisiC[0]);
//sedikit, sedang, sedikit
sA[4]=sC[4]=(14-(0.1*r[4]))+4; sB[4]=((22-(0.08*r[4]))+((0.08*r[4])+6));
rule[5]=min(sisiA[0],sisiB[1]); r[5]=min(rule[5],sisiC[1]);
//sedikit, sedang, sedang
sA[5]=(14-(0.1*r[5]))+4; sB[5]=sC[5]=((22-(0.08*r[5]))+((0.08*r[5])+6));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-22
rule[6]=min(sisiA[0],sisiB[1]); r[6]=min(rule[6],sisiC[2]);
//sedikit, sedang, banyak
sA[6]=(14-(0.1*r[6]))+4; sB[6]=((22-(0.08*r[6]))+((0.08*r[6])+6));
sC[6]=((0.1*r[6])+14)+24;
rule[7]=min(sisiA[0],sisiB[2]); r[7]=min(rule[7],sisiC[0]);
//sedikit, banyak, sedikit
sA[7]=sC[7]=(14-(0.1*r[7]))+4; sB[7]=((0.1*r[7])+14)+24;
rule[8]=min(sisiA[0],sisiB[2]); r[8]=min(rule[8],sisiC[1]);
//sedikit, banyak, sedang
sA[8]=(14-(0.1*r[8]))+4; sB[8]=((0.1*r[8])+14)+24; sC[8]=((22-
(0.08*r[8]))+((0.08*r[8])+6));
rule[9]=min(sisiA[0],sisiB[2]); r[9]=min(rule[9],sisiC[2]);
//sedikit, banyak, banyak
sA[9]=(14-(0.1*r[9]))+4; sB[9]=sC[9]=((0.1*r[9])+14)+24;
rule[10]=min(sisiA[1],sisiB[0]); r[10]=min(rule[10],sisiC[0]);
//sedang, sedikit, sedikit
sA[10]=((22-(0.08*r[10]))+((0.08*r[10])+6)); sB[10]=sC[10]=(14-(0.1*r[10]))+4;
rule[11]=min(sisiA[1],sisiB[0]); r[11]=min(rule[11],sisiC[1]);
//sedang, sedikit, sedang
sA[11]=sC[11]=((22-(0.08*r[11]))+((0.08*r[11])+6)); sB[11]=(14-(0.1*r[11]))+4;
rule[12]=min(sisiA[1],sisiB[0]); r[12]=min(rule[12],sisiC[2]);
//sedang, sedikit, banyak
sA[12]=((22-(0.08*r[12]))+((0.08*r[12])+6)); sB[12]=(14-(0.1*r[12]))+4;
sC[12]=((0.1*r[12])+14)+24;
rule[13]=min(sisiA[1],sisiB[1]); r[13]=min(rule[13],sisiC[0]);
//sedang, sedang, sedikit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-23
sA[13]=sB[13]=((22-(0.08*r[13]))+((0.08*r[13])+6)); sC[13]=(14-(0.1*r[13]))+4;
rule[14]=min(sisiA[1],sisiB[1]); r[14]=min(rule[14],sisiC[1]);
//sedang, sedang, sedang
sA[14]=sB[14]=sC[14]=((22-(0.08*r[14]))+((0.08*r[14])+6));
rule[15]=min(sisiA[1],sisiB[1]); r[15]=min(rule[15],sisiC[2]);
//sedang, sedang, banyak
sA[15]=sB[15]=((22-(0.08*r[15]))+((0.08*r[15])+6)); sC[15]=((0.1*r[15])+14)+24;
rule[16]=min(sisiA[1],sisiB[2]); r[16]=min(rule[16],sisiC[0]);
//sedang, banyak, sedikit
sA[16]=((22-(0.08*r[16]))+((0.08*r[16])+6)); sB[16]=((0.1*r[16])+14)+24;
sC[16]=(14-(0.1*r[16]))+4;
rule[17]=min(sisiA[1],sisiB[2]); r[17]=min(rule[17],sisiC[1]);
//sedang, banyak, sedang
sA[17]=sC[17]=((22-(0.08*r[17]))+((0.08*r[17])+6)); sB[17]=((0.1*r[17])+14)+24;
rule[18]=min(sisiA[1],sisiB[2]); r[18]=min(rule[18],sisiC[2]);
//sedang, banyak, banyak
sA[18]=((22-(0.08*r[18]))+((0.08*r[18])+6)); sB[18]=sC[18]=((0.1*r[18])+14)+24;
rule[19]=min(sisiA[2],sisiB[0]); r[19]=min(rule[19],sisiC[0]);
//banyak, sedikit, sedikit
sA[19]=((0.1*r[19])+14)+24; sB[19]=sC[19]=(14-(0.1*r[19]))+4;
rule[20]=min(sisiA[2],sisiB[0]); r[20]=min(rule[20],sisiC[1]);
//banyak, sedikit, sedang
sA[20]=((0.1*r[20])+14)+24; sB[20]=(14-(0.1*r[20]))+4; sC[20]=((22-
(0.08*r[20]))+((0.08*r[20])+6));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-24
rule[21]=min(sisiA[2],sisiB[0]); r[21]=min(rule[21],sisiC[2]);
//banyak, sedikit, banyak
sA[21]=sC[21]=((0.1*r[21])+14)+24; sB[21]=(14-(0.1*r[21]))+4;
rule[22]=min(sisiA[2],sisiB[1]); r[22]=min(rule[22],sisiC[0]);
//banyak, sedang, sedikit
sA[22]=((0.1*r[22])+14)+24; sB[22]=((22-(0.08*r[22]))+((0.08*r[22])+6));
sC[22]=(14-(0.1*r[22]))+4;
rule[23]=min(sisiA[2],sisiB[1]); r[23]=min(rule[23],sisiC[1]);
//banyak, sedang, sedang
sA[23]=((0.1*r[23])+14)+24; sB[23]=sC[23]=((22-(0.08*r[23]))+((0.08*r[23])+6));
rule[24]=min(sisiA[2],sisiB[1]); r[24]=min(rule[24],sisiC[2]);
//banyak, sedang, banyak
sA[24]=sC[24]=((0.1*r[24])+14)+24; sB[24]=((22-(0.08*r[24]))+((0.08*r[24])+6));
rule[25]=min(sisiA[2],sisiB[2]); r[25]=min(rule[25],sisiC[0]);
//banyak, banyak, sedikit
sA[25]=sB[25]=((0.1*r[25])+14)+24; sC[25]=(14-(0.1*r[25]))+4;
rule[26]=min(sisiA[2],sisiB[2]); r[26]=min(rule[26],sisiC[1]);
//banyak, banyak, sedang
sA[26]=sB[26]=((0.1*r[26])+14)+24; sC[26]=((22-(0.08*r[26]))+((0.08*r[26])+6));
rule[27]=min(sisiA[2],sisiB[2]); r[27]=min(rule[27],sisiC[2]);
//banyak, banyak banyak
sA[27]=sB[27]=sC[27]=((0.1*r[27])+14)+24;
void defuzzifikasi()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-25
basis_aturan();
if((volume_A1a) &&(volume_B1a) &&(volume_C1a)) kondisi=1;
//sedikit, sedikit, sedikit
else if((volume_A1a) &&(volume_B1a) &&(volume_C1b)) kondisi=2;
//sedikit, sedikit, sedang1
else if((volume_A1a) &&(volume_B1a) &&(volume_C2a)) kondisi=3;
//sedikit, sedikit, sedang2
else if((volume_A1a) &&(volume_B1a) &&(volume_C2b)) kondisi=4;
//sedikit, sedikit, banyak
else if((volume_A1a) &&(volume_B1b) &&(volume_C1a)) kondisi=5;
//sedikit, sedang1, sedikit
else if((volume_A1a) &&(volume_B2a) &&(volume_C1a)) kondisi=6;
//sedikit, sedang2, sedikit
else if((volume_A1a) &&(volume_B1b) &&(volume_C1b)) kondisi=7;
//sedikit, sedang1, sedang1
else if((volume_A1a) &&(volume_B1b) &&(volume_C2a)) kondisi=8;
//sedikit, sedang1, sedang2
else if((volume_A1a) &&(volume_B2a) &&(volume_C1b)) kondisi=9;
//sedikit, sedang2, sedang1
else if((volume_A1a) &&(volume_B2a) &&(volume_C2a)) kondisi=10;
//sedikit, sedang2, sedang2
else if((volume_A1a) &&(volume_B1b) &&(volume_C2b)) kondisi=11;
//sedikit, sedang1, banyak
else if((volume_A1a) &&(volume_B2a) &&(volume_C2b)) kondisi=12;
//sedikit, sedang2, banyak
else if((volume_A1a) &&(volume_B2b) &&(volume_C1a)) kondisi=13;
//sedikit, banyak, sedikit
else if((volume_A1a) &&(volume_B2b) &&(volume_C1b)) kondisi=14;
//sedikit, banyak, sedang1
else if((volume_A1a) &&(volume_B2b) &&(volume_C2a)) kondisi=15;
//sedikit, banyak, sedang2
else if((volume_A1a) &&(volume_B2b) &&(volume_C2b)) kondisi=16;
//sedikit, banyak, banyak
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-26
else if((volume_A1b) &&(volume_B1a) &&(volume_C1a)) kondisi=17;
//sedang1, sedikit, sedikit
else if((volume_A2a) &&(volume_B1a) &&(volume_C1a)) kondisi=18;
//sedang2, sedikit, sedikit
else if((volume_A1b) &&(volume_B1a) &&(volume_C1b)) kondisi=19;
//sedang1, sedikit, sedang1
else if((volume_A1b) &&(volume_B1a) &&(volume_C2a)) kondisi=20;
//sedang1, sedikit, sedang2
else if((volume_A2a) &&(volume_B1a) &&(volume_C1b)) kondisi=21;
//sedang2, sedikit, sedang1
else if((volume_A2a) &&(volume_B1a) &&(volume_C2a)) kondisi=22;
//sedang2, sedikit, sedang2
else if((volume_A1b) &&(volume_B1a) &&(volume_C2b)) kondisi=23;
//sedang1, sedikit, banyak
else if((volume_A2a) &&(volume_B1a) &&(volume_C2b)) kondisi=24;
//sedang2, sedikit, banyak
else if((volume_A1b) &&(volume_B1b) &&(volume_C1a)) kondisi=25;
//sedang1, sedang1, sedikit
else if((volume_A1b) &&(volume_B2a) &&(volume_C1a)) kondisi=26;
//sedang1, sedang2, sedikit
else if((volume_A2a) &&(volume_B1b) &&(volume_C1a)) kondisi=27;
//sedang2, sedang1, sedikit
else if((volume_A2a) &&(volume_B2a) &&(volume_C1a)) kondisi=28;
//sedang2, sedang2, sedikit
else if((volume_A1b) &&(volume_B1b) &&(volume_C1b)) kondisi=29;
//sedang1, sedang1, sedang1
else if((volume_A1b) &&(volume_B1b) &&(volume_C2a)) kondisi=30;
//sedang1, sedang1, sedang2
else if((volume_A1b) &&(volume_B2a) &&(volume_C1b)) kondisi=31;
//sedang1, sedang2, sedang1
else if((volume_A1b) &&(volume_B2a) &&(volume_C2a)) kondisi=32;
//sedang1, sedang2, sedang2
else if((volume_A2a) &&(volume_B1b) &&(volume_C1b)) kondisi=33;
//sedang2, sedang1, sedang1
else if((volume_A2a) &&(volume_B1b) &&(volume_C2a)) kondisi=34;
//sedang2, sedang1, sedang2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-27
else if((volume_A2a) &&(volume_B2a) &&(volume_C1b)) kondisi=35;
//sedang2, sedang2, sedang1
else if((volume_A2a) &&(volume_B2a) &&(volume_C2a)) kondisi=36;
//sedang2, sedang2, sedang2
else if((volume_A1b) &&(volume_B1b) &&(volume_C2b)) kondisi=37;
//sedang1, sedang1, banyak
else if((volume_A1b) &&(volume_B2a) &&(volume_C2b)) kondisi=38;
//sedang1, sedang2, banyak
else if((volume_A2a) &&(volume_B1b) &&(volume_C2b)) kondisi=39;
//sedang2, sedang1, banyak
else if((volume_A2a) &&(volume_B2a) &&(volume_C2b)) kondisi=40;
//sedang2, sedang2, banyak
else if((volume_A1b) &&(volume_B2b) &&(volume_C1a)) kondisi=41;
//sedang1, banyak, sedikit
else if((volume_A2a) &&(volume_B2b) &&(volume_C1a)) kondisi=42;
//sedang2, banyak, sedikit
else if((volume_A1b) &&(volume_B2b) &&(volume_C1b)) kondisi=43;
//sedang1, banyak, sedang1
else if((volume_A1b) &&(volume_B2b) &&(volume_C2a)) kondisi=44;
//sedang1, banyak, sedang2
else if((volume_A2a) &&(volume_B2b) &&(volume_C1b)) kondisi=45;
//sedang2, banyak, sedang1
else if((volume_A2a) &&(volume_B2b) &&(volume_C2a)) kondisi=46;
//sedang2, banyak, sedang2
else if((volume_A1b) &&(volume_B2b) &&(volume_C2b)) kondisi=47;
//sedang1, banyak, banyak
else if((volume_A2a) &&(volume_B2b) &&(volume_C2b)) kondisi=48;
//sedang2, banyak, banyak
else if((volume_A2b) &&(volume_B1a) &&(volume_C1a)) kondisi=49;
//banyak, sedikit sedikit
else if((volume_A2b) &&(volume_B1a) &&(volume_C1b)) kondisi=50;
//banyak, sedikit, sedang1
else if((volume_A2b) &&(volume_B1a) &&(volume_C2a)) kondisi=51;
//banyak, sedikit, sedang2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-28
else if((volume_A2b) &&(volume_B1a) &&(volume_C2b)) kondisi=52;
//banyak, sedikit, banyak
else if((volume_A2b) &&(volume_B1b) &&(volume_C1a)) kondisi=53;
//banyak, sedang1, sedikit
else if((volume_A2b) &&(volume_B2a) &&(volume_C1a)) kondisi=54;
//banyak, sedang2, sedikit
else if((volume_A2b) &&(volume_B1b) &&(volume_C1b)) kondisi=55;
//banyak, sedang1, sedang1
else if((volume_A2b) &&(volume_B1b) &&(volume_C2a)) kondisi=56;
//banyak, sedang1, sedang2
else if((volume_A2b) &&(volume_B2a) &&(volume_C1b)) kondisi=57;
//banyak, sedang2, sedang1
else if((volume_A2b) &&(volume_B2a) &&(volume_C2a)) kondisi=58;
//banyak, sedang2, sedang2
else if((volume_A2b) &&(volume_B1b) &&(volume_C2b)) kondisi=59;
//banyak, sedang1, banyak
else if((volume_A2b) &&(volume_B2a) &&(volume_C2b)) kondisi=60;
//banyak, sedang2, banyak
else if((volume_A2b) &&(volume_B2b) &&(volume_C1a)) kondisi=61;
//banyak, banyak, sedikit
else if((volume_A2b) &&(volume_B2b) &&(volume_C1b)) kondisi=62;
//banyak, banyak, sedang1
else if((volume_A2b) &&(volume_B2b) &&(volume_C2a)) kondisi=63;
//banyak, banyak, sedang2
else if((volume_A2b) &&(volume_B2b) &&(volume_C2b)) kondisi=64;
//banyak, banyak banyak
void fuzzy(void)
defuzzifikasi();
switch (kondisi)
case 1: waktuA=sA[1]/2; waktuB=sB[1]/2; waktuC=sC[1]/2; lcd_gotoxy(9,1);
lcd_putsf("C1 "); lcd_puts(buff); break;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-29
case 2: waktuA=sA[2]/2; waktuB=sB[2]/2; waktuC=sC[2]/2; lcd_gotoxy(9,1);
lcd_putsf("C2 "); lcd_puts(buff); break;
case 3: waktuA=sA[2]/2; waktuB=sB[2]/2; waktuC=sC[2]/2; lcd_gotoxy(9,1);
lcd_putsf("C3 "); lcd_puts(buff); break;
case 4: waktuA=sA[3]/2; waktuB=sB[3]/2; waktuC=sC[3]/2; lcd_gotoxy(9,1);
lcd_putsf("C4 "); lcd_puts(buff); break;
case 5: waktuA=sA[4]/2; waktuB=sB[4]/2; waktuC=sC[4]/2; lcd_gotoxy(9,1);
lcd_putsf("C5 "); lcd_puts(buff); break;
case 6: waktuA=sA[4]/2; waktuB=sB[4]/2; waktuC=sC[4]/2; lcd_gotoxy(9,1);
lcd_putsf("C6 "); lcd_puts(buff); break;
case 7: waktuA=sA[5]/2; waktuB=sB[5]/2; waktuC=sC[5]/2; lcd_gotoxy(9,1);
lcd_putsf("C7 "); lcd_puts(buff); break;
case 8: waktuA=sA[5]/2; waktuB=sB[5]/2; waktuC=sC[5]/2; lcd_gotoxy(9,1);
lcd_putsf("C8C"); lcd_puts(buff); break;
case 9: waktuA=sA[5]/2; waktuB=sB[5]/2; waktuC=sC[5]/2; lcd_gotoxy(9,1);
lcd_putsf("C9B"); lcd_puts(buff); break;
case 10: waktuA=sA[5]/2; waktuB=sB[5]/2; waktuC=sC[5]/2; lcd_gotoxy(9,1);
lcd_putsf("C10"); lcd_puts(buff); break;
case 11: waktuA=sA[6]/2; waktuB=sB[6]/2; waktuC=sC[6]/2; lcd_gotoxy(9,1);
lcd_putsf("C11"); lcd_puts(buff); break;
case 12: waktuA=sA[6]/2; waktuB=sB[6]/2; waktuC=sC[6]/2; lcd_gotoxy(9,1);
lcd_putsf("C12"); lcd_puts(buff); break;
case 13: waktuA=sA[7]/2; waktuB=sB[7]/2; waktuC=sC[7]/2; lcd_gotoxy(9,1);
lcd_putsf("C13"); lcd_puts(buff); break;
case 14: waktuA=sA[8]/2; waktuB=sB[8]/2; waktuC=sC[8]/2; lcd_gotoxy(9,1);
lcd_putsf("C14"); lcd_puts(buff); break;
case 15: waktuA=sA[8]/2; waktuB=sB[8]/2; waktuC=sC[8]/2; lcd_gotoxy(9,1);
lcd_putsf("C15"); lcd_puts(buff); break;
case 16: waktuA=sA[9]/2; waktuB=sB[9]/2; waktuC=sC[9]/2; lcd_gotoxy(9,1);
lcd_putsf("C16"); lcd_puts(buff); break;
case 17: waktuA=sA[10]/2; waktuB=sB[10]/2; waktuC=sC[10]/2;
lcd_gotoxy(9,1); lcd_putsf("C17"); lcd_puts(buff); break;
case 18: waktuA=sA[10]/2; waktuB=sB[10]/2; waktuC=sC[10]/2;
lcd_gotoxy(9,1); lcd_putsf("C18"); lcd_puts(buff); break;
case 19: waktuA=sA[11]/2; waktuB=sB[11]/2; waktuC=sC[11]/2;
lcd_gotoxy(9,1); lcd_putsf("C19"); lcd_puts(buff); break;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-30
case 20: waktuA=sA[11]/2; waktuB=sB[11]/2; waktuC=sC[11]/2;
lcd_gotoxy(9,1); lcd_putsf("C20"); lcd_puts(buff); break;
case 21: waktuA=sA[11]/2; waktuB=sB[11]/2; waktuC=sC[11]/2;
lcd_gotoxy(9,1); lcd_putsf("C21"); lcd_puts(buff); break;
case 22: waktuA=sA[11]/2; waktuB=sB[11]/2; waktuC=sC[11]/2;
lcd_gotoxy(9,1); lcd_putsf("C22"); lcd_puts(buff); break;
case 23: waktuA=sA[12]/2; waktuB=sB[12]/2; waktuC=sC[12]/2;
lcd_gotoxy(9,1); lcd_putsf("C23"); lcd_puts(buff); break;
case 24: waktuA=sA[12]/2; waktuB=sB[12]/2; waktuC=sC[12]/2;
lcd_gotoxy(9,1); lcd_putsf("C24"); lcd_puts(buff); break;
case 25: waktuA=sA[13]/2; waktuB=sB[13]/2; waktuC=sC[13]/2;
lcd_gotoxy(9,1); lcd_putsf("C25"); lcd_puts(buff); break;
case 26: waktuA=sA[13]/2; waktuB=sB[13]/2; waktuC=sC[13]/2;
lcd_gotoxy(9,1); lcd_putsf("C26"); lcd_puts(buff); break;
case 27: waktuA=sA[13]/2; waktuB=sB[13]/2; waktuC=sC[13]/2;
lcd_gotoxy(9,1); lcd_putsf("C27"); lcd_puts(buff); break;
case 28: waktuA=sA[13]/2; waktuB=sB[13]/2; waktuC=sC[13]/2;
lcd_gotoxy(9,1); lcd_putsf("C28"); lcd_puts(buff); break;
case 29: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C29"); lcd_puts(buff); break;
case 30: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C30"); lcd_puts(buff); break;
case 31: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C31"); lcd_puts(buff); break;
case 32: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C32"); lcd_puts(buff); break;
case 33: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C33"); lcd_puts(buff); break;
case 34: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C34"); lcd_puts(buff); break;
case 35: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C35"); lcd_puts(buff); break;
case 36: waktuA=sA[14]/2; waktuB=sB[14]/2; waktuC=sC[14]/2;
lcd_gotoxy(9,1); lcd_putsf("C36"); lcd_puts(buff); break;
case 37: waktuA=sA[15]/2; waktuB=sB[15]/2; waktuC=sC[15]/2;
lcd_gotoxy(9,1); lcd_putsf("C37"); lcd_puts(buff); break;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-31
case 38: waktuA=sA[15]/2; waktuB=sB[15]/2; waktuC=sC[15]/2;
lcd_gotoxy(9,1); lcd_putsf("C38"); lcd_puts(buff); break;
case 39: waktuA=sA[15]/2; waktuB=sB[15]/2; waktuC=sC[15]/2;
lcd_gotoxy(9,1); lcd_putsf("C39"); lcd_puts(buff); break;
case 40: waktuA=sA[15]/2; waktuB=sB[15]/2; waktuC=sC[15]/2;
lcd_gotoxy(9,1); lcd_putsf("C40"); lcd_puts(buff); break;
case 41: waktuA=sA[16]/2; waktuB=sB[16]/2; waktuC=sC[16]/2;
lcd_gotoxy(9,1); lcd_putsf("C41"); lcd_puts(buff); break;
case 42: waktuA=sA[16]/2; waktuB=sB[16]/2; waktuC=sC[16]/2;
lcd_gotoxy(9,1); lcd_putsf("C42"); lcd_puts(buff); break;
case 43: waktuA=sA[17]/2; waktuB=sB[17]/2; waktuC=sC[17]/2;
lcd_gotoxy(9,1); lcd_putsf("C43"); lcd_puts(buff); break;
case 44: waktuA=sA[17]/2; waktuB=sB[17]/2; waktuC=sC[17]/2;
lcd_gotoxy(9,1); lcd_putsf("C44"); lcd_puts(buff); break;
case 45: waktuA=sA[17]/2; waktuB=sB[17]/2; waktuC=sC[17]/2;
lcd_gotoxy(9,1); lcd_putsf("C45"); lcd_puts(buff); break;
case 46: waktuA=sA[17]/2; waktuB=sB[17]/2; waktuC=sC[17]/2;
lcd_gotoxy(9,1); lcd_putsf("C46"); lcd_puts(buff); break;
case 47: waktuA=sA[18]/2; waktuB=sB[18]/2; waktuC=sC[18]/2;
lcd_gotoxy(9,1); lcd_putsf("C47"); lcd_puts(buff); break;
case 48: waktuA=sA[18]/2; waktuB=sB[18]/2; waktuC=sC[18]/2;
lcd_gotoxy(9,1); lcd_putsf("C48"); lcd_puts(buff); break;
case 49: waktuA=sA[19]/2; waktuB=sB[19]/2; waktuC=sC[19]/2;
lcd_gotoxy(9,1); lcd_putsf("C49"); lcd_puts(buff); break;
case 50: waktuA=sA[20]/2; waktuB=sB[20]/2; waktuC=sC[20]/2;
lcd_gotoxy(9,1); lcd_putsf("C50"); lcd_puts(buff); break;
case 51: waktuA=sA[20]/2; waktuB=sB[20]/2; waktuC=sC[20]/2;
lcd_gotoxy(9,1); lcd_putsf("C51"); lcd_puts(buff); break;
case 52: waktuA=sA[21]/2; waktuB=sB[21]/2; waktuC=sC[21]/2;
lcd_gotoxy(9,1); lcd_putsf("C52"); lcd_puts(buff); break;
case 53: waktuA=sA[22]/2; waktuB=sB[22]/2; waktuC=sC[22]/2;
lcd_gotoxy(9,1); lcd_putsf("C53"); lcd_puts(buff); break;
case 54: waktuA=sA[22]/2; waktuB=sB[22]/2; waktuC=sC[22]/2;
lcd_gotoxy(9,1); lcd_putsf("C54"); lcd_puts(buff); break;
case 55: waktuA=sA[23]/2; waktuB=sB[23]/2; waktuC=sC[23]/2;
lcd_gotoxy(9,1); lcd_putsf("C55"); lcd_puts(buff); break;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-32
case 56: waktuA=sA[23]/2; waktuB=sB[23]/2; waktuC=sC[23]/2;
lcd_gotoxy(9,1); lcd_putsf("C56"); lcd_puts(buff); break;
case 57: waktuA=sA[23]/2; waktuB=sB[23]/2; waktuC=sC[23]/2;
lcd_gotoxy(9,1); lcd_putsf("C57"); lcd_puts(buff); break;
case 58: waktuA=sA[23]/2; waktuB=sB[23]/2; waktuC=sC[23]/2;
lcd_gotoxy(9,1); lcd_putsf("C58"); lcd_puts(buff); break;
case 59: waktuA=sA[24]/2; waktuB=sB[24]/2; waktuC=sC[24]/2;
lcd_gotoxy(9,1); lcd_putsf("C59"); lcd_puts(buff); break;
case 60: waktuA=sA[24]/2; waktuB=sB[24]/2; waktuC=sC[24]/2;
lcd_gotoxy(9,1); lcd_putsf("C60"); lcd_puts(buff); break;
case 61: waktuA=sA[25]/2; waktuB=sB[25]/2; waktuC=sC[25]/2;
lcd_gotoxy(9,1); lcd_putsf("C61"); lcd_puts(buff); break;
case 62: waktuA=sA[26]/2; waktuB=sB[26]/2; waktuC=sC[26]/2;
lcd_gotoxy(9,1); lcd_putsf("C62"); lcd_puts(buff); break;
case 63: waktuA=sA[26]/2; waktuB=sB[26]/2; waktuC=sC[26]/2;
lcd_gotoxy(9,1); lcd_putsf("C63"); lcd_puts(buff); break;
case 64: waktuA=sA[27]/2; waktuB=sB[27]/2; waktuC=sC[27]/2;
lcd_gotoxy(9,1); lcd_putsf("C64"); lcd_puts(buff); break;
//================================Hitung
Mundur================================\\
int kali=1000;
int hit_mun_A,hit_mun_B,hit_mun_C;
void hitung_mundur_A()
for(hit_mun_A=waktuA; hit_mun_A<=waktuA;hit_mun_A--)
delay_ms(kali);
lcd_gotoxy(0,3);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-33
sprintf(buff1,"H=%2d",hit_mun_A);
lcd_puts(buff1);
if(hit_mun_A==0)
break;
void hitung_mundur_B()
for(hit_mun_B=waktuB; hit_mun_B<=waktuB;hit_mun_B--)
delay_ms(kali);
lcd_gotoxy(7,3);
sprintf(buff1,"H=%2d",hit_mun_B);
lcd_puts(buff1);
if(hit_mun_B==0)
break;
void hitung_mundur_C()
for(hit_mun_C=waktuC; hit_mun_C<=waktuC;hit_mun_C--)
delay_ms(kali);
lcd_gotoxy(14,3);
sprintf(buff1,"H=%2d",hit_mun_C);
lcd_puts(buff1);
if(hit_mun_C==0)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-34
break;
//================================Penampil=========================
=======\\
void penampil_waktu()
lcd_gotoxy(0,2);
sprintf(buff2,"H=%0.1f ",waktuA);
lcd_puts(buff2);
lcd_gotoxy(7,2);
sprintf(buff2,"H=%0.1f ",waktuB);
lcd_puts(buff2);
lcd_gotoxy(14,2);
sprintf(buff2,"H=%0.1f ",waktuC);
lcd_puts(buff2);
//================================Nyala
Adaptif================================\\
int kuning=3000,allred=3000;
void semua_merah()
lampuA_merah=hidup;
lampuC_merah=hidup;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-35
lampuB_merah=hidup;
delay_ms(allred);
void nyala_adaptif_a()
lampuA_merah=mati;
lampuC_merah=hidup;
lampuB_merah=hidup;
lampuA_hijau=hidup;
hitung_mundur_A();
lampuA_hijau=mati;
lampuA_kuning=hidup;
delay_ms(kuning);
lampuA_kuning=mati;
semua_merah();
void nyala_adaptif_b()
lampuB_merah=mati;
lampuC_merah=hidup;
lampuA_merah=hidup;
lampuB_hijau=hidup;
hitung_mundur_B();
lampuB_hijau=mati;
lampuB_kuning=hidup;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-36
delay_ms(kuning);
lampuB_kuning=mati;
semua_merah();
void nyala_adaptif_c()
lampuC_merah=mati;
lampuA_merah=hidup;
lampuB_merah=hidup;
lampuC_hijau=hidup;
hitung_mundur_C();
lampuC_hijau=mati;
lampuC_kuning=hidup;
delay_ms(kuning);
delay_ms(allred);
lampuC_kuning=mati;
semua_merah();
void cabang_a()
tampil_data();
fuzzy();
penampil_waktu();
nyala_adaptif_a();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-37
void cabang_b()
tampil_data();
fuzzy();
penampil_waktu();
nyala_adaptif_b();
void cabang_c()
tampil_data();
fuzzy();
penampil_waktu();
nyala_adaptif_c();
//================================Void
Main================================\\
void main(void)
PORTA=0x00;
DDRA=0b00000111;
PORTB=0x00;
DDRB=0b00001101;
PORTC=0x00;
DDRC=0b00000111;
PORTD=0x00;
DDRD=0x00;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-38
TCCR0=0x00;
TCNT0=0x8A;
OCR0=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x01;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
// I2C Bus initialization
// I2C Port: PORTC
// I2C SDA bit: 7
// I2C SCL bit: 6
// Bit Rate: 100 kHz
// Note: I2C settings are specified in the
// Project|Configure|C Compiler|Libraries|I2C menu.
i2c_init();
lcd_init(20);
#asm("sei")
nyala_lampu_awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-39
tampil_data();
while (1)
cabang_a();
cabang_b();
cabang_c();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
0
Lam
pir
an
5 P
erh
itu
ngan
Teo
riti
s A
lgori
tma F
uzz
y L
ogic
Per
cobaa
n
Fuzz
ifik
asi
µ
min
D
efuzz
ifik
asi
Jum
. K
at.
µA
Ju
m.
Kat
. µ
B
Jum
. K
at.
µC
C
ab A
K
at.
Cab
B
Kat
. C
ab C
K
at.
1
0
SK
1
0
SK
1
0
SK
1
1
4.0
C
P
4.0
C
P
4.0
C
P
2
2
SK
0.6
0
0
SK
1
3
SD
1
0.5
0
0.5
0
6.5
0
CP
6.5
0
CP
14.0
A
GL
3
1
SK
0.8
0
2
SK
0.6
0
6
SD
2
0.7
5
0.6
0
6.0
C
P
6.0
C
P
14.0
A
GL
4
1
SK
0.8
0
0
SK
1
8
BY
0.6
0
0.6
0
6.0
C
P
6.0
C
P
22.0
L
M
5
2
SK
0.6
0
4
SK
0.7
5
0
SK
1.0
0
0.6
0
6.0
C
P
14.0
A
GL
6.0
C
P
6
2
SK
0.6
0
5
SK
1
1
SK
0.8
0
0.6
0
6.0
C
P
14.0
A
GL
6.0
C
P
7
2
SK
0.6
0
4
SK
0.7
5
4
SD
1
0.7
5
0.6
0
6.0
C
P
14.0
A
GL
14.0
A
GL
8
0
SK
1
3
SK
0.5
0
7
SD
2
0.5
0
0.5
0
6.5
0
CP
14.0
A
GL
14.0
A
GL
9
0
SK
1
6
SK
0.7
5
3
SD
1
0.5
0
0.5
0
6.5
0
CP
14.0
A
GL
14.0
A
GL
10
1
SK
0.8
0
5
SK
1
7
SD
2
0.5
0
0.5
0
6.5
0
CP
14.0
A
GL
14.0
A
GL
11
1
SK
0.8
0
4
SK
0.7
5
9
BY
0.8
0
0.7
5
5.2
5
CP
14.0
A
GL
22.7
5
LM
12
2
SK
0.6
0
6
SK
0.7
5
10
BY
1
0.6
0
6.0
C
P
14.0
A
GL
22.0
L
M
13
0
SK
1
8
SK
0.6
0
1
SK
0.8
0
0.6
0
6.0
C
P
22.0
L
M
6.0
C
P
14
1
SK
0.8
0
9
SK
0.8
0
4
SD
1
0.7
5
0.7
5
5.2
5
CP
22.7
5
LM
14.0
A
GL
15
0
SK
1
8
SK
0.6
0
7
SD
2
0.5
0
0.5
0
6.5
0
CP
21.5
0
LM
14.0
A
GL
16
2
SK
0.6
0
10
SK
1
10
BY
1.0
0
0.6
0
6.0
C
P
22.0
L
M
22.0
L
M
17
3
SD
1
0.5
0
2
SD
1
0.6
0
0
SK
1
0.5
0
14.0
A
GL
6.5
0
CP
6.5
0
CP
18
6
SD
2
0.7
5
0
SD
2
1
0
SK
1
0.7
5
14.0
A
GL
5.2
5
CP
5.2
5
CP
19
3
SD
1
0.5
0
2
SD
1
0.6
0
4
SD
1
0.7
5
0.5
0
14.0
A
GL
6.5
0
CP
14.0
A
GL
20
3
SD
1
0.5
0
1
SD
1
0.8
0
5
SD
2
1
0.5
0
14.0
A
GL
6.5
0
CP
14.0
A
GL
21
6
SD
2
0.7
5
1
SD
2
0.8
0
4
SD
1
0.7
5
0.7
5
14.0
A
GL
5.2
5
CP
14.0
A
GL
22
5
SD
2
1
1
SD
2
0.8
0
7
SD
2
0.4
0
0.4
0
14.0
A
GL
6.5
0
CP
14.0
A
GL
L-40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
1
Lan
juta
n L
ampir
an L
-40
Per
cobaa
n
Fuzz
ifik
asi
µ
min
D
efuzz
ifik
asi
Jum
. K
at.
µA
Ju
m.
Kat
. µ
B
Jum
. K
at.
µC
C
ab A
K
at.
Cab
B
Kat
. C
ab C
K
at.
23
4
SD
1
0.7
5
2
SD
1
0.6
0
8
BY
0.6
0
0.6
0
14.0
A
GL
6.0
0
CP
22.0
L
M
24
6
SD
2
0.7
5
0
SD
2
1
9
BY
0.8
0
0.7
5
14.0
A
GL
5.2
5
CP
22.7
5
LM
25
4
SD
1
0.7
5
3
SD
1
0.5
0
1
SK
0.8
0
0.5
0
14.0
A
GL
14.0
A
GL
6.5
0
CP
26
3
SD
1
0.5
0
7
SD
1
0.5
0
1
SK
0.8
0
0.5
0
14.0
A
GL
14.0
A
GL
6.5
0
CP
27
5
SD
2
1
3
SD
2
0.5
0
0
SK
1
0.5
0
14.0
A
GL
14.0
A
GL
6.5
0
CP
28
6
SD
2
0.7
5
7
SD
2
0.5
0
0
SK
1
0.5
0
14.0
A
GL
14.0
A
GL
6.5
0
CP
29
3
SD
1
0.5
0
4
SD
1
0.7
5
3
SD
1
0.5
0
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
30
3
SD
1
0.5
0
3
SD
1
0.5
0
6
SD
2
0.7
5
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
31
4
SD
1
0.7
5
5
SD
1
1
4
SD
1
0.7
5
0.7
5
14.0
A
GL
14.0
A
GL
14.0
A
GL
32
4
SD
1
0.7
5
6
SD
1
0.7
5
6
SD
2
0.7
5
0.7
5
14.0
A
GL
14.0
A
GL
14.0
A
GL
33
6
SD
2
0.7
5
3
SD
2
0.5
0
4
SD
1
0.7
5
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
34
7
SD
2
0.5
0
3
SD
2
0.5
0
5
SD
2
1
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
35
6
SD
2
0.7
5
7
SD
2
0.5
0
3
SD
1
0.5
0
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
36
5
SD
2
1
7
SD
2
0.5
0
5
SD
2
1
0.5
0
14.0
A
GL
14.0
A
GL
14.0
A
GL
37
4
SD
1
0.7
5
4
SD
1
0.7
5
8
BY
0.6
0
0.6
0
14.0
A
GL
14.0
A
GL
22.0
L
M
38
3
SD
1
0.5
0
6
SD
2
0.7
5
9
BY
0.8
0
0.5
0
14.0
A
GL
14.0
A
GL
21.5
0
LM
39
5
SD
2
1
3
SD
1
0.5
0
9
BY
0.8
0
0.5
0
14.0
A
GL
14.0
A
GL
21.5
0
LM
40
7
SD
2
0.5
0
7
SD
2
0.5
0
9
BY
0.8
0
0.5
0
14.0
A
GL
14.0
A
GL
21.5
0
LM
41
4
SD
1
0.7
5
10
BY
1
2
SK
0.6
0
0.6
0
14.0
A
GL
22.0
L
M
6.0
C
P
42
6
SD
2
0.7
5
10
BY
1
1
SK
0.8
0
0.7
5
14.0
A
GL
22.7
5
LM
5.2
5
CP
43
4
SD
1
0.7
5
8
BY
0.6
0
3
SD
1
0.5
0
0.5
0
14.0
A
GL
21.5
0
LM
14.0
A
GL
L-41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
2
Lan
juta
n L
ampir
an L
-41
Per
cobaa
n
Fuzz
ifik
asi
µ
min
D
efuzz
ifik
asi
Jum
. K
at.
µA
Ju
m.
Kat
. µ
B
Jum
. K
at.
µC
Cab
A
Kat
. C
ab B
K
at.
Cab
C
Kat
.
44
4
SD
1
0.7
5
9
BY
0.8
0
7
SD
2
0.5
0
0.5
0
14.0
A
GL
21.5
0
LM
14.0
A
GL
45
5
SD
2
1
9
BY
0.8
0
3
SD
1
0.5
0
0.5
0
14.0
A
GL
21.5
0
LM
14.0
A
GL
46
7
SD
2
0.5
0
8
BY
0.6
0
5
SD
2
1
0.5
0
14.0
A
GL
21.5
0
LM
14.0
A
GL
47
4
SD
1
0.7
5
10
B
Y
1
8
BY
0.6
0
0.6
0
14.0
A
GL
22.0
L
M
22.0
L
M
48
7
SD
2
0.5
0
8
BY
0.6
0
9
BY
0.8
0
0.5
0
14.0
A
GL
21.5
0
LM
21.5
0
LM
49
10
BY
1
1
SK
0.8
0
2
SK
0.6
0
0.6
0
22.0
L
M
6.0
C
P
6.0
C
P
50
9
BY
0.8
0
2
SK
0.6
0
3
SD
1
0.5
0
0.5
0
21.5
0
LM
6.5
0
CP
14.0
A
GL
51
8
BY
0.6
0
0
SK
1
5
SD
2
1
0.6
0
22.0
L
M
6.0
C
P
14.0
A
GL
52
10
BY
1
2
SK
0.6
0
8
BY
0.6
0
0.6
0
22.0
L
M
6.0
C
P
22.0
L
M
53
9
BY
0.8
0
4
SD
1
0.7
5
0
SK
1
0.7
5
22.7
5
LM
14.0
A
GL
5.2
5
CP
54
9
BY
0.8
0
6
SD
2
0.7
5
1
SK
0.8
0
0.7
5
22.7
5
LM
14.0
A
GL
5.2
5
CP
55
8
BY
0.6
0
3
SD
1
0.5
0
4
SD
1
0.7
5
0.5
0
21.5
0
LM
14.0
A
GL
14.0
A
GL
56
10
BY
1
3
SD
1
0.5
0
7
SD
2
0.5
0
0.5
0
21.5
0
LM
14.0
A
GL
14.0
A
GL
57
9
BY
0.8
0
7
SD
2
0.5
0
4
SD
1
0.7
5
0.5
0
21.5
0
LM
14.0
A
GL
14.0
A
GL
58
8
BY
0.6
0
5
SD
2
1
5
SD
2
1
0.6
0
22.0
L
M
14.0
A
GL
14.0
A
GL
59
10
BY
1
4
SD
1
0.7
5
8
BY
0.6
0
0.6
0
22.0
L
M
14.0
A
GL
22.0
L
M
60
9
BY
0.8
0
7
SD
2
0.5
0
9
BY
0.8
0
0.5
0
21.5
0
LM
14.0
A
GL
21.5
0
LM
61
10
BY
1
10
B
Y
1
2
SK
0.6
0
1
22.0
L
M
22.0
L
M
6.0
C
P
62
8
BY
0.6
0
9
BY
0.8
0
3
SD
1
0.5
0
0.5
0
21.5
0
LM
21.5
0
LM
14.0
A
GL
63
9
BY
0.8
0
9
BY
0.8
0
6
SD
2
0.7
5
0.7
5
22.7
5
LM
22.7
5
LM
14.0
A
GL
64
10
BY
1
10
B
Y
1
9
BY
0.8
0
0.8
0
23.0
L
M
23.0
L
M
23.0
L
M
65
10
BY
1
10
B
Y
1
10
BY
1
1
24.0
L
M
24.0
L
M
24.0
L
M L-42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI