DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

133
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

Transcript of DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

Page 1: 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

Page 2: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 3: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

iii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

iv

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 6: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 7: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 8: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 9: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 10: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 11: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 12: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 13: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 14: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 15: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 16: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 17: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 18: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 19: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 20: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 21: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 22: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 23: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 24: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 25: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 26: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 27: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 28: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 29: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 30: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 31: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 32: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 33: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 34: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 35: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 36: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 37: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 38: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 39: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 40: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 41: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 42: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 43: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 44: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 45: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 46: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 47: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 48: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 49: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 50: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 51: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 52: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 53: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 54: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 55: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

37

Gambar 4. 6 Pengukuran jarak dengan meteran

Gambar 4. 7 Pemberian tanda jarak konveyor

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 57: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 58: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 59: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 60: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 61: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 62: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 63: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 64: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 65: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 66: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 67: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 68: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 69: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 70: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 71: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 72: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 73: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 74: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 75: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 76: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 77: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 78: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 79: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 80: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 81: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

63

LAMPIRAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 83: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 84: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 85: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 86: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 87: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 88: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 89: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 90: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 91: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 92: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 93: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 94: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 95: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 96: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 97: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 98: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 99: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 100: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 101: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 102: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 103: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 104: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 105: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 106: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 107: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 108: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 109: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 110: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 111: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 112: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 113: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 114: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 115: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 116: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 117: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 118: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 119: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 120: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 121: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 122: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 123: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 124: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 125: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 126: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 127: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 128: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 129: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 130: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 131: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 132: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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

Page 133: DETEKSI KENDARAAN UNTUK LAMPU LALU LINTAS …

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