DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …
Transcript of DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …
TUGAS AKHIR
DETEKSI KENDARAAN UNTUK LAMPU LALU
LINTAS CERDAS PADA BUSWAY
Diajukan untuk memenuhi salah satu syarat
memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Jurusan Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
Disusun oleh:
REFSI SANCAKA
NIM: 165114064
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVESITAS SANATA DHARMA
YOGYAKARTA
2020
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
VEHICLES DETECTION FOR SMART TRAFFIC
LIGHT ON THE BUSWAY
In a partial fulfilment of the requirements
for the degree of Sarjana Teknik
Department of Electrical Engineering
Faculty of Science and Technology, Sanata Dharma University
REFSI SANCAKA
NIM: 165114064
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
2020
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
LEMBAR PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya
atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar
pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, 2 Desember 2020
Refsi Sancaka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN DAN MOTO HIDUP
MOTTO:
“Anyone can be Anything”
Dengan ini ku persembahkan skripsiku untuk…
Allah S.W.T
Kedua Orang tua serta saudara dekat
Teman-teman seperjuangan Teknik Elektro
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Refsi Sancaka
Nomor Mahasiswa : 165114064
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
DETEKSI KENDARAAN UNTUK LAMPU LALU
LINTAS CERDAS PADA BUSWAY
Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak
untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk
pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau
media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun
memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya.
Yogyakarta, 2 Desember 2020
Refsi Sancaka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI Lampu lalu lintas atau disebut APILL (Alat Pemberi Isyarat lalu Lintas) merupakan
suatu pengatur persimpangan jalan saat ada volume kendaraan tertentu agar persimpangan
menjadi lancar. Pengaturan waktu penyalaan lampu lalu lintas saat ini sebagian besar diatur
sesuai dengan perkiraan kendaraan yang lewat kemudian aktif sesuai waktu yang
ditentukan dan tidak dapat dirubah. Hal ini juga menjadi kurangnya efisiensi waktu
terhadap transportasi umum seperti bus trans dilajur busway dalam menempuh
persimpangan untuk menuju ke halte berikutnya. Demi menambah efisien waktu bus trans
(busway) dibuat sebuah konsep sistem lampu lalu lintas yang diatur dengan Raspberry Pi.
Tujuan dari pembuatan sistem ini adalah memprioritaskan bus trans pada jalur busway
dalam melewati perempatan lampu lalu lintas.
Sistem ini dibuat dengan Pi camera sebagai pemantau. Pi camera diletakkan disisi
ujung konveyor menghadap jalur busway. Citra dari Pi camera tersebut kemudian diolah
dengan Raspberry Pi menggunakan OpenCV-Python agar dapat mendeteksi kedatangan
bus serta menghitung waktu tempuh bus. Waktu tempuh kemudian digunakan untuk waktu
interupsi pada setiap simpang lampu lalu lintas dan memberikan waktu nyala lampu hijau
APILL pada jalur busway.
Penelitian pada sistem ini telah berhasil untuk memprioritaskan bus trans (busway)
dalam melewati perempatan lampu lalu lintas dan dapat disesuaikan dengan waktu
kedatangan bus. Selain itu waktu kedatangan bus kedua yang beriringan dengan bus
pertama dapat ditambahkan pada waktu nyala lampu hijau APILL dijalur busway.
Kata Kunci: Raspberry Pi, Pi camera, Opencv-Python
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT A traffic light which also called APILL (Alat Pemberi Isyarat lalu Lintas) is a road
junction regulator that functions when there is a certain volume of vehicles so it may
minimize traffic jam. The time setting of the current traffic lights is mostly set according
to an estimated number of vehicles passing and then being activated according to a
specified time which cannot be changed. This is causing time inefficiency on public
transportation such as trans bus when moving in a busway lane, taking an intersection to
get to the next bus stop. To increase the time efficiency of the trans bus (busway), a system
concept using a Raspberry Pi is made. The purpose of making this system is to priority the
trans bus on the busway lane in passing traffic light intersections.
This system uses a Pi camera that is used as a monitor. The pi camera is placed on
the end side of the conveyor facing the busway lane. Imagery from the Pi camera is then
processed with the Raspberry Pi using OpenCV-Python so that it can detect the arrival of
the bus and calculate the bus travel time. Travel time data is then used for the interruption
time at each intersection of the traffic light.
Research on this system has succeeded to priority trans bus (busways) in passing
traffic light intersections and can be adjusted according to the bus arrival time. In addition,
when the second bus arrives along with the first bus, the APILL green light on the busway
lane can be added.
Keywords: Raspberry Pi, Pi camera, OpenCV-Python, pixel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa atas segala karunianya yang telah
diberikan selama ini sehingga dapat menyelesaikan penelitian tugas akhir dengan judul
“DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS CERDAS PADA
BUSWAY” dengan baik.
Penelitian yang berupa tugas akhir ini merupakan salah satu syarat bagi mahasiswa
Jurusan Teknik Elektro untuk memperoleh gelar Sarjana Teknik di Universitas Sanata
Dharma Yogyakarta. Dalam pengerjaan tugas akhir ini penulis diberi dukungan dari
berbagai pihak. Oleh karena itu, penulis ingin mengucapkan terima kasih kepada :
1. Kedua orang tua tercinta yang selalu ada dan memberi dukungan.
2. Bapak Djoko Untoro Suwarno, S.Si., M.T selaku Dosen Pembimbing tugas akhir
yang telah banyak meluangkan waktu untuk memberikan bimbingan.
3. Teman teman seperjuangan angkatan Teknik Elektro 2016
4. Semua pihak yang tidak bisa penulis sebutkan satu per satu atas bantuan, bimbingan,
kritik dan saran.
Pada akhirnya penulis sangat menyadari bahwa laporan Tugas Akhir ini masih
terdapat kekurangannya. Oleh karena itu, penulis sangat mengharapkan kritik dan saran
yang dapat membangun serta menyempurnakan tulisan. Semoga tugas akhir ini dapat
dimanfaatkan dan dikembangkan lebih lanjut oleh peneliti lain sehingga tulisan ini dapat
lebih bermanfaat.
Yogyakarta, 2 Desember 2020
Peneliti
Refsi Sancaka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
TUGAS AKHIR ..................................................................................................................... i
FINAL PROJECT ................................................................................................................. ii
LEMBAR PERSETUJUAN ................................................................................................. iii
LEMBAR PENGESAHAN .................................................................................................. iv
LEMBAR PERNYATAAN KEASLIAN KARYA .............................................................. v
HALAMAN PERSEMBAHAN DAN MOTO HIDUP ....................................................... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS ........................................................................................... vii
INTISARI ........................................................................................................................... viii
ABSTRACT ......................................................................................................................... ix
KATA PENGANTAR ........................................................................................................... x
BAB I PENDAHULUAN ..................................................................................................... 1
1.1. Latar Belakang ............................................................................................... 1
1.2. Tujuan dan Manfaat ....................................................................................... 2
1.3. Batasan Masalah ............................................................................................ 3
BAB II Dasar Teori ............................................................................................................... 5
2.1. Lampu Lalu Lintas ......................................................................................... 5
2.2. Raspberry Pi 3B ............................................................................................. 6
2.3. GPIO Raspberry pi ......................................................................................... 6
2.4. Pi camera Board ............................................................................................ 7
2.5. Pemrograman dengan Python dan OpenCV .................................................. 8
2.6. Bus Miniatur .................................................................................................. 9
2.7. Background Subtraction................................................................................. 9
2.8. Deteksi Kecepatan ....................................................................................... 10
2.9. Kontur .......................................................................................................... 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
2.10. Model Citra .................................................................................................. 11
2.11. Digitalisasi Citra .......................................................................................... 12
2.12. FPS (FRAME PER SECOND) pada video digital ........................................ 12
2.13. Rumus Mencari Kecepatan ......................................................................... 13
2.14. Region Of Interest (ROI) ............................................................................. 13
2.15. Teorema Pythagoras..................................................................................... 14
2.16. Hukum Ohm................................................................................................. 14
2.17. Transistor Sebagai Sakelar (Switch) ............................................................ 14
2.18. Motor Universal ........................................................................................... 15
BAB III PERANCANGAN ALAT ..................................................................................... 17
3.1. Proses Kerja Sistem ..................................................................................... 17
3.2. Perancangan Perangkat Keras (Hardware) .................................................. 18
3.2.1. Cara kerja Konveyor sebagai Simulator Penggerak Bus ............................ 18
3.2.2. Perhitungan Kecepatan Motor dengan Dimmer ........................................... 20
3.2.3. Penskalaan Jarak Kamera pada Konveyor ................................................... 21
3.2.4. Penskalaan Bus Miniatur dengan Ukuran Asli ............................................ 21
3.2.5. Rancangan Lampu Lalu Lintas .................................................................... 22
3.2.6. Gambaran Cara Kerja Sistem Lampu Lalu Lintas dan lajur Busway .......... 25
3.3. Rancangan Perangkat Lunak (Software) ...................................................... 25
3.3.1. Rancangan Diagram Alir Keseluruhan Sistem (Flowchart) ........................ 25
3.3.2. Perancangan Diagram Alir Subrutin Pendeteksian Frame Bus ................... 26
3.3.3. Perancangan Diagram Alir Subrutin Interupsi Pada Traffic light ................ 27
3.3.4. Gambaran Cara Kerja Sistem Kamera dalam Menangkap Objek Bus ........ 28
3.3.5. Gambaran Cara Kerja Siklus Waktu Nyala Lampu Lalu Lintas .................. 29
3.3.6. Konsep Perhitungan Kecepatan Bus Pada Jarak 300m-200m dengan ROI-box
dan Pengaturan Waktu Interupsi .................................................................. 30
BAB IV Hasil dan Pembahasan........................................................................................... 32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
4.1. Perubahan Rancangan .................................................................................. 32
4.1.1. Tambahan Rancangan Puli Terhadap Putaran Motor Pada Konveyor ........ 32
4.1.2. Rancangan Penyangga dan Posisi Pi camera .............................................. 32
4.1.3. Penggunaan Miniatur Bus ............................................................................ 33
4.2. Implementasi Hardware .............................................................................. 34
4.3. Pengujian Alat .............................................................................................. 36
4.3.1. Menentukan Panjang Jarak tiap 100m Dalam Skala 30cm .......................... 36
4.3.2. Pengujian Nyala Lampu APILL Siklus Normal .......................................... 38
4.3.3. Nyala Lampu APILL disaat Interupsi .......................................................... 41
4.3.4. Menentukan Luas objek bus Pada Area 300m – 200m................................ 42
4.3.5. Deteksi Frame Rata-Rata dengan Kemampuan Pi camera 30 FPS ............ 43
4.3.6. Hasil Pengujian Kecepatan Untuk Bus Tunggal Pada Area Deteksi 300 m-
200 m ........................................................................................................... 45
4.3.7. Hasil Pengujian Penambahan Waktu interupsi Terhadap Bus Pertama
Beriringan Bus Kedua dengan Jarak sekitar 100m ..................................... 47
4.3.8. Hasil Pengujian Waktu interupsi Terhadap Kedatangan Bus dan Mobil .... 49
4.3.9. Kecepatan Terdeteksi dengan Pengaturan Dimmer ..................................... 51
4.4. Implementasi Software ................................................................................ 53
4.4.1. Inisialisasi Program ...................................................................................... 54
4.4.2. Menjalankan Beberapa Script Secara Bersamaan ........................................ 54
4.4.3. Pengolahan Citra Untuk Pendeteksian Bus .................................................. 54
4.4.4. Tampilan Jarak di Citra Video ..................................................................... 55
4.4.5. Mengolah Citra Foreground dan Menghitung Luasan Objek ...................... 56
4.4.6. Perhitungan Kecepatan Bus ......................................................................... 57
4.4.7. Menampilkan Kecepatan Bus pada Video ................................................... 58
4.4.8. Pengaturan Waktu Interupsi Kedatangan Bus ............................................. 58
4.4.9. Pengaturan Waktu Interupsi Kedatangan Bus Kedua Hampir Bersamaan .. 59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
BAB V KESIMPULAN DAN SARAN .............................................................................. 60
5.1. Kesimpulan ......................................................................................................... 60
5.2. Saran…. .............................................................................................................. 60
Daftar Pustaka ..................................................................................................................... 61
LAMPIRAN ........................................................................................................................ 63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
Daftar Gambar
Gambar 1. 1 Diagram blok sistem deteksi kendaraan untuk lampu lalu lintas cerdas .......... 3
Gambar 2. 1 Raspberry pi 3B [7] .......................................................................................... 6
Gambar 2. 2 GPIO Pin Raspberry pi [7] ............................................................................... 7
Gambar 2. 3 Pi camera [7] ..................................................................................................... 7
Gambar 2. 4 Background subtraction [8] .............................................................................. 9
Gambar 2. 5 Kontur terbuka [11] ........................................................................................ 10
Gambar 2. 6 Kontur tertutup [11] ........................................................................................ 10
Gambar 2. 7 Arah kode Rantai [11] .................................................................................... 11
Gambar 2. 8 Kode rantai pada objek [11] ........................................................................... 11
Gambar 2. 9 Hasil pengkodean [11] .................................................................................... 11
Gambar 2. 10 Cara menentukan kordinat dalam citra [12] ................................................. 12
Gambar 2. 11 Pembentukan Citra dan Matrik Citra [12] .................................................... 12
Gambar 2. 12 Nilai matrik yang dihasilkan [13] ................................................................. 12
Gambar 2. 13 Segitiga siku siku .......................................................................................... 14
Gambar 2. 14 Rangkaian Transistor sebagai saklar ............................................................ 15
Gambar 2. 15 Prinsip kerja Motor Universal [23] ............................................................... 15
Gambar 2. 16 Bentuk tegangan keluaran pada sudut penyulutan 90 derajat [23] ............... 16
Gambar 3. 1 Diagram Blok kerja sistem rancangan ............................................................ 18
Gambar 3. 2 Desain Cara kerja Raspberry pi camera dalam mendeteksi bus ..................... 18
Gambar 3. 3 Letak camera dan motor pada konveyor ......................................................... 19
Gambar 3. 4 Rangkaian dimmer steker ............................................................................... 19
Gambar 3. 5 Desain Cara kerja konveyor untuk pergerakan bus ........................................ 19
Gambar 3. 6 Penskalaan jarak pada konveyor ..................................................................... 21
Gambar 3. 7 Penskalaan panjang bus .................................................................................. 22
Gambar 3. 8 Simulasi perhitungan Pin GPIO ..................................................................... 23
Gambar 3. 9 Wiring LED ke GPIO ..................................................................................... 24
Gambar 3. 10 Desain PCB tampak atas ............................................................................... 24
Gambar 3. 11 Persimpangan dan lampu lalu lintas ............................................................. 25
Gambar 3. 12 Flowchart keseluruhan sistem...................................................................... 26
Gambar 3. 13 Flowchart subrutin deteksi frame bus ........................................................... 27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
Gambar 3. 14 Flowchart subrutin hitung waktu kedatangan bus dan melakukan interupsi
traffic light ........................................................................................................................... 28
Gambar 3. 15 Kamera mendeteksi objek ............................................................................. 29
Gambar 3. 16 Siklus Lampu lalu lintas ............................................................................... 29
Gambar 3. 17 Cara kerja bus memasuki ROI-box............................................................... 30
Gambar 4. 1 Posisi pi camera .............................................................................................. 33
Gambar 4. 2 Ketinggian pi camera ..................................................................................... 33
Gambar 4. 3 Objek-objek kendaraan miniatur .................................................................... 34
Gambar 4. 4 Implementasi Hardware Perempatan lampu lalu lintas pada jalur busway ... 35
Gambar 4. 5 Diameter Puli Pada Konveyor dan Motor ...................................................... 36
Gambar 4. 6 Pengukuran jarak dengan meteran .................................................................. 37
Gambar 4. 7 Pemberian tanda jarak konveyor .................................................................... 37
Gambar 4. 8 Mencari kordinat pixel dengan memberikan titik ........................................... 38
Gambar 4. 9 Nyala lampu APILL Hijau A .......................................................................... 39
Gambar 4. 10 Nyala lampu APILL Kuning A..................................................................... 39
Gambar 4. 11 Nyala lampu APILL Hijau B ........................................................................ 39
Gambar 4. 12 Nyala lampu APILL Kuning B ..................................................................... 39
Gambar 4. 13 Nyala lampu APILL Hijau C ........................................................................ 40
Gambar 4. 14 Nyala lampu APILL Kuning C ..................................................................... 40
Gambar 4. 15 Nyala lampu APILL Hijau D ........................................................................ 40
Gambar 4. 16 Nyala lampu APILL Kuning D..................................................................... 40
Gambar 4. 17 Tampilan command window python siklus normal APILL .......................... 41
Gambar 4. 18 Lampu APILL kuning tiap simpang ketika interupsi ................................... 41
Gambar 4. 19 Tiap simpang lampu APILL menyala merah ketika interupsi ...................... 41
Gambar 4. 20 Lampu APILL Jalur A hijau ketika interupsi ............................................... 42
Gambar 4. 21 Luasan bus saat melewati jarak 300 m ......................................................... 42
Gambar 4. 22 Luasan bus melewati jarak 200 m ................................................................ 42
Gambar 4. 23 Pengaturan dimmer untuk menghitung jumlah frame .................................. 43
Gambar 4. 24 Perhitungan waktu tempuh bus dengan stopwatch ....................................... 44
Gambar 4. 25 Data frame terdeteksi .................................................................................... 44
Gambar 4. 26 Kecepatan bus tunggal .................................................................................. 45
Gambar 4. 27 Data frame bus tunggal ................................................................................. 45
Gambar 4. 28 Jalannya command window Bus tunggal ...................................................... 46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 4. 29 Lampu APILL nyala hijau di lajur A pada bus tunggal ................................ 47
Gambar 4. 30 Kecepatan bus pertama ................................................................................. 47
Gambar 4. 31 Kecepatan bus kedua .................................................................................... 48
Gambar 4. 32 Data frame bus pertama ................................................................................ 48
Gambar 4. 33 Data frame bus kedua ................................................................................... 48
Gambar 4. 34 Jalannya command window bus ganda ......................................................... 48
Gambar 4. 35 Tambahan waktu pada bus kedua ................................................................. 49
Gambar 4. 36 Kecepatan Bus beriringan dengan mobil ...................................................... 50
Gambar 4. 37 Data frame kecepatan bus beriringan dengan mobil ..................................... 50
Gambar 4. 38 comman window pada bus beriringan dengan mobil ................................... 50
Gambar 4. 39 Nyala hijau bus beriringan dengan mobil ..................................................... 51
Gambar 4. 40 Mobil terkena lampu merah .......................................................................... 51
Gambar 4. 41 Cara pengukuran tegangan pada skala dimmer 2,1 ...................................... 53
Gambar 4. 42 Library yang digunakan ................................................................................ 54
Gambar 4. 43 Menjalankan script beberapa program ......................................................... 54
Gambar 4. 44 Deklarasi citra ............................................................................................... 55
Gambar 4. 45 Listing program tampilan jarak .................................................................... 55
Gambar 4. 46 Tampilan citra video ..................................................................................... 56
Gambar 4. 47 Listing program mendapatkan frame foreground ......................................... 56
Gambar 4. 48 Listing program menghitung luasan objek foreground ............................... 57
Gambar 4. 49 Listing program menghitung kecepatan bus ................................................. 57
Gambar 4. 50 Listing program menampilkan kecepatan dan video .................................... 58
Gambar 4. 51 Listing program timer countdown ................................................................ 58
Gambar 4. 52 Listing program pengaturan tambahan bus kedua ........................................ 59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
Daftar Tabel
Tabel 3. 1 Komponen dan alat ............................................................................................. 20
Tabel 3. 2 Perhitungan sudut, tegangan dan kecepatan motor ............................................ 21
Tabel 3. 3 Pin GPIO dan LED ............................................................................................. 23
Tabel 3. 4 Komponen dan alat penyusun lampu lalu lintas ................................................. 24
Tabel 4. 1 Keterangan penyusun komponen hardware ....................................................... 34
Tabel 4. 2 Kordinat pixel ..................................................................................................... 38
Tabel 4. 3 Perhitungan rata-rata FPS pi camera .................................................................. 45
Tabel 4. 4 Data kecepatan GUI dan kecepatan hitungan ..................................................... 52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Lampu Lalu lintas atau disebut APILL (Alat Pemberi Isyarat lalu Lintas) merupakan
suatu pengatur persimpangan jalan saat ada volume kendaraan tertentu agar persimpangan
menjadi lancar [1]. Pengaturan Lampu lalu lintas saat ini sebagian besar masih
menggunakan pengendalian waktu yang terpasang pada sistemnya tanpa menggunakan
sistem tambahan lain. Waktu penyalaan lampu lalu lintas diatur sebelumnya sesuai dengan
perkiraan kendaraan yang lewat kemudian aktif sesuai dengan waktu yang telah ditentukan.
Hal tersebut membuat operator tidak bisa merubah pewaktuan nyala lampu lalu lintas pada
tiap arah setiap saat. Hal ini juga menjadi masalah bagi kendaraan yang benar-benar
membutuhkan ruang untuk bergerak cepat.
Menurut penelitian yang dilakukan oleh S.,U., Hadian.,dkk, 2007 [2] merancang
sebuah alat pengatur lalu-lintas yang berfungsi untuk memberikan kemudahan kepada
kendaraan lain yang ingin melewati suatu titik perpotongan putar-balik dengan jalur
busway. Pendeteksian kedatangan bus Transjakarta dilakukan dengan menggunakan sensor
Light Dependent Resistor (LDR). Setelah sensor mendeteksi kedatangan bus Transjakarta
kemudian diteruskan ke modul mikrokontroler. Keluaran dari mikrokontroler dihubungkan
dengan lampu LED yang berfungsi sebagai lampu indikator. Modul sensor berfungsi untuk
melakukan pendeteksian terhadap kedatangan bus Transjakarta. Keluaran sensor ini berupa
pulsa-pulsa, yang dihubungkan dengan modul mikrokontroler. Jika sensor mendeteksi
kedatangan bus Transjakarta maka diteruskan ke mikrokontroler sebagai pengatur lalu
lintasnya. Lampu LED berfungsi sebagai lampu indikator lalu-lintas. Indikator lampu
merah (LED merah) bertujuan untuk menghentikan kendaraan yang hendak memutar arah.
Indikator lampu hijau (LED hijau) bertujuan untuk mengijinkan kendaraan lainnya untuk
memutar arah melintasi jalur busway.
Selanjutnya pada penelitian yang dilakukan oleh K, B, .Neelima dan T, Saravanan
[3], yang merancang sebuah sistem count dengan metode pendeteksi objek menggunakan
pengolahan citra menggunakan OpenCV, output dihasilkan yaitu dengan melakukan
perhitungan terhadap jumlah objek yang terdeteksi. Penelitian serupa telah dilakukan oleh
Meisam Razavi ,dkk,2019 tentang Smart Traffic Light Scheduling in Smart City Using
Image and Video Processing [4] yang dalam perancangnya dibuat sebuah penjadwalan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
lampu lalu lintas ditentukan berdasarkan kepadatan dan jumlah kendaraan yang lewat.
Rancangan tersebut, diimplementasikan dengan Raspberry-Pi dan OpenCV sebagai
programnya serta dikombinasikan dengan metode IOT (Internet of Things) dalam
mengkontrol lampu lalu lintas. Hasil analitik dan eksperimental menunjukkan efisiensi
yang disediakan oleh model yang diusulkan dalam manajemen Smart Traffic Light. Pada
penelitian yang dilakukan oleh Khalid M, Dr. Muhammad Akhlaq, 2019 [5] dibuat sebuah
sistem kendaraan yang diprioritaskan untuk melintasi lampu lalu lintas dengan aman dan
tanpa penundaan. Perancangan penelitian menggunakan aplikasi Android, protokol MQTT
(Message Queuing Telemetry Transport), dan Google Maps. Pengontrol lampu lalu lintas
dikontrol dengan mikrokontroler, dan Internet untuk menghubungkan keduanya. Aplikasi
Android memungkinkan pengguna untuk memilih tujuan. Google Maps digunakan untuk
menemukan jalur terpendek ke tujuan. Aplikasi Android yang diciptakan mengirimkan
waktu kedatangan ke setiap pengontrol pada tiap persimpangan lampu lalu lintas dan
memberi prioritas lampu hijau setelah kendaraan tiba.
Penelitian yang telah dilakukan tersebut mendasari penulis untuk membuat sebuah
bentuk kerja suatu sistem kendali lampu lalu lintas menggunakan image processing
berbasis Python programming dengan memprioritaskan busway agar dapat melewati
persimpangan dengan cepat sehingga menambah efisiensi waktu untuk menuju ke halte
bus selanjutnya.
1.2. Tujuan dan Manfaat
Tujuan dari tugas akhir ini
1. Membuat sistem lampu lalu lintas cerdas dan adaptif yang dapat mengatur
pergantian nyala lampu lalu lintas pada tiap persimpangan agar bus trans pada
jalur busway dapat lancar dalam melewati persimpangan.
Manfaat dari tugas akhir ini
1. Menjadikan sebuah referensi bagi orang lain untuk pengembangan lebih lanjut
mengenai suatu prioritas kendaraan tunggal untuk mengatur pewaktuan Traffic
light.
2. Penelitian ini akan menambah aplikasi penggunaan Raspberry Pi dalam
mengontrol sebuah lampu lalu lintas dengan digunakan pengolahan citra untuk
mendeteksi suatu bus.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.3. Batasan Masalah
Adapun beberapa batasan masalah dari tugas akhir ini guna menghindari pelebaran
masalah yang tidak sesuai dengan rancangan, antara lain:
1. Alat ini akan berupa prototype.
2. Posisi camera fix (tidak berubah posisi) dan background sama.
3. Model persimpangan perempatan.
4. Penskalaan jarak akan disetarakan dengan jarak asli.
5. Mengenali objek bus dan sekaligus kecepatan dalam jarak yang ditentukan.
6. Menggunakan Raspberry Pi camera v 1.3 untuk mendeteksi dan mengenali
objek.
7. Sebagai laju miniatur bus menggunakan konveyor.
8. Menggunakan Raspberry Pi 3B.
1.4 Metode Penelitian
Metodologi yang digunakan dalam tugas akhir ini adalah sebagai berikut :
1. Studi literatur dan referensi, mempelajari buku-buku dan jurnal yang membahas
mengenai Raspberry Pi, Python dan Opencv, serta buku- buku pendukung
lainnya. Selain itu, informasi dikumpulkan dari berbagai artikel dari internet.
Informasi tersebut mencakup mengenai datasheet Raspberry Pi, dan bahasa
pemrograman Python dan Opencv.
2. Perancangan dan Pembuatan Alat
Perancangan dan pembuatan alat dimulai dari pembuatan hardware. Hardware
yang dibuat berupa rangkaian elektronik pada port GPIO serta bus miniatur dan
penggeraknya. Perancangan selanjutnya yaitu perancangan program
pendeteksian bus serta pengontrol lampu lalu lintas (APILL) pada Raspberry Pi.
Diagram blok sistem bisa dilihat pada gambar 1.1. Diagram tersebut merupakan
alur kerja pendeteksian bus.
Gambar 1. 1 Diagram blok sistem deteksi kendaraan untuk lampu lalu lintas cerdas
3. Pengujian Alat dan Pengambilan Data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
Pengambilan data alat dimulai dari pengujian apakah sistem sudah sesuai dengan
tujuan yaitu mendeteksi objek bus bergerak sudah sesuai atau belum, dan
menguji fungsi dari tiap komponen agar bekerja sesuai fungsi program.
4. Pembuatan Analisis dan Kesimpulan
Pada tahap ini dilakukan pembahasan mengenai sistem perangkat lunak dan
perangkat keras yang dibuat, serta membahas perbandingan antara teori dan hasil
pengambilan data. Analisis dan pengambilan kesimpulan diambil berdasarkan
persentase keberhasilan pada sistem secara keseluruhan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
Dasar Teori
2.1. Lampu Lalu Lintas
Lampu lalu lintas adalah suatu alat untuk pengontrol arus lalu lintas [1]. Pengaturan
arus lalu lintas pada persimpangan pada dasarnya bertujuan supaya pergerakan kendaraan
dapat bergerak secara bergantian sehingga arus lalu lintas teratur, tidak terjadi kemacetan.
Ada berbagai jenis kendali dengan menggunakan lampu lalu lintas dimana pertimbangan
ini sangat tergantung pada situasi dan kondisi persimpangan yang ada seperti volume,
geometrik simpang dan sebagainya.
Dalam mengatur lampu lalu lintas ada beberapa jenis yaitu yang pertama Fixed time
traffic signals merupakan pengoperasian lampu lalu lintas dimana pengaturan waktunya
(setting time) tidak mengalami perubahan atau tetap [1]. Untuk yang kedua Actuated traffic
signals pengoperasian lampu lalu lintas dimana pengaturan waktunya (setting time)
mengalami perubahan dari waktu ke waktu sesuai dengan kedatangan kendaraan dari
berbagai pendekat/ kaki simpang (approaches) [1].
Dalam mengatur pewaktuan nyala lampu lalu lintas konvesional digunakan
pewaktuan rush hour berdasarkan jam sibuk kerja (fixed Time). Lampu lalu lintas juga
dapat diatur secara berubah rubah secara otomatis dengan kondisi tertentu dengan bantuan
sensor atau juga camera yang akan mendeteksi arus setiap lajur lampu lalu lintas lalu diolah
dengan mikrokontroler untuk mengatur nyala tiap lampu merah dan hijaunya, Ada juga
dengan user dengan mengganti inputan secara real time dalam jarak jauh akan tetapi biaya
untuk alat ini mahal.
Pengaturan lampu lalu lintas dilakukan menggunakan data tiap lajur kendaraan yang
melintas dalam kurun waktu tertentu atau bisa disebut dengan arus kendaraan, sedangkan
kepadatan sendiri adalah jumlah kendaraan yang lewat per satuan panjang jalan [6].
Perumusan arus kendaraan ditunjukan pada persamaan (2.1) sedangkan kepadatan
ditunjukan pada persamaan (2.2)
q =3600N
t (2.1)
k = N
L (2.2)
q= arus dalam satu jam
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
k= Kepadatan/density
L= panjang Jalan
N= jumlah kendaraan yang melewati satu titik tertentu di jalan dalam t .
2.2. Raspberry Pi 3B
Merupakan generasi ketiga dari keluarga Raspberry Pi. Raspberry Pi 3B memiliki
RAM 1 GB dan grafis Broadcom VideoCore IV pada frekuensi clock yang lebih tinggi dari
sebelumnya yang berjalan pada 250MHz. Raspberry Pi 3B Merupakan seri yang lebih baru
daripada Raspberry Pi 2 model B [7] .
Kelebihannya dibandingkan dengan Raspberry Pi 2 adalah:
1. A 1.2GHx 64-bit quad-core ARMv8 CPU
2. 802.11n Wireless LAN
3. Bluetooth 4.1
4. Bluetooth Low Energy (BLE)
Sama seperti Raspberry Pi 2, Raspberry Pi 3B juga memiliki 4 USB port, 40 pin GPIO,
Full HDMI port, port Ethernet, Combined 3.5 mm audio jack and composite video,
Camera interface (CSI), Display interface (DSI), slot kartu Micro SD (Sistem tekan-tarik,
berbeda dari yang sebelum nya ditekan-tekan), dan VideoCore IV 3D graphics core.
Raspberry Pi 3 juga direkomendasikan untuk digunakan bagi mereka yang ingin
menggunakan Pi dalam proyek-proyek yang membutuhkan daya yang sangat rendah. Pada
gambar 2.1 adalah bentuk model Raspberry Pi 3B.
Gambar 2. 1 Raspberry pi 3B [7]
2.3. GPIO Raspberry pi
GPIO merupakan sederet pin yang terdiri dari 40 pin dengan berbagai fungsi [7].
Salah satu fitur yang kuat dari Raspberry Pi adalah deretan GPIO (tujuan umum input /
output) pin di sepanjang tepi atas pin board. Raspberry Pi Pada tingkat tertentu, Gpio dapat
digunakan sebagai switch yang dapat anda aktifkan atau nonaktifkan (input) atau bisa juga
untuk mengaktifkan atau menonaktifkan (output). Dari 26 pin gpio yang dimiliki Raspberry
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Pi, terdapat 2 pin sebagai sumber tegangan 5 V, 2 pin sumber tegangan 3.3 V, 5 pin ground,
17 pin input / output. Tiap Pin GPIO dapat diprogram untuk menjalankan suatu output atau
input tertentu dengan memperhatikan konfigurasi tiap pinnya [7]. Pada gambar 2.2 adalah
konfigurasi tiap pin pada GPIO dan fungsinya.
Gambar 2. 2 GPIO Pin Raspberry pi [7]
2.4. Pi camera Board
Modul Pi camera merupakan salah satu accessories pendukung Raspberry Pi.
Kamera berukuran 5mp ini dilengkapi dengan kabel datar fleksibel yang berfungsi untuk
dihubungkan pada konektor CSI yang terletak antara port ethernet dan port HDMI pada
Raspberry Pi board. Modul pi camera seri v1.3 dapat dilihat pada gambar 2.3.
Gambar 2. 3 Pi camera [7]
Mengaktifkan pi camera pada sistem operasi Raspbian, dapat dilakukan dengan
melakukan install dan upgrade versi terbaru dari Raspbian OS, kemudian jalankan Raspi-
config dan pilih Camera Option. Pi camera dapat mengambil gambar dengan resolusi
1080p, 720p dan merekam video dengan resolusi sebesar 640 x 480 p. Pi camera memiliki
dimensi 25mm x 20mm x 9mm. Selain itu, Pi camera mendukung Python library juga [7].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2.5. Pemrograman dengan Python dan OpenCV
Python merupakan bahasa pemrograman yang bersifat freeware atau perangkat bebas
dan tidak ada batasan dalam penyalinan atau mendistribusikannya [24]. Python terdiri dari
source code debugger, profiler, pelayanan antarmuka, fungsi sistem, GUI (antarmuka
pengguna grafis), dan basis datanya. Python dapat digunakan dalam beberapa sistem
operasi seperti Windows dan Linux.
OpenCV (Open Source Computer Vision) adalah library dari Python digunakan
dalam pemrograman untuk pengolahan citra komputer. OpenCV bersifat gratis baik untuk
penggunaan akademis maupun komersial. OpenCV dapat digunakan pada sistem operasi
Windows dan Linux [8].
Pengolahan citra pada opencv memerlukan fungsi atau syntax. Fungsi- fungsi opencv yang
ada dalam library opencv untuk mendukung identifikasi objek antara lain [8]:
1. Absdiff adalah fungsi untuk menghitung perbedaan absolut per elemen antara dua
array atau antara array dan scalar. Perintah yang digunakan adalah“cv2.absdiff ()”
2. CvtColor adalah fungsi untuk mengkonversi citra dari satu ruang warna ke yang
lain. Perintah yang digunakan adalah “cv2.cvtColor( )”
3. GaussianBlurr adalah fungsi dari OpenCV yang bertugas untuk menghaluskan
dan menghilangkan noise. Perintah yang digunakan adalah ”cv2.GaussianBlur( )”
4. Backgound subtraction adalah teknik untuk menghasilkan gambar foreground
(frame yang dikurangkan dengan background). Perintah yang digunakan adalah ”
cv2.createBackgroundSubtractor()”
5. Threshold adalah fungsi dari opencv yang biasanya digunakan untuk
mendapatkan gambar BI-level (biner) dari gambar grayscale atau untuk
menghilangkan noise, yaitu, menyaring piksel dengan nilai terlalu kecil atau
terlalu besar. Perintah yang digunakan adalah “cv2.threshold ( )”.
6. Find Contours adalah perintah dari OpenCV untuk menemukan kontur dalam citra
biner. Perintah yang digunakan adalah “cv2.findContours”.
7. Bounding Rectangle merupakan fitur yang memungkinkan untuk melingkupi area
kontur objek didalam sebuah persegi. Terdapat dua jenis Bounding Rectangle,
yaitu Straight Bounding Rectangle dan Rotated Bounding Rectangle. Di dalam
library OpenCV perintah Straight Bounding Rectangle yang digunakan adalah
“cv2.boundingRect()”.
8. Titik centroid merupakan suatu titik tengah yang dibuat dari sebuah kotak sebesar
frame bus. Titik centroid dapat dihitung dengan persamaan (2.3) dan (2.4).
𝐶(𝑥) = 𝑥 + (w
2) (2.3)
𝐶(𝑦) = 𝑦 + (H
2) (2.4)
C(x)= titik kordinat tengah x
C(y)= titik kordinat tengah y
x = kordinat x pada bounding box
y = kordinat y pada bounding box
w = lebar bounding box
h = tinggi bounding box
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.6. Bus Miniatur
Bus adalah kendaraan bermotor angkutan umum yang besar, beroda empat atau lebih,
yang dapat memuat penumpang banyak sedangkan miniatur adalah tiruan sesuatu dalam
skala yang diperkecil. Miniatur bus yang digunakan dalam bentuk papercraft buatan dari
Canon Creative Park.
2.7. Background Subtraction
Background subtraction adalah salah satu teknik pengolahan citra yang digunakan
untuk menghasilkan bagian citra yang tidak terdapat pada background sehingga mampu
menampilkan objek yang sebelumnya tidak terdapat pada background pada citra yang
dihasilkan oleh capture kamera. Latar background subtraction pada umumnya digunakan
secara luas untuk menghasilkan latar depan (foreground) (yaitu, gambar biner yang berisi
piksel milik benda bergerak dalam perpindahan) dengan menggunakan kamera statis.
Background subtraction menghitung latar depan (foreground) melakukan pengurangan
antara frame saat ini dengan background model [8]. Pengurangan latar depan dengan
background dapat diilustrasikan pada gambar 2.4.
Gambar 2. 4 Background subtraction [8]
Perhitungan background dapat diperoleh dengan menggunakan metode TABI atau
time-average background image [10]. Metode ini akan menghasilkan gambar background
yang merupakan pendekatan dengan cara mendapatkan rata-rata nilai pixel gambar
berdasarkan serangkaian frame dari serangkaian gambar. Perumusannya ditunjukkan pada
persamaan (2.5):
F(x, y) =∑ fi(xi,yi)n
N (2.5)
i=banyaknya pixel ke N
fi(xi,yi)= jumlah pixel selama frame bergerak
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
2.8. Deteksi Kecepatan
Kecepatan kendaraan diperoleh dari frame hasil deteksi foreground. Frame yang
terdeteksi kemudian digunakan dalam menentukan posisi kendaraan pada setiap frame.
Penentuan posisi kendaraan dapat digunakan garis deteksi kecepatan untuk mempermudah
perhitungan. Dalam video image dibentuk ROIbox (persegi empat penanda objek pada
citra) sebagai suatu garis deteksi kecepatan. Garis deteksi kecepatan perlu ditentukan titik
awal garis sampai akhir garis yang merupakan suatu panjang jarak. Setelah garis awal dan
akhir ditentukan maka jumlah frame kendaraan yang diperlukan selama melewati garis
dapat diketahui. Persamaan dalam menghitung kecepatan berdasarkan jumlah frame yang
melewati garis deteksi kecepatan ditunjukkan pada persamaan (2.6) [10].
Kecepatan kendaraan =Jarak x fps
jumlah Frame ditempuh (2.6)
2.9. Kontur
Kontur merupakan keadaan yang ditimbulkan oleh perubahan intensitas pada piksel-
piksel yang bertetangga atau berdekatan satu sama lain [11]. Perubahan intensitas itulah
yang menyebabkan tepi (edges) objek pada citra dapat terdeteksi. Pada dasarnya terdapat
dua jenis kontur, yaitu kontur terbuka yang pada gambar 2.5 dan kontur tertutup yang
ditunjukkan pada gambar 2.6. Kontur tertutup membatasi pinggiran pixel yang
mengelilingi suatu daerah objek, atau dengan kata lain membentuk suatu sirkuit tertutup.
Batas-batas yang mengelilingi suatu daerah objek dapat berguna untuk mendeskripsikan
objek yang dapat digunakan untuk mengenali suatu objek. Tipe kontur yang lain yaitu
kontur terbuka perbedaanya batas batas pixelnya tidak melingkupi seluruh daerah objek.
Representasi kontur dapat berupa daftar notasi tepi (edge list) dengan memperhatikan
batasan pinggiran. Edge list merupakan himpunan berurutan piksel-piksel tepi yang
menjadi batas daerah suatu objek. Teknik yang sering kali digunakan untuk
merepresentasikan kontur dalam bentuk edge list adalah dengan menggunakan kode
rantai[11].
Gambar 2. 5 Kontur terbuka [11] Gambar 2. 6 Kontur tertutup [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Kode rantai merupakan notasi yang digunakan untuk mengkodekan edge list yang
membentuk batas daerah suatu objek. Kode rantai menspesifikasikan arah setiap piksel-
piksel tepi di dalam edge list. Arah yang digunakan adalah 8 arah mata angin ditunjukkan
pada gambar 2.7 [11].
Pengkodean dimulai dari sebuah piksel tepi dan berjalan searah jarum jam. Arah
setiap piksel tepi yang membentuk batas objek dikodekan dengan salah satu dari delapan
kode rantai. Kode rantai merepresentasikan batas objek dengan koordinat piksel tepi
awalan dan diikuti dengan daftar kode rantai berikutnya. Pada gambar 2.8 dan gambar 2.9
adalah contoh pengkodean batas objek dengan menggunakan kode rantai [11].
Gambar 2. 9 Hasil pengkodean [11]
2.10. Model Citra
Secara matematis fungsi intensitas cahaya pada bidang dua dimensi disimbolkan
dengan f(x,y) [11], yaitu:
(x,y) : koordinat pada bidang dua dimensi
f(x,y) : intensitas cahaya (brightness) pada titik (x,y)
Gambar 2.10 memperlihatkan posisi koordinat pada bidang citra. Sistem koordinat yang
diacu adalah sistem koordinat kartesian, yang dalam hal ini sumbu mendatar menyatakan
sumbu-X, dan sumbu tegak menyatakan sumbu-Y.
Gambar 2. 7 Arah kode Rantai [11] Gambar 2. 8 Kode rantai pada objek [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Gambar 2. 10 Cara menentukan kordinat dalam citra [12]
2.11. Digitalisasi Citra
Digitalisasi citra dinyatakan dalam bentuk matrik yang berukuran N x M, N
merupakan baris dan M kolom [12]. Pada gambar 2.11 merupakan suatu kumpulan
representasi citra dalam matrik yang berbentuk kordinat. Kordinat tersebut memiliki nilai
suatu intensitas warna, warna hitam sebagai warna minimal (0) dan warna putih (255)
sebagai warna maksimalnya, sehingga warna antaranya adalah abu-abu, seperti
ditunjukkan pada gambar 2.12 [13].
Gambar 2. 11 Pembentukan Citra dan Matrik Citra [12]
Gambar 2. 12 Nilai matrik yang dihasilkan [13]
2.12. FPS (FRAME PER SECOND) pada video digital
Video dapat didefinisikan sebagai suatu rangkaian citra digital yang tersusun
berdasarkan waktu. Video memiliki 3 dimensi karena dua dimensi yang pertama adalah
baris dan kolom pada setiap citranya, sedangkan dimensi ketiga adalah waktu urutan
framenya. Video juga dapat diartikan sebagai citra digital yang dibaca secara berurutan
dalam suatu waktu dengan kecepatan yang relatif cepat sehingga menimbulkan efek
gambar bergerak [21].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Sebuah citra pada video dikenal sebagai frame. Kecepatan yang digunakan untuk
menggerakkan citra-citra tersebut dinamakan frame rate, dengan satuan frame per second
(FPS). Frame rate menyatakan banyaknya frame yang bergerak tiap detik. Semakin
banyak frame yang bergerak tiap detiknya maka semakin bagus kualitas video. Untuk
memahaminya dengan mudah, kita bisa mengambil contoh dari sebuah film kartun [14].
Film kartun pada hakekatnya adalah beribu-ribu gambar yang diperlihatkan secara cepat,
sehingga kelihatan seperti bergerak. Semakin banyak gambar yang ditampilkan setiap
detiknya untuk membuat gerakan gambar, semakin halus pula kualitas film yang
dihasilkan.
2.13. Rumus Mencari Kecepatan
Untuk menghitung kecepatan suatu objek bergerak maka perlu perumusan untuk
mencari kecepatan [9]. Perumusan tersebut ditunjukkan pada persamaan (2.7)
v =s
t (2.7)
Keterangan
V= kecepatan (m/s)
s = jarak(m)
t = waktu(s)
Untuk mencari kecepatan dari perpindahan benda terhadap selang waktu
dirumuskan pada persamaan (2.8) [9].
v =∆x
∆t=
x2−x1
t2−t1 (2.8)
V = kecepatan (m/s)
∆x = x2 - x1 (m)
∆t = t2 – t1 (s)
2.14. Region Of Interest (ROI)
Sebuah region of interest adalah bagian dari citra yang ingin disaring (filter) untuk
membentuk beberapa operasi terhadapnya [12]. Tujuan dari pemotongan ini adalah untuk
mengambil citra yang diperlukan. Dimensi citra yang dipotong disesuaikan dengan dimensi
dari proses segmentasi atau pengkodean suatu objek. ROI memungkinkan untuk
mengakses bagian tertentu dari sebuah citra untuk diolah secara berbeda. Fitur ini menjadi
sangat penting apabila terdapat bagian area tertentu dari citra yang dianggap lebih penting
dari area lainnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
2.15. Teorema Pythagoras
Teorema Pythagoras merupakan hubungan antara tiga sisi segitiga siku-siku.
Teorema ini dapat ditulis sebagai persamaan yang menghubungkan panjang sisi A, B dan
C seperti persamaan (2.9). Sisi C mewakili panjang sisi miring dan sisi A dan sisi B panjang
dari dua sisi segitiga lainnya dapat dilihat seperti gambar 2.13. Dalam mencari panjang sisi
miring merupakan penjumlahan akar kuadrat sisi A dan B ditunjukkan pada persamaan
(2.10).
A2 + B2 = C2 (2.9)
C = √A2 + B2 (2.10)
Gambar 2. 13 Segitiga siku siku
2.16. Hukum Ohm
Jika sebuah penghantar atau hambatan (resitansi) dilewati oleh sebuah arus. Maka
pada kedua ujung penghantar akan muncul beda potensial. Menurut hukum ohm beda
potensial atau tegangan tersebut berbanding lurus dengan arus yang mengalir melalui
bahan tersebut (Ramdhani M, 2008) secara matematis ditunjukkan pada persamaan (2.11).
V = I. R (2.11)
2.17. Transistor Sebagai Sakelar (Switch)
Salah satu aplikasi transistor dapat digunakan sebagai sakelar atau switch [19].
Transistor akan bertindak sebagai penghubung sakelar tertutup jika tegangan pada terminal
Basis bernilai (Vin > 0,7 V) diberikan diantara terminal basis dan emitor dengan tegangan
kolektor ke emitor akan sama dengan 0V [19], pada keadaan ini transistor berada pada
kondisi saturasi (jenuh) yang artinya arus kolektor akan meningkat dan mendekati
maksimum. Jika tegangan 0 V diterapkan pada input terminal basis transistor beroperasi
sebagai sirkuit terbuka (transistor tidak bekerja) sehingga tidak dapat mengalirkan arus dari
kolektor ke emitor.
Hubungan antara besarnya arus collector (IC), arus basis (IB) yaitu beta (β), beta
merupakan besar penguatan arus DC untuk common emitter [19] ditunjukkan pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
persamaan persamaan (2.12). Selanjutnya dalam menghitung nilai tahanan pada basis
transistor menggunakan persamaan (2.13) dengan mengacu rangkaian pada gambar 2.14.
Gambar 2. 14 Rangkaian Transistor sebagai saklar
β =IC
IB (2.12)
RB =VB−VBE
IB (2.13)
2.18. Motor Universal
Motor universal sesuai dengan namanya adalah salah satu motor listrik yang bekerja
pada sumber tegangan listrik arus bolak-balik (AC) dan pada arus searah (DC) karena
memiliki konstruksi yang sama dengan motor dc seri [23]. Prinsip kerja motor universal
dapat dijelaskan pada gambar 2.15 dimana sumber tegangan bolak-balik membangkitkan
medan magnet bolak-balik pada inti besi stator yang berubah arah sesuai dengan polaritas
sumber tegangan. Pada kumparan rotor mengalir arus dan membangkitkan medan magnet
rotor yang juga berubah sesuai dengan perubahan arah polaritas sumber. Interaksi kedua
medan magnet tersebut menyebabkan timbul gaya gerak yang mengakibatkan rotor
berputar. Pengaturan kecepatan motor universal dapat dilakukan dengan mengatur variabel
tegangan sumber Vs [23]. Dalam pengaturanya dapat menggunakan dimmer.
Gambar 2. 15 Prinsip kerja Motor Universal [23]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Didalam rangkaian dimmer, terdapat 3 komponen penting untuk mengatur kerja
dimmer ini. Komponen TRIAC berfungsi untuk mengatur besaran tegangan AC yang
masuk pada beban. Sementara komponen DIAC dan VR (variabel resistor) berfungsi untuk
mengatur atau mentrigger bias TRIAC guna menentukan titik on dan off pada komponen
TRIAC ini.
Gambar 2. 16 Bentuk tegangan keluaran pada sudut penyulutan 90 derajat [23]
Hasil kerja dimmer ini menyulut tiap belahan gelombang secara bergantian sehingga
menghasilkan bentuk tegangan keluaran pada beban seperti tampak pada gambar 2.16 [23].
Hubungan antara tegangan keluaran efektif dengan sudut fasa penyalaan pada beban motor
universal dapat ditunjukkan pada persamaan (2.14):
Vo = Vefektifxα
180 (2.14)
Vo = tegangan keluaran
Vefektif = tegangan jala jala
α = sudut fasa penyalaan
Selanjutnya hubungan penyulutan sudut TRIAC dengan kecepatan motor dapat
ditunjukkan pada persamaan (2.15) dengan mengacu spesifikasi maksimum putaran motor
yaitu 7000 rpm (Tabel 3.1).
Kecepatan =α
180x 7000rpm (2.15)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
BAB III
PERANCANGAN ALAT
Rancangan perangkat keras dan perangkat lunak :
1. Proses kerja sistem.
2. Rancangan perangkat keras (hardware).
1. Cara kerja konveyor sebagai simulator penggerak bus.
2. Perhitungan kecepatan motor dengan dimmer
3. Penskalaan jarak kamera pada konveyor.
4. Penskalaan bus miniatur dengan ukuran asli
5. Rancangan lampu lalu lintas.
6. Gambaran cara kerja sistem lampu lalu lintas dan lajur busway.
3. Rancangan perangkat lunak (software).
1. Rancangan Diagram Alir Keseluruhan Sistem (flowchart).
2. Perancangan diagram alir subrutin pendeteksian frame bus.
3. Perancangan diagram alir subrutin interupsi pada traffic light.
4. Gambaran cara kerja sistem kamera dalam menangkap objek bus.
5. Gambaran cara kerja siklus waktu nyala lampu lalu lintas.
6. Konsep perhitungan kecepatan bus pada jarak 300m-200m dengan roi-
box dan pengaturan waktu interupsi.
3.1. Proses Kerja Sistem
Pada tahap ini dibuat sistem kendali lampu lalu lintas dengan objek bus yang akan
lewat digunakan konveyor sebagai media geraknya kemudian diolah dengan piranti
Raspberry Pi sebagai deteksi dan pengolah data. Media gerak konveyor tersebut
menggerakkan bus dengan perputaran pada belt konveyor yang dibantu dengan kerja pada
putaran motor universal seri DY 803C. Putaran motor dapat diatur dengan steker dimmer
2000 W agar dapat bervariasi dalam mengatur pergerakan bus. Hasil dari pergerakan bus
itu pada jarak tertentu dideteksi sebagai kedatangan bus oleh pi camera dengan bantuan
piranti perangkat lunak python dan opencv yang terinstall pada Raspberry Pi. Data
kedatangan bus ini akan diolah oleh Raspberry Pi untuk mengatur waktu pergantian lampu
menjadi merah atau tetap merah di jalur jalan lainnya, sehingga waktu bus sampai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
persimpangan lampu jalur bus hijau, dan jalur lain merah. Alur proses pengaturan
ditunjukkan oleh diagram blok sistem pada gambar 3.1.
Gambar 3. 1 Diagram Blok kerja sistem rancangan
3.2. Perancangan Perangkat Keras (Hardware)
3.2.1. Cara kerja Konveyor sebagai Simulator Penggerak Bus
Pada rancangan perangkat keras digunakan konveyor sebagai penggerak bus dan
dideteksi dengan pi camera (Gambar 3.2). Selanjutnya Raspberry Pi mengolah data dan
hasil output digunakan untuk mengatur lampu lalu lintas tersebut.
Gambar 3. 2 Desain Cara kerja Raspberry pi camera dalam mendeteksi bus
Gambar 3.3 merupakan posisi pi camera dengan ketinggian 20 cm dan motor yang terletak
pada ujung tepi konveyor, motor Akan tersambung dengan poros penggerak belt. Gambar
3.4 adalah rangkaian dimmer 2000W untuk mengatur kecepatan motor nya. Gambar 3.5
adalah ukuran pada konveyor untuk simulasi jalur busway dan jalur lainnya dengan
panjang belt konveyor 1,5 m x 2 (3 m). Lebar belt konveyor adalah 40 cm dan lebar jalur
busway adalah 15 cm. Komponen yang dibutuhkan untuk membuat konveyor ditunjukkan
pada Tabel 3.1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
Gambar 3. 3 Letak camera dan motor pada konveyor
Gambar 3. 4 Rangkaian dimmer steker
Gambar 3. 5 Desain Cara kerja konveyor untuk pergerakan bus
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Tabel 3. 1 Komponen dan alat
No Komponen dan alat Jumlah
Komponen
1 Motor Universal mesin jahit seri DY 803C 120W, 220V,
50Hz, maks: 7000rpm.
1
2 Dimmer steker 2000 W, 170-230V AC, VR 220k 1
3 Kain hitam 3.5m x 40cm 1
4 Silinder besi panjang 60 cm diameter 0,8 cm 2
5 Laker diameter 0,8 cm 4
6 Miniatur Bus 2
7 Raspberry pi 3B 1
8 Pi camera V 1.3 1
3.2.2. Perhitungan Kecepatan Motor dengan Dimmer
Penskalaan rentang sudut 0 -180 terhadap variabel resistor 220kΩ yang diketahui
dari spesifikasi rangkaian dimmer (Tabel 3.1) dapat dihitung dengan membandingkan nya.
Perhitungan dapat dirumuskan pada persamaan (3.2) yang didapat dari penjabaran
persamaan (3.1).
180
220.000= 0,818 x 10−3
per 1 (3.1)
R = α
0,818 x 10−3 (3.2)
dari persamaan (3.2), persamaan (2.14), persamaan(2,15) digunakan dalam menghitung
resistansi tiap sudut fasa, nilai tegangan, sudut fasa serta kecepatan. Menggunakan acuan
persamaan (3.2) dalam menghitung pada sudut penyulutan 30 didapat resitansi 36.674 Ω
(persamaan (3.3)). Selanjutanya tegangan output didapat 36,6 V (persamaan (3.4)) yang
nilai tegangan efektif adalah 220 V. Untuk menghitung kecepatan motor didapat 1.166 rpm
(persamaan (3,5)).
R = 30
0,818 x 10−3 = 36.674 Ω (3.3)
Vo = Vefektif(220 V)xα
180= 220 x
30
180= 36,6 V (3.4)
Kecepatan =30
180x 7000rpm = 1.166 rpm (3.5)
Hasil perhitungan yang lain dapat dilihat pada Tabel 3.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Tabel 3. 2 Perhitungan sudut, tegangan dan kecepatan motor
3.2.3. Penskalaan Jarak Kamera pada Konveyor
Pada tahap ini dirancang penskalaan jarak pada konveyor. Pembagian jarak di
konveyor mempertimbangkan panjang konveyor dan posisi jarak pandang kamera.
Pembagian skala ini dapat dilihat pada gambar 3.6. Setiap 100m diwakili 30cm pada jarak
100 m sampai dengan 400 m. Perhitungan untuk menentukan jarak kamera dalam
menangkap objek dapat dihitung menggunakan persamaan (2.10). Perancangan lebar jalur
busway dibuat dengan besar 15cm diikuti dengan pembentukan jarak 100 meter sampai
dengan 400m yang sudah diskalakan tiap 100 m sama dengan 30cm
Gambar 3. 6 Penskalaan jarak pada konveyor
3.2.4. Penskalaan Bus Miniatur dengan Ukuran Asli
Ukuran panjang bus secara nyata pada umumnya adalah 12 m atau 1200 cm [22].
Untuk menentukan penskalaan ukuran miniatur bus diperlukan perhitungan perbandingan
ukuran jarak konveyor yang diskalakan. Perhitungan perbandingan ditunjukkan pada
persamaan (3.6).
30 𝑐𝑚 ∶ 100𝑚 = 30𝑐𝑚 ∶ 10000𝑐𝑚 = 1 ∶ 333,33 (3.6)
Perbandingan jarak 100m yang diskalakan 30cm pada persamaan (3.6) akan
digunakan dalam menghitung panjang miniatur bus. Perhitungan pada persamaan
(3.7) merupakan ukuran panjang yang dibutuhkan untuk membuat miniatur bus.
Sudut
penyulutan
Resitansi
(ohm)
Tegangan
output
(V)
Kecepatan
(rpm)
0 0 0 0
30 36.674 36,6 1.166
45 55.000 55 1.750
90 110.000 110 3.500
120 146.700 146 4.666
180 220.000 220 7.000
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Hasil perhitungan perbandingan panjang bus nyata dengan panjang bus miniatur
ditunjukan pada gambar 3.7.
1
333,33∗ 1200 𝑐𝑚 = 3,6 cm (3.7)
Gambar 3. 7 Penskalaan panjang bus
3.2.5. Rancangan Lampu Lalu Lintas
Dalam simulasi ini, rancangan lampu lalu lintas terdiri dari 4 persimpangan lampu
lalu lintas. Dalam merancang lampu lalu lintas diperhatikan nilai batas maksimum dari
suatu karakteristik Gpio. Menurut sumber dari raspberry foundation [15] Pin GPIO dapat
diberikan beban sampai 50 mA untuk 40 pin dengan aman. Tetapi setiap pin diijinkan arus
16mA, selama total arus semua pin tidak melebihi 50 mA. Untuk mengamankan GPIO
pada Raspberry Pi diperlukan pembatas arus, sekaligus penguat arus tiap pin. Gambar 3.8
adalah rangkaian penguat arus dan transistor sebagai saklar. Dalam perhitungan, LED
dengan spesifikasi 2.2v, arus 16 mA [17] dan sumber tegangan pi 5 v, dengan mengacu
rumus persamaan (2.11) maka nilai hitung tahanan R2 pada persamaan (3.8) adalah sebesar
175 Ω.
R2 =V
I=
5−2.2v
0.016A= 175 Ω ≈ dipasaran 180 Ω (3.8)
Selanjutnya untuk menghitung arus maksimal dengan gain 𝛽 = 100 pada basis transistor
menggunakan persamaan (2.12). Perhitungan arus basis transistor (I(B)) pada persamaan
(3.9) sebesar 0,00016 A.
I(B) =I(C)
β=
0.016A
100= 0,00016A (3.9)
Setelah didapatkan nilai I(B) maka dapat dihitung R1, dengan mengacu persamaan (2.13)
dan dari spesifikasi data sheet [15] tegangan pin GPIO 3.3 V kemudian dikurangkan
dengan tegangan bias 0.7 V menjadi 2.6 V. Perhitungan tahanan R1 dihasilkan sebesar
16.250 Ω ditunjukkan pada persamaan (3.10).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
R1 =VB−Vbe
I=
3,3v−0,7v
0.00016A=
2,6v
0.00016A= 16.250Ω ≈ dipasaran 15kΩ + 1kΩ (3.10)
Hasil perhitungan tadi disimulasikan dengan Proteus 8.6 menghasilkan gambar 3.8.
Gambar 3. 8 Simulasi perhitungan Pin GPIO
Tabel 3. 3 Pin GPIO dan LED
No Pin yang digunakan LED dan keterangannya
1 GPIO 2 , pin 3 LED merah (Lampu B)
2 GPIO 3, pin 5 LED kuning (Lampu B)
3 GPIO 4, pin 7 LED hijau (Lampu B)
4 GPIO 17, pin 11 LED merah (Lampu C)
5 GPIO 27, pin 13 LED kuning (Lampu C)
6 GPIO 22, pin 15 LED hijau (Lampu C)
7 GPIO 10, pin19 LED merah (Lampu A)
8 GPIO 9, pin 21 LED kuning (Lampu A)
9 GPIO 11, pin23 LED hijau (Lampu A)
10 GPIO 5, pin29 LED merah (Lampu D)
11 GPIO 6, pin 31 LED kuning (Lampu D)
12 GPIO 13, pin33 LED hijau (Lampu D)
13 Pin 2 Vcc 5v
14 Pin 9 GND
Tabel 3.3 dan Tabel 3.4 merupakan daftar pin yang digunakan serta daftar komponen
penyusun lampu lalu lintas. Wiring dapat dilihat pada gambar 3.9, lalu rancangan PCB
dapat dilihat pada gambar 3.10.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
Tabel 3. 4 Komponen dan alat penyusun lampu lalu lintas
No List komponen Penyusun
Lampu Lalu Lintas
Jumlah Komponen
1 LED merah 4
2 LED kuning 4
3 LED hijau 4
4 Pin head male 1 (ukuran 1x40)
5 Kabel jumper female-female 18
6 Kabel jumper male-male 18
7 Transistor BC547 12
8 Kabel jumper kawat 3 meter
Gambar 3. 9 Wiring LED ke GPIO
Gambar 3. 10 Desain PCB tampak atas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
3.2.6. Gambaran Cara Kerja Sistem Lampu Lalu Lintas dan lajur
Busway
Desain lampu lalu lintas seperti pada gambar 3.11 dengan jalur busway searah. Arah
bus berasal dari arah Lampu A ke Lampu C melalui 4 persimpangan. Daerah jarak deteksi
bus untuk mengetahui kecepatan pada jarak 300m ke 200m. Posisi kamera terletak pada
ujung jalur busway.
Gambar 3. 11 Persimpangan dan lampu lalu lintas
3.3. Rancangan Perangkat Lunak (Software)
3.3.1. Rancangan Diagram Alir Keseluruhan Sistem (Flowchart)
Rancangan diagram alir keseluruhan sistem merupakan cara kerja keseluruhan
perangkat lunak dalam mendeteksi bus pada jalur busway dan mengatur lampu lalu lintas
tiap simpang. Diagram alir (flowchart) secara keseluruhan sistem seperti gambar 3.12.
Penggunaan pada perangkat lunak ini diprogram menggunakan opencv yang kemudian di
import ke python sehingga saat Raspberry Pi camera mengcapture dan mendeteksi frame
bus. Kemudian kecepatan bus dideteksi dan output yang dihasilkan digunakan untuk
mengontrol jalannya lampu lalu lintas untuk waktu interupsi. Selesai interupsi siklus lampu
APILL kembali normal dan Pi camera dapat diposisikan kembali untuk mengcaptured bus.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Gambar 3. 12 Flowchart keseluruhan sistem
3.3.2. Perancangan Diagram Alir Subrutin Pendeteksian Frame Bus
Tahap ini merupakan skema program yang akan dibuat dari subrutin “mendeteksi
frame bus“ flowchart pada gambar 3.12. Skema program ini dibuat dengan memperhatikan
syntax dan fungsi - fungsi yang ada di opencv. Gambar 3.13 merupakan diagram alir
pendeteksian objek dengan mencari frame bus.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Gambar 3. 13 Flowchart subrutin deteksi frame bus
Pencarian frame bus dilakukan dengan mengurangkan latar depan (foreground) dengan
background tetap. Hasil pengurangan objek tersebut di ubah ke citra biner (threshold).
Untuk menemukan objek digunakan deteksi tepi atau deteksi kontur. Setelah objek kontur
ditemukan dibentuklah boundingbox yang sebesar frame bus. Boundingbox terbentuk
kemudian dapat dibentuk titik centroid pada frame bus.
3.3.3. Perancangan Diagram Alir Subrutin Interupsi Pada Traffic light
Gambar 3.14 merupakan diagram alir subrutin interupsi pada traffic light. Proses
interupsi pada traffic light dengan mencari waktu kedatangan bus berdasarkan kecepatan
bus yang terdeteksi. Waktu kedatangan bus digunakan sebagai timer. Ketika timer habis
maka akan menyalakan lampu hijau untuk jalur bus.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Gambar 3. 14 Flowchart subrutin hitung waktu kedatangan bus dan melakukan
interupsi traffic light
3.3.4. Gambaran Cara Kerja Sistem Kamera dalam Menangkap Objek
Bus
Pada tahap ini dirancang suatu kerja sistem kamera dalam menangkap objek bus.
Cara kerja menangkap objek adalah menggunakan background subtraction menghitung
latar depan (foreground) melakukan pengurangan antara frame saat ini dengan background
model (tetap). Hasil pengurangan tadi kemudian di threshold dan menghasilkan nilai citra
biner (0) pada background serta (1) pada foreground. Citra biner digunakan untuk deteksi
tepi dan membentuk kontur seperti gambar 3.15.
Pendeteksian kontur bus disaat melewati checkpoint dimulai dari jarak ke 300m dan
200m. Pada jarak 300 ke 200 akan dilakukan pendeteksian kecepatan bus. Checkpoint
ditentukan dari suatu titik centroid (titik tengah) yang dibuat dari sebuah kotak sebesar
frame bus (bounding box). Dalam mencari titik centroid dapat digunakan persamaan (2.3)
dan (2.4).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Gambar 3. 15 Kamera mendeteksi objek
3.3.5. Gambaran Cara Kerja Siklus Waktu Nyala Lampu Lalu Lintas
Pada tahap ini dibuat sistem penyalaan lampu lalu lintas gambar 3.16 merupakan
suatu siklus Cw (clock wise). Waktu nyala lampu hijau secara bergantian dan berurutan
dari Lampu A sampai dengan lampu Lampu D.
Gambar 3. 16 Siklus Lampu lalu lintas
Ketika bus terdeteksi pada lajur busway di jalur A maka akan ada interupsi pada semua
lampu lalu lintas A, B, C, D. Transisi pergantian nyala lampu setiap simpang dengan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
menyalakan lampu kuning selama 1 detik kemudian menyalakan lampu merah selama 1
detik. Setelah transisi pergantian nyala lampu setiap simpang selesai kemudian menyalakan
lampu hijau pada traffic light jalur A selama 10 detik dan diikuti nyala lampu merah pada
simpang B, C, D selama 10 detik. Siklus akan kembali normal ketika waktu hijau di Lampu
A sudah tepenuhi yaitu 10 detik. Selanjutnya siklus lampu lalu lintas akan kembali normal
dengan urutan cw (clock wise) dengan kondisi kembali waktu hijau terakhir pada simpang
tertentu. Pengaturan waktu nyala traffic light bisa diatur sesuai kebutuhan lapangan.
3.3.6. Konsep Perhitungan Kecepatan Bus Pada Jarak 300m-200m
dengan ROI-box dan Pengaturan Waktu Interupsi
Perhitungan kecepatan objek dilakukan dengan cara menghitung jumlah frame
dimana bus berada di dalam kotak ROI. Hitungan frame akan mulai bertambah segera
setelah titik centroid dari kendaraan masuk ke dalam kotak ROI dan akan berhenti ketika
kendaraan keluar dari kotak ROI. Gambar 3.17 merupakan suatu kerja objek bus yang
memasuki ROI yang akan dibuat pada jarak 300 menuju 200 m.
Gambar 3. 17 Cara kerja bus memasuki ROI-box
Dalam menghitung kecepatan menggunakan persamaan rumus (2.4). Misal
diketahui Fps (Frame per detik) bernilai 30, jarak bounding box 100 m, jumlah frame yang
dibutuhkan sebanyak 300 frame. Kecepatan didapat 10 m/s ditunjukkan perhitungan pada
persamaan (3.11).
Kecepatan =jarak x fps
Frame =
100 x 30
300= 10 m/s (3.11)
Hasil perhitungan kecepatan digunakan untuk menentukan waktu tiba kedatangan bus
menuju ke traffic light (200m). Hasil perhitungan waktu tersebut dikurangi 3 detik sebelum
bus sampai ke traffic light, untuk memberikan toleransi waktu bus untuk melintas traffic
light. Dengan demikian, waktu nyala lampu merah pada simpang lain akan diberi waktu 3
detik ditambah 2 detik menjadi 5 detik. Waktu 2 detik ini untuk memberi transisi waktu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
nyala lampu dari hijau, kuning, ke merah untuk jalur yang menyala lampu hijau. Untuk
jalur yang merah tetap merah. Program waktu ini bisa diubah sesuai kondisi di lapangan.
Perhitungan waktu terhadap kedatangan bus untuk jalur B, C, dan D untuk lampu menjadi
merah, menggunakan persamaan (2.5) maka didapat:
waktu kedatangan bus =s
v− 5 =
200
10− 5 = 15 detik. (3.12)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
BAB IV
Hasil dan Pembahasan
Implementasi dari hasil perancangan yang telah dibuat serta hasil percobaan dan
pembahasan mengenai kesesuaian perancangan dengan implementasi.
4.1. Perubahan Rancangan
Perubahan rancangan merupakan penyesuaian terhadap uji coba pada penelitian ini.
Beberapa perubahan rancangan antara lain sebagai berikut:
4.1.1. Tambahan Rancangan Puli Terhadap Putaran Motor Pada
Konveyor
Skala yang digunakan adalah 3 : 1000, jadi setiap 1 cm pada konveyor mewakili
3,33 m. Untuk kecepatan 10 m/detik diwakili dengan 3 cm/detik, sehingga putaran as pada
konveyor putaran lambat. Spesifikasi Motor Sinkron yang digunakan pada rpm rendah
tidak memiliki tenaga dan tidak stabil. Jadi digunakan pelambat putaran berupa Puli yang
akan memberikan tenaga untuk memutar konveyor. Perhitungan transmisi putaran dari
motor ke as konveyor ditunjukkan pada pesamaan (4.1) sampai dengan (4.3) pengukuran
diameter puli motor 0,82cm, diameter puli 32,54 cm, diameter as konveyor 1,94 cm:
1 putaran puli konveyor =Diameter puli
Diameter puli motor =
32,54cm
0,82 cm= 39,68 putaran puli motor (4.1)
1 putaran as konveyor = 1,94 x π = 6,09 cm (4.2)
1 putaran as konveyor = 1 putaran puli konveyor (4.3)
Hasil perhitungan putaran motor digunakan untuk menghitung kecepatan konveyor dalam
1cm/ second. Digunakan persamaan (4.4) dan persamaan (4.5) dihasilkan 6,72 putaran /
second atau 403,34 rpm.
kecepatan konveyor 1cm /s = 1cm /s
6,09x 39,68 = 6,51 rps (4.4)
kecepatan konveyor 1cm /s = 6,51 x 60 = 391, 01 rpm (4.5)
4.1.2. Rancangan Penyangga dan Posisi Pi camera
Penempatan posisi pi camera diletakkan di ujung tepi conveyor dengan ketinggian
yang ditunjukkan pada gambar 4.1. Penyesuaian tersebut didasarkan dengan ideal posisi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
jalur busway agar memiliki latar belakang (background) tetap. Pengaturan ketinggian pi
camera dari belt konveyor adalah 30 cm ditunjukkan pada gambar 4.2.
Gambar 4. 1 Posisi pi camera
Gambar 4. 2 Ketinggian pi camera
4.1.3. Penggunaan Miniatur Bus
Pendeteksian objek miniatur bus digunakan dengan panjang 12cm. Tujuan dari
penggunaan panjang 12 cm ini supaya perbedaan objek bus dan objek miniatur yang lain
seperti mobil dapat dibedakan saat berada di jalur busway. Sebuah ilustrasi miniatur objek
kendaraan bus panjang 12 cm, bus panjang 3,6 cm dan mobil pada jarak 80cm (1 keramik
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
40cm) dapat ditunjukkan pada gambar 4.3. Pada gambar 4.3 tersebut bentuk ukuran objek
bus dengan panjang 3,6 cm memiliki ukuran yang sama dengan miniatur mobil.
Gambar 4. 3 Objek-objek kendaraan miniatur
4.2. Implementasi Hardware
Perangkat keras atau hardware berupa prototype yang dibuat untuk pendeteksian
suatu bus dalam jalur busway terdiri dari beberapa komponen yaitu pi camera, raspberry
pi, rangkaian lampu LED pada perempatan lampu lalu lintas, konveyor, motor DY 803C,
Puli. Keterangan komponen penyusun suatu perempatan lampu lalu lintas dalam
memprioritaskan bus pada jalur busway dapat dilihat pada tabel 4.1 dengan mengacu
nomor yang ditandai pada gambar 4.4.
Tabel 4. 1 Keterangan penyusun komponen hardware
Nomer Keterangan
1 Perempatan lampu lalu lintas
2 Posisi Pi camera
3 Puli
4 Jalur busway dengan lebar 15 cm
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
Gambar 4. 4 Implementasi Hardware Perempatan lampu lalu lintas pada jalur busway
Rancangan ukuran objek kerangka konveyor 160cm x 60cm ditunjukkan pada gambar 4.4.
Nomor yang ditandai pada gambar 4.4 adalah letak komponen penyusun suatu bus pada
jalur busway ketika melewati perempatan lampu lalu lintas. Pergerakan belt pada konveyor
digunakan puli dengan diameter 32,54 cm ditunjukkan pada gambar 4.5. Penggunaan puli
ini bertujuan agar dapat menyeimbangkan putaran pada puli motor yang relatif cepat. Dari
perhitungan perbandingan puli pada persamaan (4.5) ini didapat untuk putaran 1cm/s setara
dengan 391,91 rpm.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Gambar 4. 5 Diameter Puli Pada Konveyor dan Motor
4.3. Pengujian Alat
Pengujian alat ini merupakan rangkaian jalannya suatu sistem kerja pendeteksian
kecepatan bus pada jarak 300m sampai dengan 200m dijalur busway. Kecepatan bus yang
terdeteksi digunakan untuk memberi waktu interupsi lampu lalu lintas tiap simpang agar
kedatangan bus mendapat prioritas hijau. Media gerak bus digunakan konveyor yang diatur
kecepatannya dengan rangkaian steker dimmer 2000 Watt. Tahapan dan hasil yang
dilakukan dalam proses pengujian alat antara lain sebagai berikut:
4.3.1. Menentukan Panjang Jarak tiap 100m Dalam Skala 30cm
Pengukuran jarak dari ujung konveyor ke titik nol padan pi camera digunakan
meteran seperti ditunjukkan pada gambar 4.6 dengan panjang 120 cm. Dari gambar 4.6
tersebut dibuatlah penanda berupa garis per 30 cm dengan panjang garis 15 cm ditunjukkan
gambar 4.7. Selanjutnya pencocokan jarak dengan kordinat pixel dilakukan capture
menggunakan pi camera. Hasil captured disimpan dan diolah dengan aplikasi paint untuk
mencari titik kordinat pixel garis tersebut seperti ditunjukkan pada gambar 4.8. Kordinat
pixel dapat ditunjukkan pada tabel 4.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
Gambar 4. 6 Pengukuran jarak dengan meteran
Gambar 4. 7 Pemberian tanda jarak konveyor
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Gambar 4. 8 Mencari kordinat pixel dengan memberikan titik
Tabel 4. 2 Kordinat pixel
No Jarak (m) Kordinat pixel (x,y)
1 100 (31,365) , (166,422)
2 200 (227,257) , (326,284)
3 300 (321,207) , (408,224)
4 400 (378,174) , (448,183)
4.3.2. Pengujian Nyala Lampu APILL Siklus Normal
Tahap ini merupakan pengujian nyala lampu APILL pada jalannya perangkat
hardware dan software. Hasil pengujian perangkat hardware pada nyala lampu APILL
dapat dilihat pada gambar 4.9 sampai dengan gambar 4.16 dengan urutan 1 siklus lampu
APILL dari nyala hijau A sampai dengan nyala hijau D. Hasil jalan software dalam 1 siklus
nyala lampu APILL dapat dilihat pada gambar 4.17 dengan urutan sama seperti pada
perangkat hardware. Perancangan penyalaan lampu siklus normal disesuaikan dengan
siklus nyala lampu APILL pada gambar 3.16. Waktu pengaturan nyala lampu APILL pada
siklus normal lampu hijau adalah 5 detik dan lampu kuning selama 2 detik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 4. 9 Nyala lampu APILL Hijau A
Gambar 4. 10 Nyala lampu APILL Kuning A
Gambar 4. 11 Nyala lampu APILL Hijau B
Gambar 4. 12 Nyala lampu APILL Kuning B
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Gambar 4. 13 Nyala lampu APILL Hijau C
Gambar 4. 14 Nyala lampu APILL Kuning C
Gambar 4. 15 Nyala lampu APILL Hijau D
Gambar 4. 16 Nyala lampu APILL Kuning D
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Gambar 4. 17 Tampilan command window python siklus normal APILL
4.3.3. Nyala Lampu APILL disaat Interupsi
Cara kerja nyala lampu APILL dissat interupsi dapat dilihat pada gambar 4.18,
gambar 4.19, dan gambar 4.20. Gambar 4.18 adalah pengaturan transisi nyala lampu merah
dengan menyalakan lampu kuning selama 1 detik. Setelah lampu kuning menyala selama
1 detik maka tiap simpang akan merah selama 1 detik dapat dilihat gambar 4.19. Lampu
merah pada jalur A setalah menyala selama 1 detik kemudian akan hijau selama 10 detik
dapat dilihat pada gambar 4.20.
Gambar 4. 18 Lampu APILL kuning tiap simpang ketika interupsi
Gambar 4. 19 Tiap simpang lampu APILL menyala merah ketika interupsi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Gambar 4. 20 Lampu APILL Jalur A hijau ketika interupsi
4.3.4. Menentukan Luas objek bus Pada Area 300m – 200m
Pendeteksian sebuah bus dilakukan dengan cara mencari luasannya. Luasan objek
bus ini berupa pixel dan akan digunakan sebagai parameter suatu pembanding dengan
kendaraan lain seperti mobil. Luasan bus didapat ketika memasuki area 300 m sampai
keluar dari 200 m. Pada gambar 4.21 dan gambar 4.22 merupakan hasil dari pendeteksian
suatu ukuran luasan bus. Luasan bus yang terdeteksi saat memasuki pada jarak 300 m
adalah 513 pixel dan bus saat keluar dari jarak 200 m adalah 1238 pixel. Tampilan jarak
pada citra suatu pendeteksian bus tersebut dibentuk dari titik kordinat pixel yang ditunjukan
pada tabel 4.2. Pada pengaturan sub program (gambar 4.48) deteksi luasan bus diberi
batasan 1870 pixel agar saat keluar dari area 200 m pergerakan bus masih dapat terlihat.
Gambar 4. 21 Luasan bus saat melewati jarak 300 m
Gambar 4. 22 Luasan bus melewati jarak 200 m
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
4.3.5. Deteksi Frame Rata-Rata dengan Kemampuan Pi camera 30 FPS
Deteksi frame rata rata adalah untuk menentukan kemampuan pi camera dalam
mendeteksi pergerakan frame bus. Pergerakan frame bus dideteksi dengan menghitung
jumlah frame yang melewati area pada jarak 300 m menuju 200 m. Frame bus ditandai
dengan titik centroid pada objek bus agar dapat dihitung jumlah frame selama bergerak.
Setelah titik tengah keluar dari area pada jarak 300 m menuju 200 m maka jumlah frame
telah terhitung.
Pengujian dalam mencari frame dengan mengatur kecepatan motor dengan dimmer
menggunakan skala 3,4 ditunjukkan pada gambar 4.23. Waktu yang ditempuh bus diukur
dengan stopwatch. Pengukuran waktu tempuh bus digunakan untuk menghitung
kemampuan rata rata fps pi camera disaat menangkap pergerakan bus di area jarak 300 m
menuju 200 m. Perhitungan frame bus dibagi dengan waktu untuk menghitung fps.
Gambar 4. 23 Pengaturan dimmer untuk menghitung jumlah frame
Pengukuran waktu menggunakan stopwatch dengan cara mengukur waktu
perpindahan titik centroid suatu bus saat memasuki area pada jarak 300 m dan keluar dari
area pada jarak 200 m. Pengukuran waktu menggunakan stopwatch ini dilakukan
bersamaan dengan jalannya software dan hardware. Waktu stopwatch pada gambar 4.24
merupakan waktu tempuh bus ketika titik centroid bus keluar dari area pada jarak 300 m
menuju 200 m. Hasil pengukuran menggunakan stopwatch didapat waktu 2,96 detik dapat
dilihat pada gambar 4.24. Selama waktu 2,96 detik frame terhitung pada software python
dengan jumlah 6 frame. Perhitungan 6 frame didapat dari pembacaan data frame di
command window python yang ditunjukkan pada gambar 4.25. Data frame pada gambar
4.25 berupa array dapat dihitung dengan cara pengurangan nilai angka maksimum pada
array lalu dikurangkan dengan nilai angka minimum pada array. Perhitungan frame pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
data array dapat dituliskan pada persamaan (4.6). Setelah frame dan waktu tempuh
diketahui maka perhitungan fps dapat dihitung menggunakan persamaan (4.7).
𝐹𝑟𝑎𝑚𝑒 terdeteksi = 91 − 85 = 6 𝑓𝑟𝑎𝑚𝑒 (4.6)
Fps 𝑝𝑖 𝑐𝑎𝑚𝑒𝑟𝑎 =6 𝑓𝑟𝑎𝑚𝑒
2,96 𝑑𝑒𝑡𝑖𝑘= 2 𝑓𝑝𝑠 (4.7)
Gambar 4. 24 Perhitungan waktu tempuh bus dengan stopwatch
Gambar 4. 25 Data frame terdeteksi
Pengukuran fps pada pi camera dilakukan 4 kali percobaan dengan putaran dimmer
secara acak yaitu pada skala 2,1 , 2,5 , 3,0 dan 3,4. Pengukuran fps ini didapat dengan rata
rata 2 fps ditunjukkan pada persamaan (4.8) berdasarkan tabel 4.3. Perhitungan fps
digunakan persamaan (4.7).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Tabel 4. 3 Perhitungan rata-rata FPS pi camera
Skala
dimmer
Frame
terdeteksi
(frame)
Waktu
pada
stopwatch
(detik)
Fps
(frame /
second)
2,1 56 26,5 2,11
2,5 14 6,9 2,02
3 12 6,1 1,96
3,4 6 2,96 2,02
Rata rata Fps =∑ jumlah nilai fps
∑ Jumlah data=
8,11
4= 2 fps (4.8)
4.3.6. Hasil Pengujian Kecepatan Untuk Bus Tunggal Pada Area Deteksi
300 m-200 m
Pengujian kecepatan tunggal di gunakan skala dimmer 2,3 disesuaikan dengan skala
dimmer pada gambar 4.23. Pada gambar 4.26 bus setelah melewati area 300 m ke 200 m
terdeteksi kecepatannya 11,11 m/s. Kecepatan bus didapat dengan menghitung jumlah
framenya. Jumlah frame terdeteksi adalah 18 frame pada gambar 4.27. Perhitungan
kecepatan bus digunakan persamaan (2.4). Hasil perhitungan dapat dilihat pada persamaan
(4.9) dengan hasil 11,11 m/s.
Kecepatan =jarak x fps
Frame =
100 x 2
18= 11,11 m/s (4.9)
Gambar 4. 26 Kecepatan bus tunggal
Gambar 4. 27 Data frame bus tunggal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Setelah kecepatan terdeteksi dapat dihitung waktu interupsinya. Waktu interupsinya
didapat 13 detik (persamaan 4.10) dan digunakan untuk pengaturan waktu nyala merah
setiap simpang disaat kedatangan bus mendekati perempatan Lampu APILL.
waktu kedatangan bus =s
v− 5 =
200
11,11− 5 = 13 detik. (4.10)
Gambar 4. 28 Jalannya command window Bus tunggal
Waktu interupsi 13 detik digunakan untuk menyalakan timer. Jalannya timer ditampilkan
command window python ditunjukkan pada gambar 4.28, waktu timer habis maka lampu
kuning akan menyala 1 detik (gambar 4.18). Kemudian memerahkan semua lampu merah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
selama 1 detik (gambar 4.19). Waktu nyala lampu hijau di lajur A ditunjukkan pada gambar
4.29.
Gambar 4. 29 Lampu APILL nyala hijau di lajur A pada bus tunggal
4.3.7. Hasil Pengujian Penambahan Waktu interupsi Terhadap Bus
Pertama Beriringan Bus Kedua dengan Jarak sekitar 100m
Pengujian kecepatan kedua bus beriringan digunakan skala dimmer 3 disesuaikan
dengan skala dimmer pada gambar 4.23. Pada gambar 4.30 bus pertama terdeteksi
kecepatannya yaitu 18.18 m/s, kemudian bus kedua juga terdeteksi dengan kecepatan 16,67
m/s (gambar 4.31). Frame terdeteksi pada bus pertama 11 frame (gambar 4.32) dan bus
kedua 12 (gambar 4.33) frame.
Gambar 4. 30 Kecepatan bus pertama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Gambar 4. 31 Kecepatan bus kedua
Gambar 4. 32 Data frame bus pertama
Gambar 4. 33 Data frame bus kedua
Gambar 4. 34 Jalannya command window bus ganda
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Perhitungan kecepatan bus pertama dan kedua dari data jumlah frame dapat dilihat
pada persamaan (4,11) dan persamaan (4.12). Pengaturan waktu interupsi pada kedua bus
yang beriringan ini berdasarkan waktu kedatangan bus pertama. Waktu perhitungan
kedatangan bus pertama dapat dilihat pada persamaan (4.13). Pada terdeteksinya bus kedua
ini, akan menambah lama waktu hijau 11,99 detik (gambar 4.34), sehingga bus kedua tetap
mendapati lampu hijau dapat dilihat gambar 4.35. Penambahan waktu bus kedua dihitung
tanpa pengurangan 5 detik (persamaan (4.14)) dikarenakan tidak memerlukan waktu
transisi lampu tiap simpang APILL hanya perlu menambah nyala lampu hijau pada jalur
A.
Kecepatan bus pertama =jarak x fps
Frame =
100 x 2
11= 18,18 m/s (4.11)
Kecepatan bus kedua =jarak x fps
Frame =
100 x 2
12= 16,67 m/s (4.12)
waktu kedatangan bus pertama =s
v− 5 =
200
18,18− 5 = 6 detik (4.13)
penambahan waktu hijau bus kedua =s
v=
200
16,67 = 11,99 detik (4.14)
Gambar 4.34 menunjukkan timer tetap jalan pada bus kedua dikarenakan waktu pada timer
diperbarui dengan waktu kedatangan bus kedua. Timer berjalan tanpa mengganggu
nyalanya lampu hijau pada jalur A dan menambah waktu nyala 11,99 detik.
Gambar 4. 35 Tambahan waktu pada bus kedua
4.3.8. Hasil Pengujian Waktu interupsi Terhadap Kedatangan Bus dan
Mobil
Pengujian kecepatan bus beriringan dengan mobil digunakan skala dimmer 3
disesuaikan dengan skala dimmer pada gambar 4.23. Pada gambar 4.37 merupakan jumlah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
frame bus terdeteksi sebanyak 12 frame dan dihasilkan kecepatan bus yaitu 16,67 m/s.
Perhitungan kecepatan bus ini sama dengan perhitungan kecepatan bus pada persamaan
(4.12).
Gambar 4. 36 Kecepatan Bus beriringan dengan mobil
Gambar 4. 37 Data frame kecepatan bus beriringan dengan mobil
Gambar 4. 38 command window pada bus beriringan dengan mobil
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Pergerakan bus yang beriringan dengan mobil dapat dilihat pada gambar 4.36.
Mobil pada gambar 4.36 tidak terdeteksi pada area deteksi kecepatan karena luasan mobil
kurang dari 500 pixel sehingga waktu nyala lampu APLL hijau A tidak mengalami
penambahan. Waktu bus mendapati lampu hijau dijalur A ditunjukkan pada gambar 4.39
sedangkan mobil mendapati lampu Merah ditunjukkan pada gambar 4.40. Jalannya timer
ditunjukkan pada command shell python pada gambar 4.38 dengan waktu timernya adalah
7 detik.
Gambar 4. 39 Nyala hijau bus beriringan dengan mobil
Gambar 4. 40 Mobil terkena lampu merah
4.3.9. Kecepatan Terdeteksi dengan Pengaturan Dimmer
Pengaturan kecepatan motor dengan dimmer dapat menghasilkan kecepatan yang
bervariasi. Kecepatan yang dihasilkan dari putaran dimmer dari skala 2,1 sampai dengan
4,0 ditunjukkan pada tabel 4.4.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Tabel 4. 4 Data kecepatan GUI dan kecepatan hitungan
Data pada percobaan tabel 4.4 pada perhitungan kecepatan terhadap perubahan
putaran skala dimmer didapat dengan menggunakan persamaan (2.7) yang diketahui jarak
deteksi bus adalah 100 meter. Misal perhitungan diambil contoh pada data skala dimmer
yaitu 2,1 waktu ukur dengan stopwatch 26,5 detik maka perhitungannya ditunjukkan pada
persamaan (4.15).
kecepatan bus =s
t=
100
26,5 = 3,77 m/s (4.15)
Perumusan pada persamaan (4.15) dapat digunakan untuk menghitung data
kecepatan bus yang lain pada tabel 4.4.
Pengukuran kecepatan bus yang bervariasi ini juga menghasilkan perubahan
tegangan yang bervariasi terhadap putaran motor ditunjukkan pada tabel 4.4. Perubahan
bervariasi ini disebabkan oleh perubahan putaran skala pada dimmer. Hasil pada perubahan
skala dimmer kecepatan bus menjadi bervariasi dari kecepatan terdeteksi pada GUI yaitu
3,57 m/s sampai dengan 50 m/s dan nilai tegangan dari 41,1 V sampai dengan 100 V. Cara
pengukuran tegangan terhadap perubahan skala dimmer digunakan multimeter. Gambar
4.41 merupakan suatu cara pengukuran tegangan. Variasi perubahan deteksi kecepatan juga
membuat waktu interupsi bervariasi. Batas waktu interupsi diberikan pada bus pada
kecepatan tertinggi yaitu 33,33 m/s dengan waktu timernya adalah 1 detik ditunjukkan pada
tabel 4.4. Ketika timer habis akan menyalakan lampu APILL setiap simpang dari nyala
Dimmer
(skala
dimmer
)
Tega
ngan
(Volt
)
Kecep
atan
Gui
(m/s)
Waktu
timer
kedatan
gan bus
(detik)
Frame
bus
(frame)
Waktu
diukur
dengan
stopwat
ch
(detik)
Perhitu
ngan
kecepa
tan
(m/s)
Galat
(%)
2,1 41,1 3,57 51 56 26,5 3,77 5
2,2 50,5 9,52 16 21 10,16 9,84 3,2
2,3 60 11,76 12 17 8,32 12,01 2
2,4 63,8 12,50 11 16 8,20 12,19 2,5
2,5 65 14,29 9 13 6,9 14,49 1,3
3 70 16,67 7 12 6,1 16,39 1,7
3,1 75 22,22 4 9 4,70 21,27 4,4
3,2 80 25 3 8 4,27 23,41 6
3,3 85 28,57 2 7 3,46 28,90 1,1
3,4 90 33,33 1 6 2,96 33,78 1,3
3,5 95 40 0 5 2,32 43,10 7
4,0 100 50 0 4 1,86 53,76 7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
lampu kuning, merah dan hijau pada jalur busway. Ketika 3 detik lagi bus sampai di
perempatan lampu APILL sudah mendapati lampu hijau dapat dilihat pada perancangan
(3.3.6). Pada kecepatan 40 m/s dan 50 m/s waktu timer tidak aktif dan interupsi tidak terjadi
ditunjukkan pada persamaan (4.16) dan persamaan (4.17).
waktu kedatangan bus (40m /s) =s
v− 5 =
200
40− 5 = 0 detik (4.16)
waktu kedatangan bus (50m /s) =s
v− 5 =
200
50− 5 = −1 detik (tidak ada) (4.17)
Galat rata - rata pada kecepatan bus dapat dihitung dari data percobaan pada tabel 4.4 dan
didapat dengan persamaan (4.18) adalah 3,54%. Perhitungan persentase galat ini dihitung
berdasarkan dari perbedaan selisih antara kecepatan GUI dan kecepatan perhitungan
menggunakan stoptwach.
Rata − rata Galat kecepatan =∑ jumlah galat
∑ Jumlah data=
42.48
12= 3,54 % (4.18)
Gambar 4. 41 Cara pengukuran tegangan pada skala dimmer 2,1
4.4. Implementasi Software
Implementasi software merupakan suatu bagian yang dibuat untuk mengatur kerja
pi camera dalam pengolahan citra video dan pengendalian nyala lampu lalu lintas
perempatan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
4.4.1. Inisialisasi Program
Inisialisasi program merupakan pemanggilan library yang fungsi dalam library
tersebut akan digunakan. Library yang digunakan dalam program ini, yaitu cv2, threading,
time, numpy, shapely. Inisialisasi program ditunjukkan pada gambar 4.42. “Gpio”
berfungsi untuk mengatur pin nyala led. “Cv2” berfungsi untuk pengolahan citra.
“Threading” berfungsi untuk menjalankan beberapa script secara bersamaan. “Timer”
berfungsi untuk pengaturan nyala lampu lalu lintas dalam kondisi siklus normal maupun
pada saat interupsi. “Numpy” berfungsi untuk melakukan eksekusi terhadap matriks yang
ada pada citra itu sendiri. “Shapely” berfungsi untuk membentuk suatu bangun geometri
yang nantinya digunakan untuk deteksi objek bus.
Gambar 4. 42 Library yang digunakan
4.4.2. Menjalankan Beberapa Script Secara Bersamaan
Dalam menjalankan beberapa script secara bersamaan dapat menggunakan fungsi
threading dari python. Cara penggunaannya dengan cara mengelompokkan script program
menjadi fungsi. Script yang dikelompokkan antara lain “kamera”,”lampuapill” dan
“interupsitimer”. Kumpulan fungsi dijalankan dengan “Thread” tersebut dapat dilihat pada
gambar 4.43.
Gambar 4. 43 Menjalankan script beberapa program
4.4.3. Pengolahan Citra Untuk Pendeteksian Bus
Bagian ini menjelaskan tentang program yang mengendalikan proses pengolahan
citra pada video pi camera. Pada tahap ini proses deklarasi program pada script “kamera”
bertujuan untuk mengolah citra dengan cara mengatur variabel dan parameter fungsi.
Selanjutnya pengaturan resolusi pi camera dan fps juga diperlukan dengan perintah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
“cap.set“. Untuk variabel “subtractor” digunakan dalam mendeteksi suatu kontur objek
yang bergerak dengan perintah “cv2.createBackgroundSubtractorMOG2( )”. Untuk
variabel “fcount” merupakan variabel counter yang digunakan untuk menghitung jumlah
frame bus. Variabel yang lain yaitu “d”,”mm”,”m”,”r” dideklarasikan secara global agar
dapat diakses antar script program yang lain. Pendeklarasian pada script citra tersebut
digunakan sebagai proses eksekusi program secara terus menerus (looping). Berikut listing
program deklarasi pengolahan citra ditunjukkan pada gambar 4.44.
Gambar 4. 44 Deklarasi citra
4.4.4. Tampilan Jarak di Citra Video
Penampilan jarak di video digunakan fungsi “cv2.line( )” pada jarak 400m dan
100m dengan mengacu kordinat pixel tabel 4.2. Hasil listing program dan tampilan jarak
100 m – 400 m pada citra video ditunjukkan pada gambar 4.45 dan gambar 4.46. Pada jarak
300m dan 200m kordinat titik pixel dibentuk dalam data array dengan menggunakan fungsi
“np.array”. Data array tersebut dimasukkan ke fungsi “cv2.polylines( )” untuk ditampilkan
pada citra video dalam bentuk suatu bangun datar. Untuk memberi label jarak 100 m – 400
m digunakan fungsi “cv2.putText()” dan masing masing mengacu koordinat garis (x2,y2).
Gambar 4. 45 Listing program tampilan jarak
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Gambar 4. 46 Tampilan citra video
4.4.5. Mengolah Citra Foreground dan Menghitung Luasan Objek
Cara frame Foreground didapat menggunakan sebuah fungsi dari “cv2.
createBackgroundSubtractorMOG2” ditunjukkan pada gambar 4.44. Untuk memperjelas
frame foreground diatur nilai intensitas pixel (threshold). Tahap selanjutnya untuk
menghilangkan cacat suatu bentuk frame foreground digunakan fungsi “cv2.Morphology(
)”.Prinsip kerja “cv2.Morphology( )” dengan cara membentuk ulang objek foreground
kemudian memberi nilai intensitas pixel yang sama. Untuk fungsi “ret,imbin” merupakan
perintah pembacaan frame pada kamera. Untuk perintah “try” digunakan dalam kondisi
benar dimana pembacaan frame pada pi camera akan terus berlanjut, jika tidak ada frame
terbaca atau kondisi salah maka akan menjalankan fungsi “except” dan mengakhiri
pembacaan frame. Listing program frame foreground ditunjukkan pada gambar 4.47.
Gambar 4. 47 Listing program mendapatkan frame foreground
Setelah didapat frame foreground kemudian luasan objek dengan menggunakan
fungsi “cv2.contourArea ()”. Penggunaan “if statement” dalam pencarian luasan frame
objek foreground dapat dibatasi pada area “500<area<1870”. Listing program dapat
ditunjukkan pada gambar 4.48.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Gambar 4. 48 Listing program menghitung luasan objek foreground
4.4.6. Perhitungan Kecepatan Bus
Perhitungan kecepatan bus dilakukan dengan menghitung jumlah frame selama
memasuki daerah deteksi kecepatan di area 300m-200m. Listing program dapat dilihat
pada gambar 4.49.
Gambar 4. 49 Listing program menghitung kecepatan bus
Untuk menentukan frame bergerak dengan mencari titik centroid menggunakan fungsi
“cv2.moments” pada luasan bus yang sudah terdeteksi. Untuk menunjukkan suatu frame
bus dibuat sebuah bingkai seukuran bentuk kontur bus dengan menggunakan
“cv2.boundingrect( )”. Agar titik tengah dapat tertampil di GUI citra digunakan perintah
“cv2.circle ( )” dan bingkai kotak menyerupai kontur bus ditampilkan pada GUI citra
menggunakan perintah “cv2.rectangle”. Untuk mengetahui pergerakan suatu titik centroid
pada area deteksi kecepatan bus digunakan kondisi “if (polygon1.contains.point(cx,cy))”
agar dapat mengetahui titik centroid saat memasuki daerah deteksi kecepatan maupun
keluar. Disaat kondisi dimana titik centroid memasuki daerah deteksi kecepatan maka
jumlah frame terhitung kemudian dimasukkan ke variabel “a” berupa data array dengan
perintah “a.append(fcount)”. “fcount” sendiri merupakan variabel counter frame selama
bergerak. Setelah titik centroid keluar dari area deteksi kecepatan maka counter frame akan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
berhenti begitu juga dengan pemasukan data ke variabel “a” dengan perintah pada
“a.append(fcount)”. Data terakhir pada array variabel “a”dikurangkan dengan data awal
menghasilkan jumlahnya frame seperti perhitungan pada persamaan (4.6). Perintah yang
digunakan dalam program untuk menghitung frame adalah “max ( )-min( )”. Pada
perhitungan variabel “kecepatan” digunakan nilai rumus pada persamaan (2.15).
4.4.7. Menampilkan Kecepatan Bus pada Video
Untuk menampilkan kecepatan bus menggunakan fungsi “cv2.putText( )”. Untuk
suatu variabel “s” dan didalamnya memiliki fungsi “+str(round( kecepatan,2) adalah
menampilkan kecepatan di GUI citra dengan angka 2 digit dibelakanng koma. Untuk
variabel “font” digunakan dalam tampilan text yang ditampilkan dengan jenis huruf
“FONT_HERSEY_SIMPLEX. Video citra GUI ditampilkan menggunakan perintah
“cv2.imshow”. Listing program dapat dilihat pada gambar 4.50.
Gambar 4. 50 Listing program menampilkan kecepatan dan video
4.4.8. Pengaturan Waktu Interupsi Kedatangan Bus
Saat kecepatan bus terdeteksi waktu tiba bus dapat dihitung dengan menggunakan
persamaan 3.11. Variabel hasil perhitungan tersebut dideklarasikan secara global pada tiap
fungsi program threading. Waktu tiba bus tersebut dibuat timer countdown menggunakan
fungsi iterasi “for” dengan tunda 1 detik. Jika waktu timer selesai (variabel i =0) maka
parameter kondisi “if statement” didalam “for” pada gambar 4.51 akan memberikan waktu
interupsi pada nyala lampu lalu lintas.
Gambar 4. 51 Listing program timer countdown
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Pengondisian “if statement” pada setiap nyala lampu siklus normal dapat dilihat
lampiran L-3 sampai dengan L-52. Pengondisian “if statement” tersebut akan berjalan dan
mengatur nyala lampu transisi setiap simpang ketika interupsi (variabel i =0). Waktu nyala
lampu transisi setiap simpang dimulai dari nyala lampu kuning 1 detik, merah 1 detik dan
kemudian hijau di lajur A selama 10 detik sesuai perancangan pada gambar 3.16.
4.4.9. Pengaturan Waktu Interupsi Kedatangan Bus Kedua Hampir
Bersamaan
Waktu pengaturan interupsi bus kedua dengan cara penambahan waktu kedatangan
bus kedua dengan bus pertama pada nyala lampu APILL hijau A. Perhitungan waktu ini
digunakan fungsi “append” untuk memasukan nilai variabel “f” kedatangan bus pertama
dan kedua ke dalam array. Data berupa array tersebut digunakan untuk menghitung
tambahan waktu pada bus kedua menggunakan fungsi “sum( ))” yang dimasukkan pada
variabel “m”. Listing program dapat dilihat pada gambar 4.52.
Gambar 4. 52 Listing program pengaturan tambahan bus kedua
Variabel “m” digunakan sebagai pembanding jika kedua bus beriringan dengan cara
menanambahkan waktu kedatangan kedua bus. Penambahan waktu kedatangan kedua bus
digunakan agar dapat membedakan bus pertama dan bus kedua yang nilai variabel pengatur
waktu interupsi selalu diperbarui dalam mendeteksi kecepatan tiap bus. Selanjutnya
variabel “mm” dan “k” merupakan waktu tambahan lampu APILL hijau A untuk waktu
kedatangan bus kedua dan akan aktif ketika hasil penjumlahan waktu kedatangan kedua
bus pada variabel “m” lebih besar daripada variabel “d”. Variabel “d” dan “r” merupakan
variabel waktu kedatangan tiap-tiap bus digunakan untuk mengatur transisi nyala lampu
interupsi APILL tiap simpang ketika interupsi. Waktu penambahan bus kedua habis maka
variabel data array sebagai pembanding kedatangan kedua bus direset dengan
menggunakan “f =[ ]” agar dapat digunakan lagi dalam membandingkan kedua bus.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan dari hasil penelitian yang telah dilakukan maka dapat disimpulkan :
1. Pendeteksian luasan objek miniatur bus berjalan dengan baik, mampu
membedakan objek bus dan mobil disaat beriringan.
2. Kemampuan pi camera dalam menangkap pergerakan frame dengan rata - rata
adalah 2 fps.
3. Penyalaan waktu lampu APILL ketika interupsi berjalan dengan baik, mampu
memberikan prioritas lampu APILL hijau jalur pada bus di jalur busway.
4. Bus disaat memasuki area 300 m sampai dengan keluar dari 200 m memiliki
luasan 513 pixel sampai dengan 1238 pixel.
5. Galat rata rata dari perhitungan dan pendeteksian kecepatan pada citra adalah
sebesar 3,54 %.
6. Pemberian tambahan waktu nyala lampu APILL hijau jalur busway pada
kedatangan bus kedua sesuai dengan waktu tempuh bus kedua.
5.2. Saran
Setelah melakukan penelitian maka diperoleh saran untuk penelitian selanjutanya,
yaitu:
1. Untuk memperoleh background tetap maka posisi kamera juga tetap.
2. Identifikasi bus bisa dibuat lebih spesifik lagi terhadap kendaraan lain, misal
penambahan program deteksi warna bus.
3. Untuk percobaan dengan skala seperti ini, perlu dipilih kamera yang sesuai,
yang lebih peka terhadap perubahan gerak frame kecil.
4. Percobaan perlu ditingkatkan dengan memilih alat pengirim data nirkabel yang
meminimalisir penggunaan kabel. Sehingga misal diterapkan di lapangan bisa
meminimalkan pembangunan jalur kabel yang rumit.
5. Karena kamera hanya menangkap gambar 2 dimensi, yang berarti deteksi
kamera hanya terletak pada area terprogram, maka untuk penyempurnaan,
mungkin bisa ditambahkan 1 atau beberapa kamera, agar bisa didapat data 3
dimensi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Daftar Pustaka
[1] ----,2019, Lampu lalu lintas,Wikipedia
[2] Hadian, S, U., Hugeng., Sanjaya, A., 2007, Perancangan Model Sistem Pengaturan
Lalu -Lintas Kendaraan Yang Akan Memotong Titik Putar - Balik Pada Jalur
Busway, TESLA, Jurnal Teknik Elektro, Vol. 9 No. 1.
[3] Razavi, M., Hamidkhani, M.,Sadeghi,. 2014, Image Detection and Count Using
Open Computer Vision (Opencv), Journal of Engineering.
[4] Kanungo, A., Sharma, A., Singla, Chetan., 2014, Smart Traffic Light Scheduling in
Smart City Using Image and Video Processing, IEEE.
[5] Almuraykhi, K, M., Akhlaq M., 2019, STLS: Smart Traffic Lights System for
EmergencyResponse Vehicles, IEEE.
[6] Imron, C., Hariyanto., Yuniastari, W, I., 2001, Pemodelan Matematika Dalam
Penentuan Siklus Waktu Traffic Light Pada Persimpangan Jalan, Tesis, Jurusan
Matematika FMIPA, Institut Teknologi Surabaya.
[7] Carter, A., dkk, Raspberry Pi Documentation, Raspberry Pi Foundation,
https://www.raspberrypi.org/documentation/, diakses 10 Desember 2019.
[8] Mordvintsev, A., Abid, K., 2013, OpenCV-Python Tutorials, https://opencv-python-
tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html, diakses 15 Mei 2020.
[9] HALLIDAY., RESNICK., 2011, FUNDAMENTALS OF PHYSICS, John Wiley &
Sons, Inc, Jefferson City.
[10] Hartoto.,2012, Sistem Deteksi Kecepatan Kendaraan Bermotor pada Real Time
Traffic Information System, Teknik Komputer dan Telematika, Jurusan Teknik
Elektro, Institut Teknologi Surabaya.
[11] Munir, R., 2004,Pengolahan Citra Digital, Informatika, Bandung.
[12] Wijaya, M. C., Prijono, A., 2007, Pengolahan Citra Digital Menggunakan Matlab
Image Processing Toolbox, Informatika, Bandung.
[13] Usman., 2005, Pengolahan Citra Digital dan Teknik Pemrogramannya, Graha Ilmu,
Yogyakarta.
[14] -----, 2013, FPS, Wikipedia.
[15] ----,2019, Data Sheet Raspberry Pi computer Module 3+,Raspberry Pi
Documentation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
[16] ----,2004, Data Sheet BC547, Philip Semiconductor.
[17] ----,2002, Data Sheet LED, NTE.
[18] ----, 2020, Teorema Pythgoras,Wikipedia.
[19] BOYLESTAD, R., NASHELSKY, L., 1998, Electronic Devices and Circuit Theory,
Prentice Hall, New Jersey.
[20] Ramdhani, M., 2008, Rangkaian Listrik, Erlangga, Bandung.
[21] Febrinata, K., Kusuma, P, D., Wibowo, S, A., 2013, Simulasi Dan Analisis Multiple
Object Tracking Berbasis Citra Dengan Metode Hierarchial Particle Filter, Teknik
Telekomunikasi, Fakultas Teknik Elektro, Universitas Telkom.
[22] Nurfadhilah, 2018, Jenis-Jenis Bus Berdasarkan Ukuran, Penggunaan dan Kelas,
Cirebonmedia, https://www.cirebonmedia.com/automotive/, diakses 6 Juli 2020.
[23] Nurhayata., G., I, 2015, SISTEM PENGATURAN KECEPATAN MOTOR
UNIVERSAL SATU FASA DENGAN METODE KONTROL SUDUT FASA
BERBASIS MIKROKONTROLER AT89S52,JPTK,UNDIKSHA,Vol.12.
[24] ----,2020, Python, wikipedia
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-1
Lampiran Program
import RPi.GPIO as GPIO
from threading import Thread
import cv2
import time
import numpy as np
from shapely.geometry import Point
from shapely.geometry import Polygon
d=0
i=1
r=0
m=0
mm=0
f=[]
def kamera(): #Fungsi untuk jalankan
capture video
polygon1=
Polygon([[227,257],[321,207],[408,224
],[326,284]])
cap =cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WID
TH,640)
cap.set(cv2.CAP_PROP_FRAME_HEI
GHT,480)
cap.set(cv2.CAP_PROP_FPS,2)
fps = cap.get(cv2.CAP_PROP_FPS)
fps=round(fps)
print("\nfps=",fps)
fourcc=
cv2.VideoWriter_fourcc(*'XVID')
out=cv2.VideoWriter('bus7.avi',fourcc,3
0,(640,480))
ote=cv2.VideoWriter('bus7
background.avi',fourcc,30,(640,480),isC
olor=False)
subtractor =
cv2.createBackgroundSubtractorMOG2
(detectShadows=True)
kernelOp = np.ones((3,3),np.uint8)
kernelCl = np.ones((11,11),np.uint8)
fcount=0
a=[]
k=0
kecepatan=0
global d,mm,m,r,f
while (1) :
fcount=fcount+1 #Conter untuk
frame terdeteksi
__,frame = cap.read()
cv2.line(frame,(31,365),(166,422),(0,0,
255),3)
pts1=np.array([[227,257],[321,207],[40
8,224],[326,284]],np.int32) #
menampilkan kordinat area pixel deteksi
kecepatan di video
cv2.polylines(frame,[pts1],True,(0,0,25
5),2) # menggambar titik kordinat
deteksi kecepatan
cv2.line(frame,(378,174),(448,183),(0,0
,255),3)
cv2.putText(frame, "100 m",
(168,422),
cv2.FONT_HERSHEY_COMPLEX,0.7
,(0, 0, 255), 2)
cv2.putText(frame, "200 m",
(329,284),
cv2.FONT_HERSHEY_COMPLEX,0.7
,(0, 0, 255), 2)
cv2.putText(frame, "300 m",
(410,224),
cv2.FONT_HERSHEY_COMPLEX,0.7
,(0, 0, 255), 2)
cv2.putText(frame, "400 m",
(450,183),
cv2.FONT_HERSHEY_COMPLEX,0.7
,(0, 0, 255), 2)
fgmask = subtractor.apply(frame)
try:
ret,imBin =
cv2.threshold(fgmask,200,255,cv2.THR
ESH_BINARY)
mask=cv2.morphologyEx(imBin,
cv2.MORPH_OPEN,kernelOp)
mask= cv2.morphologyEx(mask
, cv2.MORPH_CLOSE, kernelCl)
except:
print('EOF')
break
(contours,hierarchy)=cv2.findContours(
mask,cv2.RETR_TREE,cv2.CHAIN_A
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-2
PPROX_SIMPLE) #Deteksi tepi dari
Threshold
for cnt in contours:
area = cv2.contourArea(cnt)
if 500<area<1870: # Luas area
kontur ketika mendekati daerah deteksi
kecepatan
cv2.drawContours(frame, cnt,
-1, (255, 0, 255), 2) #membuat line
menyerupai tepi objek
peri = cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, 0.10 *
peri, True)
M=cv2.moments(cnt)
cx=int(M['m10']/M['m00'])#titik tengah
x
cy=int(M['m01']/M['m00'])#titik tengah
y
(x , y , w, h)= cv2.boundingRect(cnt) #
Membuat box menyerupai tepi objek
(kontur)
cv2.rectangle(frame, (x , y ), (x + w , y +
h ), (0, 255, 0), 1) #Membuat box dan
ditampilkan
cv2.circle(frame,(cx,cy),5,(0,0,255),-1)
cv2.putText(frame, "Area: " +
str(int(area)), (x + w + 20, y + 45),
cv2.FONT_HERSHEY_COMPLEX,0.7
,(0, 255, 0), 2)
if(polygon1.contains(Point(cx,cy))):
a.append(fcount)
else:
pass
dist=100
if len(a)>1:
if fcount-max(a)>1:
print(a)
kecepatan
=((dist*fps)/(max(a)-min(a)))
r=(200/kecepatan)-5 #waktu
yang digunakan untuk lampu merah tiap
simpang
k=(200/kecepatan)
a=[]
f.append(r)
m=sum(f)
d=r
if m>d: #parameter bus kedua
untuk tambahan waktu
mm=k
f=[]
s="kec="+str(round(kecepatan,2))
font=cv2.FONT_HERSHEY_SIMPLE
X
cv2.putText(frame,s,(0,100),font,1,(0,25
5,255),2,cv2.LINE_AA)
cv2.putText(frame,"m/s",(160,100),font
,1,(0,255,255),2,cv2.LINE_AA)
cv2.imshow("frames",frame)
cv2.imshow("background
subtractor", mask)
out.write(frame)
ote.write(mask)
cv2.imwrite("background1.jpg",frame)
if cv2.waitKey(1) == ord('q'):
GPIO.cleanup()
break
cap.release()
out.release()
ote.release()
cv2.destroyAllWindows()
def lampuapil(): #jalankan fungsi nyala
lampu
global i,d,mm,m,f
#mengatur output
GPIO.setmode(GPIO .BOARD)
GPIO.setup(19,GPIO.OUT)#MerahA
GPIO.setup(21,GPIO.OUT)#kuningA
GPIO.setup(23,GPIO.OUT)#hijauA
GPIO.setup(3,GPIO.OUT)#MerahB
GPIO.setup(5,GPIO.OUT)#kuningB
GPIO.setup(7,GPIO.OUT)#hijauB
GPIO.setup(11,GPIO.OUT)#MerahC
GPIO.setup(13,GPIO.OUT)#kuningC
GPIO.setup(15,GPIO.OUT)#hijauC
GPIO.setup(29,GPIO.OUT)#MerahD
GPIO.setup(31,GPIO.OUT)#kuningD
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-3
GPIO.setup(33,GPIO.OUT)#hijauD
GPIO.setwarnings(False)
while True:
#bangjoA hijau ke 1
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
print("\n")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA, MerahB,C,D")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA hijau ke 2
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
print("\n")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-5
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA, MerahB,C,D")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA hijau ke 3
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
print("\n")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-6
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-7
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA, MerahB,C,D")
time.sleep(2)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA hijau ke 4
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
print("\n")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-8
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA, MerahB,C,D")
time.sleep(3)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA hijau ke 5
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
print("\n")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-9
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA, MerahB,C,D")
time.sleep(4)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA kuning ke 1
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-10
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA, MerahB,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
time.sleep(5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-11
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA,MerahB,C,D")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA kuning ke 2
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA, MerahB,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-12
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauA,MerahB,C,D")
time.sleep(5)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(1)
print("kuningA,MerahB,C,D")
time.sleep(1)
#bangjoB merah-hijau ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-13
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB merah-hijau ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-14
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-15
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB hijau ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-16
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB hijau ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-17
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB hijau ke 3
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-18
GPIO.output(33,False)
print("hijauB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-19
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(2)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB hijau ke 4
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-20
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(3)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB hijau ke 5
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-21
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(4)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB kuning ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-22
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-23
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningB, MerahA,C,D")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoB kuning ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningB, MerahA,C,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-24
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,False)
GPIO.output(7,True)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauB,MerahA,C,D")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningB, MerahA,C,D")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC merah-hijau1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-25
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-26
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC merah-hijau2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-27
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(2)
print("kuningA merah B,C,D")
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC hijau ke 1
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-28
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
d=0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-29
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC hijau ke 2
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan
bus kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-30
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC hijau ke 3
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan
bus kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-31
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(2)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC hijau ke 4
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-32
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(3)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC hijau ke 5
GPIO.output(3,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-33
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan
bus kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-34
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(4)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC kuning ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-35
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningC, MerahB,A,D")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoC kuning ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-36
print("kuningC, MerahB,A,D")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-37
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,False)
GPIO.output(15,True)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijauC, MerahB,A,D")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningC, MerahB,A,D")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD merah-hijau ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-38
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD merah-hijau ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-39
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD hijau ke 1
GPIO.output(19,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-40
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-41
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
i=1
d=0
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD hijau ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan
bus kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-42
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
time.sleep(1)
i=1
d=0
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD hijau ke 3
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-43
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-44
time.sleep(2)
i=1
d=0
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD hijau ke 4
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan
bus kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-45
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
time.sleep(3)
i=1
d=0
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD hijau ke 5
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",mm)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-46
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
time.sleep(4)
i=1
d=0
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD kuning ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("kuningD, MerahB,C,A")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-47
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",m)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-48
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("kuningD, MerahB,C,A")
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoD kuning ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("kuningD, MerahB,C,A")
print(d,"detik lagi persiapan Lampu
merah B,C,D,waktu tambahan bus
kedua",m)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-49
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,False)
GPIO.output(33,True)
print("hijauD, MerahB,C,A")
time.sleep(5)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("kuningD, MerahB,C,A")
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA merah-hijau ke 1
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-50
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-51
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
#bangjoA merah-hijau ke 2
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
if i==0:
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,False)
GPIO.output(5,True)
GPIO.output(7,False)
GPIO.output(11,False)
GPIO.output(13,True)
GPIO.output(15,False)
GPIO.output(29,False)
GPIO.output(31,True)
GPIO.output(33,False)
print("led kuning jalurB,C,D")
time.sleep(1)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("led merah jalurB,C,D")
time.sleep(1)
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("hijau A,led merah
jalurB,C,D")
time.sleep(10)
if mm>0:
GPIO.output(19,False)
GPIO.output(21,False)
GPIO.output(23,True)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-52
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("tambahan waktu",mm)
time.sleep(mm)
GPIO.output(19,False)
GPIO.output(21,True)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
print("kuningA merah B,C,D")
time.sleep(2)
GPIO.output(19,True)
GPIO.output(21,False)
GPIO.output(23,False)
GPIO.output(3,True)
GPIO.output(5,False)
GPIO.output(7,False)
GPIO.output(11,True)
GPIO.output(13,False)
GPIO.output(15,False)
GPIO.output(29,True)
GPIO.output(31,False)
GPIO.output(33,False)
time.sleep(1)
d=0
i=1
mm=0
m=0
f=[]
time.sleep(1)
def interupsitimer():
global i,d,r
while True:
if d>0:
i=d
for i in range(int(i),-1,-1):
if i==0:
r=0
d=0
break
print(i,"countdown")
time.sleep(1)
Thread(target= kamera).start()
Thread(target= lampuapil).start()
Thread(target= interupsitimer).start()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI