APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram...

288
TUGAS AKHIR APLIKASI COMPUTER VISION PADA LENGAN ROBOT PEMINDAH BENDA BERDASARKAN BENTUK DAN POSISI Diajukan untuk memenuhi salah syarat memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro Fakultas Sains dan Teknologi Universitas Sanata Dharma Disusun oleh : ALBERTUS ADIT TRIANGGORO NIM : 155114066 PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2019 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Transcript of APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram...

Page 1: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

TUGAS AKHIR

APLIKASI COMPUTER VISION

PADA LENGAN ROBOT PEMINDAH BENDA

BERDASARKAN BENTUK DAN POSISI

Diajukan untuk memenuhi salah syarat

memperoleh gelar Sarjana Teknik pada

Program Studi Teknik Elektro

Fakultas Sains dan Teknologi Universitas Sanata Dharma

Disusun oleh :

ALBERTUS ADIT TRIANGGORO

NIM : 155114066

PROGRAM STUDI TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2019

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

ii

FINAL PROJECT

COMPUTER VISION APPLICATION

ON ROBOT ARM TO MOVE OBJECT

BASED ON SHAPE AND POSITION

In partial fulfilment of the requirements

for the degree of Sarjana Teknik

in Electrical Enginering Study Program

Faculty of Science and Technology Sanata Dharma University

Constructed By :

ALBERTUS ADIT TRIANGGORO

NIM : 155114066

ELECTRICAL ENGINEERING STUDY PROGRAM

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2019

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

iii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

iv

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

v

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

vi

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

MOTTO :

“ KESUKSESAN ADALAH PERJUANGAN

DARI KEGAGALAN DEMI KEGAGALAN

TANPA KEHILANGAN SEMANGAT DAN OPTIMISME”

Skipsi ini kupersembahkan untuk :

Tuhan Yesus Kristus juru selamatku

Bunda Maria, Santo Yosef dan malaikat pelindungku

ssAyah dan Ibu tercinta, untuk doa, serta

dukuangannya secara moral maupun materi

Kakak ku dan sahabat-sahabatku

Almamaterku Teknik Elektro Universtas Sanata Dharma

Yogyakarta

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

vii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

viii

INTISARI

Perkembangan teknologi memiliki peran yang sangat penting dalam menunjang

aktivitas manusia untuk mempermudah dalam melakukan pekerjaan sehingga mendapatkan

hasil yang maksimal. Salah satunya adalah teknologi computer vision dengan memanfaatkan

image processing sehingga dapat memberikan kecerdasan buatan pada lengan robot untuk

memindahkan objek berdasarkan bentuk dan posisi. Lengan robot memiliki peran penting

untuk mengurangi kecelakaan kerja bagi manusia yang bekerja pada bidang pekerjaan yang

berhubungan dengan bahan-bahan kimia berbahaya dan pengangkatan benda-benda berat,

meminimalisasi human error, serta untuk meng-otomasi bidang pekerjaan yang masih

dilakukan secara manual agar proses produksi menjadi lebih efisien.

Berdasarkan hal tersebut, dibutuhkan adanya lengan robot yang dapat memindahkan

objek berdasarkan pengenalan bentuk dan posisi objek. Urutan pengenalan bentuk dan posisi

objek yaitu akusisi objek oleh webcam, image preprocessing, labeling dan segmentasi,

menghitung nilai area, perimeter, thinness ratio dan centroid objek. Pengenalan bentuk

didasarkan pada range nilai thinness ratio masing-masing objek sedangkan pengenalan

posisi didasarkan pada nilai centroid objek. Lengan robot digerakan oleh motor servo yang

dikendalikan oleh Atmega32 menggunakan komunikasi serial USART antara komputer

dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR.

Hasil dari penelitian ini adalah sistem yang dapat membedakan 3 macam bentuk objek

yaitu kubus, tabung dan prisma segitiga yang dapat diletakan pada 12 posisi tertentu, serta

lengan robot yang dapat mengambil dan memindahkan objek berdasarkan bentuk dan posisi.

Setelah melakukan percobaan sebanyak 180 kali pengenalan bentuk objek dan 75 kali

pengambilan dan pemindahan objek, sistem lengan robot dapat bekerja 100% apabila sesuai

dengan batasan masalah

Kata kunci : Computer vision, lengan robot, USART.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

ix

ABSTRACT

The development of technology has a very important role to supporting human

activites to make it easier to do work, so get the maximum result. One of them is the

technology of computer vision to utilize image processing so that it can provide artificial

intelligence on the robot arm to move object based on shape and position. The robot arm has

a important role to reduce work accidents for human who work on the field of work in touch

with these chemicals dangerous and the object heavy, minimization human error, as well as

to make automatically the job is still conducted in manual so that the process of production

become more efficient.

Based on this, it takes the robot arm that can move object based on shape and position

of the object. Object shape and position identification step is acquisition of the object by

webcam, image preprocessing, labeling and segmentation, calculate the value of the area,

perimeter, thinness ratio and centroid of the object. Shape identification based on the range

value thinness ratio of each object while the identification of a position based on the value

of the centroid object. The robot arm movement by a motor servo which is controlled by the

Atmega32 using serial communication USART between computer and microcontroller

programed with matlab and codevision AVR.

The result of the research is the system that can discrimination three kinds of the object

that the cube, tubes, and prism triangle that can be put on twelve a position in certain areas,

as well the robot arm can take and move objects based on the shape and position. After

experimenting as much as one hundres and eighty time to identification shape and positions

of the objects and seventy five time to pick up dan separate of the object, the system and

robot arm can work 100% if in accordance with limits of the problem.

Keywords : Computer vision, robot arm, USART.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

x

KATA PENGANTAR

Puji dan Syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala

berkatdan rahmat-Nya, sehingga penulis dapat menyelesaikan tugas akhir ini dengan baik.

Penulis menyadari bahwa banyak pihak yang telah memberikan doa, dukungan, motivasi

serta bantuan kepada penulis sehingga dapat menyelesaikan tugas akhir ini. Oleh karena itu,

penulis mengucapkan terima kasih kepada :

1) Sudi Mungkasi, S.Si, M.Math.,Sc.,Ph.D. selaku Dekan Fakultas Sains dan

Teknologi Universitas Sanata Dharma Yogyakarta.

2) Petrus Setyo Prabowo, S.T.,M.T., selaku Ketua Program Studi Teknik Elektro

Universitas Sanata Dharma Yogyakarta.

3) Martanto, S.T.,M.T., selaku dosen pembimbing akademik yang telah mendampingi

dan membimbing penulis selama perkuliahan.

4) Dr. Linggo Sumarno selaku dosen pembimbing yang dengan penuh perhatian,

kesabaran dan dengan ketulusan hati memberi bimbingan, kritik, saran serta

motivasi dalam penulisan tugas akhir ini.

5) Bapak Petrus Setyo Prabowo, S.T.,M.T., dan Bapak Djoko Sumarno, S.Si.,M.T.,

selaku dosen penguji yang telah bersedia memberi kritik, saran dan bimbingan

dalam memperbaiki tugas akhir ini.

6) Bapak/Ibu dosen yang telah mengajarkan banyak hal selama penulis menempuh

pendidikan di Program Studi Teknik Elektro, Fakultas Sains dan Teknologi,

Universitas Sanata Dharma Yogyakarta.

7) Kedua orang tua tercinta, Bapak Falentinus Prayitno dan Ibu Christina Kemiyem

atas doa, kasih sayang, dukungan serta motivasi.

8) Kakak tercinta Brigita Yuandini dan kakak ipar Bernadus Sambang Nusantoro serta

keponakan Alfonsus Davis Ezekiel yang selalu mendukung dan memberikan

semangat serta motivasi sehingga dapat menyelesaikan study dengan baik.

9) Stefani Nita Lystia sebagai teman, sahabat dan kekasih yang selalu menyemangati

dan mendukung penulis sampai terselesaikannya tugas akhir ini.

10) Staff Sekretariat Teknik Elektro yang telah membantu dalam hal administrasi.

11) Staff dan petugas laboratorium Teknik Elektro yang telah membantu banyak hal

untuk kelancaran tugas-tugas perkuliahan dan asisten dosen.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xii

DAFTAR ISI

Halaman Judul (Bahasa Indonesia) .............................................................................. i

Halaman Judul (Bahasa Inggris)..................................................................................... ii

Halaman Persetujuan .................................................................................................... iii

Halaman Pengesahan ..................................................................................................... iv

Pernyataan Keaslian Karya ........................................................................................... v

Halaman Persembahan .................................................................................................. vi

Lembar Persetujuan Publikasi Karya ............................................................................ vii

INTISARI ...................................................................................................................... viii

ABSTRACT .................................................................................................................. ix

KATA PENGANTAR .................................................................................................. x

DAFTAR ISI ................................................................................................................ xii

DAFTAR GAMBAR ..................................................................................................... xvi

DAFTAR TABEL ........................................................................................................ xxii

BAB I : PENDAHULUAN

1.1. Latar Belakang ............................................................................................ 1

1.2. Tujuan dan Manfaat .................................................................................... 2

1.3. Batasan Masalah ......................................................................................... 2

1.4. Metodologi Penelitian ................................................................................. 3

BAB II : DASAR TEORI

2.1. Computer Vision ......................................................................................... 5

2.1.1. Pemrosesan Citra (Image Processing) ........................................... 5

2.1.1.1. Definisi Citra ................................................................... 5

2.1.1.2. Citra Grayscale ................................................................ 6

2.1.1.3. Citra Biner ....................................................................... 7

2.1.1.4. Konversi Citra Grayscale ke Citra Biner .......................... 8

2.1.1.5. Noise Filtering ................................................................. 9

2.1.1.6. Labeling Objek ................................................................ 11

2.1.1.7. Segmentasi Citra .............................................................. 12

2.1.2. Pengenalan Bentuk dan Penentuan Posisi ...................................... 13

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xiii

2.1.2.1. Pengenalan Bentuk .......................................................... 13

2.1.2.1.1. Area ................................................................. 13

2.1.2.1.2. Perimeter ......................................................... 14

2.1.2.1.3. Thinness Ratio ................................................. 15

2.1.2.2. Penentuan Posisi ............................................................... 16

2.1.2.2.1. Centroid ........................................................... 16

2.1.3. Webcam .......................................................................................... 18

2.2. Lengan Robot .............................................................................................. 18

2.2.1. Motor Servo .................................................................................... 21

2.2.2. Torsi/Momen Gaya ........................................................................ 22

2.2.3. Invers Kinematics Robot Arm 2 DOF (Degree Of Freedom) ........ 24

2.2.4. Pulse Width Modulation (PWM) ..................................................... 27

2.2.5. Mikrokontroler AVR Atmega32 .................................................... 27

2.2.5.1. Arsitektur Atmega32 ...................................................... 28

2.2.5.2. Deskripsi Mikrokontroler AVR Atmega32 .................... 28

2.2.5.3. Timer/Counter0 ............................................................... 30

2.2.5.4. Komunikasi Serial USART ............................................ 32

2.2.6. Minimum Sistem Atmega32 .......................................................... 37

2.2.7. Power Supply ................................................................................. 37

BAB III : PERANCANGAN PENELITIAN

3.1. Proses Kerja dan Mekanisme Lengan Robot .............................................. 39

3.2. Perancangan Lengan Robot .......................................................................... 40

3.2.1. Robot Arm Assembly ........................................................................ 44

3.2.2. Desain Keseluruhan Sistem ............................................................. 45

3.2.3. Sudut Pergerakan Tiap Motor Servo ................................................ 46

3.3. Perancangan Perangkat Keras (Hardware) ................................................. 47

3.3.1. Wiring Motor Servo Pada Minimum Sistem Atmega32 .................. 48

3.3.2. Perhitungan Torsi Motor Servo ........................................................ 49

3.3.3. Motor Servo ..................................................................................... 53

3.3.4. Webcam dan Area Peletakan Benda ................................................. 55

3.4. Perancangan Perangkat Lunak (Software) .................................................. 57

3.4.1. Flowchart Utama ............................................................................. 57

3.4.2. Akuisisi Citra ................................................................................... 59

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xiv

3.4.3. Image Preprocessing ........................................................................ 59

3.4.4. Labeling dan Segmentasi ................................................................. 61

3.4.5. Proses Pengenalan Bentuk Objek pada Matlab ................................ 62

3.4.6. Proses Penentuan Posisi Objek pada Matlab ................................... 63

3.4.7. Pengirimana Data Dari Matlab ke Mikrokontroler .......................... 64

3.4.8. Proses Pergerakan Servo Lengan Robot .......................................... 66

3.4.9. Perancangan GUI pada Matlab ........................................................ 74

BAB IV : HASIL DAN PEMBAHASAN

4.1. Perangkat Keras (Hardware) Lengan Robot ............................................... 75

4.1.1. Bentuk Fisik dan Sistem Kerja Lengan Robot .................................. 75

4.1.2. Wiring Motor Servo pada Minimum Sistem Atmega32

Beserta LCD 16x2 ............................................................................. 77

4.1.3. Webcam dan Area Peletakan Objek ................................................. 78

4.1.4. Objek Tiga Dimensi dan Kotak Peletakan Objek ............................ 80

4.2. Hasil Data Pengujian dan Pembahasan ....................................................... 81

4.2.1. Pengujian Pengenalan Bentuk dan Posisi Objek .............................. 81

4.2.1.1. Pengujian Nilai Area, Perimeter

dan Thinness Ratio Objek .................................................. 81

4.2.1.2. Nilai Centroid Posisi Peletakan Objek ............................... 84

4.2.2. Sudut Motor Servo .......................................................................... 86

4.2.3. Pergerakan Lengan Robot ............................................................... 90

4.2.4. Pengujian Keberhasilan Sistem Mengenali Bentuk

dan Posisi Objek ............................................................................. 96

4.2.5. Pengujian Keberhasilan Lengan Robot Saat Mengambil

dan Memindahkan Objek ................................................................ 97

4.3. Analisa dan Pembahasan Perangkat Lunak (Sofrtware) ............................. 102

4.3.1. Software Matlab .............................................................................. 102

4.3.1.1. Inisialisasi Komunikasi USART ....................................... 102

4.3.1.2. Inisialisasi Webcam ......................................................... 103

4.3.2.3. Proses Akuisisi Citra ...................................................... 103

4.3.2.4. Proses Image Preprocessing ............................................ 104

4.3.2.5. Proses Labeling dan Segmentasi ...................................... 108

4.3.2.6. Proses Pengenalan Bentuk Objek .................................... 109

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xv

4.3.2.7. Proses Penentuan Posisi Objek ........................................ 111

4.3.2.8. Proses Pengiriman Data dari Matlab ke Mikrokontroler . 113

4.3.2.9. Tampilan GUI Matlab ...................................................... 119

4.3.2. Software Codevision AVR ............................................................. 120

4.3.2.1. Inisialisasi Komunikasi USART ...................................... 120

4.3.2.2. Inisialisasi Timer0 .......................................................... 121

4.3.2.3. Program Menerima Data Serial dari Matlab .................... 121

4.3.2.4. Pengendali Motor Servo .................................................. 123

4.3.2.5. Subrutin Program Utama ................................................. 134

BAB V : KESIMPULAN DAN SARAN

5.1. Kesimpulan .................................................................................................. 135

5.2. Saran ............................................................................................................. 135

DAFTAR PUSTAKA ................................................................................................... 136

LAMPIRAN ................................................................................................................. L-1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xvi

DAFTAR GAMBAR

Gambar 2.1. Sistem Koordinat Citra Berukuran M x N ( M Baris dan N Kolom) .... 6

Gambar 2.2. Citra Grayscale Beserta Representasi Nilai Keabuannya ..................... 7

Gambar 2.3. Citra Biner dan Representasi Nilai Binernya .......................................... 7

Gambar 2.4. Ilustrasi Perubahan Nilai Pixel pada Proses Thresholding .................... 8

Gambar 2.5. Citra Hasil Thresholding dengan Beberapa Variasi Nilai Threshold .... 9

Gambar 2.6. Median Filtering (a) Input (b) Output ................................................... 10

Gambar 2.7. Noise Filtering pada Citra (a) Input (b) Output .................................... 11

Gambar 2.8. Labeling Objek (a) Citra Input (b) Citra Hasil Labeling Objek ............ 11

Gambar 2.9. Proses Segmentasi (a) Citra Hasil Labeling (b) Segmentasi Objek

Pertama (c) Segmentasi Objek Kedua .................................................. 12

Gambar 2.10. Area Objek Persegi ................................................................................ 14

Gambar 2.11. Perimeter Objek Persegi ........................................................................ 15

Gambar 2.12. Titik Pusat (Centroid) (a) Citra Objek Persegi

(b) Centroid Objek Persegi ................................................................... 17

Gambar 2.13. Webcam Logitech C170 ......................................................................... 18

Gambar 2.14. Manipulator pada Lengan Robot ........................................................... 19

Gambar 2.15. Gripper Lengan Robot ........................................................................... 20

Gambar 2.16. Model Fisik Motor Servo Hitec HS-300 ............................................... 21

Gambar 2.17. Sistem Pengkabelan Motor Servo .......................................................... 21

Gambar 2.18. Cara Pengontrolan Motor Servo ............................................................ 22

Gambar 2.19. Vektor Gaya pada Lengan ..................................................................... 23

Gambar 2.20. Gerak Rotasi pada Benda ....................................................................... 24

Gambar 2.21. Lengan Robot 2 Sendi (2 DOF) ............................................................. 25

Gambar 2.22. Analisis Pergerakan Lengan Robot ....................................................... 26

Gambar 2.23. Sinyal PWM ........................................................................................... 27

Gambar 2.24. Konfigurasi Pin Mikrokontroler AVR ATmega32 ................................ 29

Gambar 2.25. Mode Phase Correct PWM ................................................................... 31

Gambar 2.26. Mode Fast PWM .................................................................................... 32

Gambar 2.27. Register UDR ......................................................................................... 33

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xvii

Gambar 2.28. Register UCSRA .................................................................................... 33

Gambar 2.29. Register UCSRB .................................................................................... 35

Gambar 2.30. Register UCSRC .................................................................................... 36

Gambar 2.31. Minimum Sistem Atmega32 .................................................................. 37

Gambar 2.32. Contoh Tampilan Fisik Regulated Switching Power Supply ................. 38

Gambar 3.1. Blok Diagram Sistem ............................................................................. 40

Gambar 3.2. Part Gripper .......................................................................................... 41

Gambar 3.3. Part Base Lengan Robot ........................................................................ 42

Gambar 3.4. Part Penghubung Base Terhadap Lengan Bawah ................................. 42

Gambar 3.5. Part Lengan Bawah ............................................................................... 43

Gambar 3.6. Part Lengan Atas .................................................................................... 43

Gambar 3.7. Gripper .................................................................................................. 44

Gambar 3.8. Lengan Robot ......................................................................................... 44

Gambar 3.9. Visualisasi Sistem .................................................................................. 45

Gambar 3.10. Visualisasi Sistem (Tampak Atas) ......................................................... 45

Gambar 3.11. Wiring Motor Servo pada Minimum Sistem Atmega32 ........................ 48

Gambar 3.12. Analisis Torsi Motor Servo 2 ................................................................ 49

Gambar 3.13. Analisis Torsi Motor Servo 3 ................................................................ 50

Gambar 3.14. Analisis Torsi Motor Servo 4 ................................................................ 51

Gambar 3.15. Analisis Torsi Motor Servo 1 ................................................................ 52

Gambar 3.16. Motor Servo Towerpro SG90 ................................................................ 54

Gambar 3.17. Motor Servo JX PDI-6225-300 ............................................................. 54

Gambar 3.18. Visualisasi Nomor Posisi Area Peletakan Benda .................................. 56

Gambar 3.19. Area Peletakan Objek ............................................................................ 56

Gambar 3.20. Flowchart Secara Keseluruhan .............................................................. 58

Gambar 3.21. Flowchart Akuisisi Citra ....................................................................... 59

Gambar 3.22. Flowchart Image Processing ................................................................ 60

Gambar 3.23. Flowchart Labeling dan Segmentasi ..................................................... 61

Gambar 3.24. Flowchart Proses Pengenalan Bentuk Objek pada Matlab...................... 62

Gambar 3.25. Flowchart Proses Penentuan Posisi Objek pada Matlab ......................... 63

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xviii

Gambar 3.26. (Lanjutan) Flowchart Proses Penentuan Posisi Objek pada Matlab ...... 64

Gambar 3.27. (Lanjutan) Flowchart Proses Penentuan Posisi Objek pada Matlab ....... 64

Gambar 3.28. Flowchart Pengiriman Data dari Matlab ke Mikrokontroler ................... 65

Gambar 3.29. Flowchart Pergerakan Servo Lengan Robot............................................ 67

Gambar 3.30. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 68

Gambar 3.31. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 69

Gambar 3.32. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 70

Gambar 3.33. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 71

Gambar 3.34. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 72

Gambar 3.35. (Lanjutan) Flowchart Pergerakan Servo Lengan Robot ......................... 73

Gambar 3.36. Perancangan GUI pada Matlab .............................................................. 74

Gambar 4.1. Keseluruhan Sistem Lengan Robot ....................................................... 76

Gambar 4.2. Lengan Robot Tampak Samping ........................................................... 76

Gambar 4.3. Lengan Robot Tampak Atas ................................................................... 77

Gambar 4.4. Area peletakan objek beserta batas nilai pixel ....................................... 79

Gambar 4.5. Objek Tiga Dimensi ............................................................................... 80

Gambar 4.6. Kotak Peletakan Objek .......................................................................... 80

Gambar 4.7. Grafik Nilai Area Objek ........................................................................ 82

Gambar 4.8. Grafik Nilai Perimeter Objek ................................................................ 83

Gambar 4.9. Grafik Nilai Thinness Ratio Objek ........................................................ 84

Gambar 4.10. Nilai Centroid Tiap Posisi Peletakan Objek .......................................... 85

Gambar 4.11. Pengujian OCR dan Sudut pada Servo 1 ................................................ 87

Gambar 4.12. Pengujian OCR dan Sudut pada Servo 2 ............................................... 87

Gambar 4.13. Pengujian OCR dan Sudut pada Servo 3 ............................................... 87

Gambar 4.14. Pengujian OCR dan Sudut pada Servo 4 ............................................... 88

Gambar 4.15. Grafik Perbandingan Sudut Pergerakan Servo 1 ..................................... 93

Gambar 4.16. Grafik Perbandingan Sudut Pergerakan Servo 2 ..................................... 94

Gambar 4.17. Grafik Perbandingan Sudut Pergerakan Servo 3 ..................................... 95

Gambar 4.18. Pengujian Sistem Lengan Robot dengan 1 Objek ................................. 100

Gambar 4.19. Pengujian Sistem Lengan Robot dengan 2 Objek ................................ 100

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xix

Gambar 4.20. Pengujian Sistem Lengan Robot dengan 3 Objek ................................ 100

Gambar 4.21. Pengujian Sistem Lengan Robot dengan 4 Objek ................................ 101

Gambar 4.22. Pengujian Sistem Lengan Robot dengan 5 Objek ................................ 101

Gambar 4.23. Listing program inisialisasi Komunikasi USART ................................. 102

Gambar 4.24. (Lanjutan) Listing Program Inisialisasi Komunikasi USART ............... 102

Gambar 4.25. (Lanjutan) Listing Program Inisialisasi Komunikasi USART ............... 103

Gambar 4.26. Listing Program Inisialisasi Webcam .................................................... 103

Gambar 4.27. Listing Program Akuisisi Citra .............................................................. 103

Gambar 4.28. Hasil Capturing Webcam dengan Nilai Treshold 0,1 ............................ 105

Gambar 4.29. Hasil Capturing Webcam dengan Nilai Treshold 0,2 ............................ 105

Gambar 4.30. Hasil Capturing Webcam dengan Nilai Treshold 0,3 ............................ 106

Gambar 4.31. Hasil Capturing Webcam dengan Nilai Treshold 0,4 ............................ 106

Gambar 4.32. Hasil Capturing Webcam dengan Nilai Treshold 0,5 ............................ 107

Gambar 4.33. Listing Program Image Preprocessing .................................................. 107

Gambar 4.34. Listing Program Labeling dan Segmentasi Citra ................................... 108

Gambar 4.35. Listing Program Perhitungan Nilai Area, Perimeter dan

Thinness Ratio Objek ............................................................................. 109

Gambar 4.36. Listing Program Penentuan Bentuk Objek ............................................ 110

Gambar 4.37. (Lanjutan) Listing Program Penentuan Bentuk Objek ........................... 110

Gambar 4.38. Listing Program Perhitungan Centroid ................................................. 111

Gambar 4.39. Listing Program Penentuan Posisi Objek .............................................. 112

Gambar 4.40. Listing Program Penambahan Arraychar Objek di Posisi 4 ................... 113

Gambar 4.41. Listing Program Mengisi Arraychar Secara Lengkap (5 Data) ............. 114

Gambar 4.42. (Lanjutan) Listing Program Mengisi Arraychar

Secara Lengkap (5 Data) ....................................................................... 114

Gambar 4.43. Listing program sort array ..................................................................... 115

Gambar 4.44. Listing Program Pengkonversian Data Arraychar Menjadi Karakter .... 115

Gambar 4.45. (Lanjutan) Listing Program Pengkonversian Data Arraychar

Menjadi Karakter ................................................................................ 116

Gambar 4.46. (Lanjutan) Listing Program Pengkonversian Data Arraychar

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xx

Menjadi Karakter .............................................................................. 116

Gambar 4.47. (Lanjutan) Listing Program Pengkonversian Data Arraychar

Menjadi Karakter .............................................................................. 117

Gambar 4.48. (Lanjutan) Listing Program Pengkonversian Data Arraychar

Menjadi Karakter .............................................................................. 117

Gambar 4.49. (Lanjutan) Listing Program Pengkonversian Data Arraychar

Menjadi Karakter .............................................................................. 118

Gambar 4.50. (Lanjutan) Listing Program Pengkonversian Data Arraychar

Menjadi Karakter .............................................................................. 118

Gambar 4.51. Tampilan GUI Matlab ............................................................................. 119

Gambar 4.52. Listing Program Inisialisasi Komunikasi USART

pada Codevision AVR .......................................................................... 120

Gambar 4.53. Listing Program Inisialisasi Timer0 ....................................................... 121

Gambar 4.54. Deklarasi Tipe Data Variabel untuk Menerima Data Serial USART .... 122

Gambar 4.55. Listing Program Menerima Data Serial USART dengan Scanf ............ 122

Gambar 4.56. Listing Program Mendefinisikan Servo ................................................. 123

Gambar 4.57. Listing Program Pengendali Sudut Putar Motor Servo .......................... 123

Gambar 4.58. Fungsi Program Gerak Kubus di Posisi satu ......................................... 124

Gambar 4.59. Listing Program Fungsi Counter Pergerakan Lengan Robot

Mengambil Objek ................................................................................. 125

Gambar 4.60. Listing Program Gerak Ambil di Posisi 1 .............................................. 126

Gambar 4.61. (Lanjutan) Listing Program Gerak Ambil di Posisi 1 .......................... 126

Gambar 4.62. Listing Program Gerak Siaga ................................................................. 127

Gambar 4.63. (Lanjutan) Listing Program Gerak Siaga ............................................. 128

Gambar 4.64. (Lanjutan) Listing Program Gerak Siaga ........................................... 128

Gambar 4.65. (Lanjutan) Listing Program Gerak Siaga ........................................... 129

Gambar 4.66. Listing Program Gerak Peletakan Kubus .............................................. 129

Gambar 4.67. (Lanjutan) Listing Program Gerak Peletakan Kubus .......................... 130

Gambar 4.68. (Lanjutan) Listing Program Gerak Peletakan Kubus ............................ 130

Gambar 4.69. (Lanjutan) Listing Program Gerak Peletakan Kubus ............................ 131

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xxi

Gambar 4.70. Listing Program Gerak Standby1 ........................................................... 131

Gambar 4.71. (Lanjutan) Listing Program Gerak Standby1 ....................................... 132

Gambar 4.72. (Lanjutan) Listing Program Gerak Standby1 ..................................... 132

Gambar 4.73. (Lanjutan) Listing Program Gerak Standby1 ..................................... 133

Gambar 4.74. Listing Program Standbylagi .................................................................. 133

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xxii

DAFTAR TABEL

Tabel 2.1. Penentuan Ukuran Karakter ..................................................................... 36

Tabel 3.1. Variabel Sudut Tiap Motor Servo untuk Mengambil

dan Meletakan Benda Kubus ..................................................................... 46

Tabel 3.2. Variabel Sudut Tiap Motor Servo untuk Mengambil

dan Meletakan Benda Tabung ................................................................... 46

Tabel 3.2. (Lanjutan) Variabel Sudut Tiap Motor Servo untuk Mengambil

dan Meletakan Benda Tabung ................................................................... 47

Tabel 3.3. Variabel Sudut Tiap Motor Servo untuk Mengambil

dan Meletakan Benda Prisma Segitiga ...................................................... 47

Tabel 3.4. Perhitungan Nilai OCR ............................................................................. 55

Tabel 3.5. Inisialisasi Karakter Objek Kubus Beserta Posisinya ............................... 65

Tabel 3.6. Inisialisasi Karakter Objek Tabung Beserta Posisinya .............................. 66

Tabel 3.7. Inisialisasi Karakter Objek Prisma Segitiga Beserta Posisinya ................. 66

Tabel 3.8. Keterangan GUI ......................................................................................... 74

Tabel 4.1. Batas Nilai pixel pada Sumbu x dan y untuk Masing-Masing Posisi ........ 79

Tabel 4.2. Data Nilai Area Masing-Masing Bentuk Benda ........................................ 81

Tabel 4.3. Data Nilai Perimeter Masing-Masing Bentuk Benda ............................... 82

Tabel 4.4. Data Nilai Thinness Ratio Masing-Masing Bentuk Benda ........................ 83

Tabel 4.5. Nilai Centroid tiap posisi peletakan objek ................................................ 85

Tabel 4.6. Persentase Error Nilai OCR Motor Servo JX-PDI-6225-300 (Servo 1) ... 89

Tabel 4.7. Persentase Error Nilai OCR Motor Servo Towerpro SG90 ....................... 90

Tabel 4.8. Sudut Tiap Servo untuk Mengambil dan Meletakan Objek Kubus ........... 91

Tabel 4.9. Sudut Tiap Servo untuk Mengambil dan Meletakan Objek Tabung .......... 91

Tabel 4.10. Sudut Tiap Servo untuk Mengambil dan Meletakan Objek Prisma .......... 92

Tabel 4.11. Persentase Error Nilai Sudut Motor Servo Satu ....................................... 92

Tabel 4.12. (Lanjutan) Persentase Error Nilai Sudut Motor Servo Satu ..................... 93

Tabel 4.13. Persentase Error Nilai Sudut Motor Servo Dua ........................................ 93

Tabel 4.14. Persentase Error Nilai Sudut Motor Servo Tiga ....................................... 94

Tabel 4.15. Nilai Centroid Peletakan Objek Sebelum dan Sesudah di Pindahkan ...... 96

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

xxiii

Tabel 4.16. Pengujian Keberhasilan Sistem Mengenali Bentuk dan Posisi Objek ...... 97

Tabel 4.17. Pengujian lengan robot saat mengambil dan meletakan objek .................. 98

Tabel 4.18. Pengujian lengan robot saat mengambil dan meletakan objek .................. 99

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

1

BAB I

PENDAHULUAN

1.1. Latar Belakang

Pada era digital ini, teknologi berkembang semakin pesat. Perkembangan teknologi

memiliki peran yang penting dalam menunjang aktivitas manusia untuk mempermudah

melakukan pekerjaan agar lebih efektif dan efisien. Salah satu hasil perkembangan teknologi

yaitu teknologi di bidang computer vision dan lengan robot. Computer vision merupakan

disiplin ilmu pengetahuan yang berfokus pada sistem kecerdasan buatan dan berhubungan

dengan akuisisi serta image processing [1]. Sedangkan lengan robot, atau biasa disebut robot

manipulator merupakan gabungan dari beberapa segmen yang secara umum terbagi menjadi

3 bagian utama yaitu arm, wrist dan gripper [2]. Computer vision banyak diterapkan pada

bidang kesehatan, otomasi industri, militer dan kontrol robotika. Pada bidang robotika

misalnya, computer vision mampu memberikan kecerdasan buatan pada lengan robot untuk

memindahkan benda berdasarkan informasi posisi, warna, ukuran dan bentuk benda. Sistem

kecerdasan buatan pada lengan robot dirancang menggunakan algoritma-algoritma yang

memungkinkan robot bergerak secara otomatis [3].

Lengan robot memiliki peran penting dalam bidang industri, misalnya untuk

mengurangi resiko kecelakaan kerja bagi manusia yang bekerja pada bidang pekerjaan yang

berhubungan dengan bahan-bahan kimia berbahaya dan pengangkatan benda-benda berat,

meminimalisasi human error sehingga meningkatkan produktifitas industri, serta untuk

meng-otomasi bidang pekerjaan yang masih dilakukan secara manual agar proses produksi

menjadi lebih efisien. Dalam penerapannya, lengan robot berfungsi untuk memindahkan

benda, tool, material, produk industri serta berbagai macam peralatan tertentu lewat

pergerakan yang terprogram untuk melakuan berbagai macam tugas [2].

Pada penelitian terdahulu yang dilakukan oleh Hasan [4] mengenai aplikasi

pengenalan objek untuk lengan robot pemisah benda berdasarkan bentuk, peletakan benda

hanya pada satu posisi yang sudah ditentukan sebelumnya dan lengan robot mengambil

benda dari satu posisi kemudian memindahkannya menuju salah satu dari empat posisi

peletakan benda, sesuai dengan bentuk bendanya (point to multipoint). Selain itu, orientasi

peletakan benda juga tidak acak. Dari penelitian tersebut dan berdasarkan manfaat lengan

robot serta computer vision, maka peneliti memiliki gagasan membuat lengan robot yang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

2

dapat mengambil benda dari dua belas posisi di dalam area kerja dan memindahkannya

menuju salah satu dari tiga posisi peletakkan benda (multipoint to multipoint), serta orientasi

dan posisi peletakan benda yang bisa acak di dalam area kerja lengan robot. Benda diletakan

di area kerja lengan robot yang berada dibawah camera webcam untuk diproses dan dikenali

bentuk dan posisinya. Setelah bentuk dan posisi benda dikenali, maka lengan robot akan

mengambil benda tersebut untuk dipindahkan dan diletakkan pada tempat yang telah

ditentukan.

1.2. Tujuan dan Manfaat

Tujuan penulisan tugas akhir ini yaitu mengaplikasikan computer vision pada lengan

robot agar dapat memindahkan benda yang diletakan pada area kerja lengan robot secara

realtime.

Manfaat dari pembuatan tugas akhir ini adalah :

a. Untuk media pembelajaran mengenai computer vision dan pengenalan objek.

b. Untuk dasar penelitian mengenai aplikasi computer vision pada lengan robot.

Pengembangan dari pembuatan tugas akhir ini yaitu lengan robot industri otomatis

untuk memindahkan benda-benda berat maupun material tertentu yang memiliki bentuk

berbeda, serta orientasi dan posisi letak benda yang acak secara otomatis.

1.3. Batasan Masalah

Pada perancangan alat ini, penulis berfokus pada pembuatan lengan robot beserta

programnya dengan menggunakan code vision AVR dan computer vision sebagai image

processing-nya menggunakan software MATLAB, sedangkan untuk hardware berupa

camera webcam, lengan robot, dan USB to TTL converter menggunakan modul yang sudah

jadi dan tersedia dipasaran. Penulis menetapkan beberapa batasan masalah pada perancangan

ini, yaitu sebagai berikut :

1) Masukan berupa tiga buah benda yaitu kubus, tabung dan prisma segitiga yang

berwarna kuning dan terbuat dari Styrofoam.

2) Ukuran benda yang digunakan yaitu :

a) Tabung (diameter = 3,5 cm, tinggi = 3,5 cm).

b) Prisma Segitiga (Tinggi = 3,5 cm, panjang rusuk segitiga = 3,5 cm).

c) Kubus (panjang rusuk = 3,5 cm).

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

3

3) Jumlah maksimal benda yang dapat diletakan pada area peletakan benda sebanyak 5

buah.

4) Menggunakan camera webcam Logitech C170 untuk mengidentifikasi benda yang

terhubung dengan software MATLAB.

5) Jarak peletakan camera webcam menyesuaikan dengan luas area peletakan benda agar

citra yang di akuisisi webcam hanya area peletakan benda.

6) Camera webcam diletakan diatas area peletakan benda.

7) Area peletakan benda memiliki ukuran panjang 28 cm, lebar 21 cm dan berwarna

hitam.

8) Area peletakan benda terbagi menjadi 12 posisi, tiap-tiap posisi berukuran 7 cm x 7cm.

9) Benda diletakan pada titik tengah area berukuran 7 cm x 7 cm dengan posisi yang

acak.

10) Objek tabung dan prisma segitiga diletakan dengan orientasi yang acak, sedangkan

orientasi objek kubus akan dievaluasi lebih lanjut.

11) Pengambilan benda dilakukan berurutan dari nomor posisi terkecil.

12) Jarak antara area peletakan benda dengan lengan robot sejauh 10 cm.

13) Lengan robot dan gripper terbuat dari bahan akrilik dengan tebal 3 mm.

14) Komunikasi antara laptop dengan ATmega32 menggunakan komunikasi serial

USART yang dihubungkan dengan modul yang sudah tersedia di pasaran yaitu modul

USB to TTL converter.

15) Tempat peletakan benda berada disamping lengan robot. Terdapat tiga buah tempat

untuk meletakan benda yaitu kotak berwarna hijau untuk meletakan benda kubus,

kotak berwarna merah untuk meletakan benda tabung dan kotak berwarna kuning

untuk meletakan benda berbentuk prisma segitiga.

16) Terdapat tampilan GUI pada MATLAB sebagai user interface agar dapat melihat data

benda yang dikenali.

17) Keluaran pada GUI berupa bentuk benda dan posisinya.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

4

1.4. Metodologi Penelitian

Langkah-langkah yang dilakukan peneliti dalam pengerjaan tugas akhir ini yaitu :

1) Pengumpulan bahan-bahan referensi berupa buku, e-book dan jurnal ilmiah yang

membahas computer vision dengan MATLAB, pemrosesan citra, lengan robot,

robotika modern, pemrogaman dengan codevision AVR, ATmega32 serta buku-buku

penunjang lainnya.

2) Perancangan hardware dan software. Tahap ini merupakan perancangan desain lengan

robot beserta skema-skema rangkaian pendukung dan pembuatan flowchart untuk

memprogram ATmega32 dan MATLAB.

3) Pembuatan hardware dan software. Tahapan ini berisi tentang pembuatan alat sesuai

dengan desain lengan robot yang telah dirancang berserta program-program yang

mengacu pada flowchart yang telah dibuat pada perancangan.

4) Proses pengambilan data. Teknik pengambilan data dilakukan dengan mencari data

pada masing-masing benda, melihat tanggapan sistem dalam mendeteksi bentuk dan

posisi benda, sudut motor servo pada lengan robot, dan keakuratan lengan robot saat

memindahhkan benda.

5) Analisa dan penyimpulan hasil percobaan. Analisa dan penyimpulan hasil percobaan

dapat dilakukan dengan melihat persentase error alat saat mendeteksi bentuk benda,

dan tingkat keberhasilan lengan robot saat memindahkan benda berdasarkan bentuk

dan posisinya.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

5

BAB II

DASAR TEORI

Pada bab ini akan dibahas mengenai landasan-landasan teori yang digunakan dalam

pembuatan tugas akhir “Aplikasi Computer Vision Pada Lengan Robot Pemindah Benda

Berdasarkan Bentuk Dan Posisi”.

2.1. Computer Vision

Computer vision merupakan teknologi paling penting dimasa yang akan datang dalam

pengembangan robot interaktif. Computer vision merupakan bidang pengetahuan yang

berfokus pada bidang sistem kecerdasan buatan dan berhubungan dengan akuisisi data dan

pemrosesan citra. Penerapan computer vision pada lengan robot misalnya, digunakan untuk

mengetahui pergerakan lengan robot dalam upaya mengambil atau meletakkan suatu benda

disekitarnya (image-based visual servoing) [1].

Computer vision mengkombinasikan disiplin ilmu pemrosesan citra dan pengenalan

pola. Pemrosesan citra merupakan proses pengolahan citra digital untuk mendapatkan citra

dengan kualitas yang lebih baik, sedangkan pengenalan pola merupakan proses

mengidentifikasi objek pada suatu citra digital. Proses identifikasi citra bertujuan untuk

mendapatkan informasi dari citra digital. Hasil dari proses pengolahan citra dan pengenalan

pola tersebut akan menghasilkan informasi yang digunakan untuk mengendalikan

pergerakan robot [5].

2.1.1. Pemrosesan Citra (Image Processing)

2.1.1.1. Definisi Citra

Secara matematis, sebuah citra dapat didefinisikan sebagai fungsi dua dimensi f (x,y),

dimana x dan y adalah koordinat spasial (plane) dan f adalah nilai intensitas warna pada

koordinat x dan y. Nilai f, x dan y adalah nilai berhingga. Citra digital memiliki nilai-nilai f,

x dan y yang bersifat diskrit, seperti citra yang disimpan di memori komputer. Citra digital

merupakan citra dua dimensi (2D) yang dinyatakan dalam bentuk matriks berukuran N baris

dan M kolom dengan jumlah elemen berhingga. Setiap elemen matriks citra atau biasa

disebut piksel (picture element) memiliki posisi koordinat x dan y serta nilai tertentu.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

6

Koordinat (0,0) merupakan titik origin dari sebuah citra digital [6]. Sistem koordinat citra

dapat dilihat pada gambar 2.1.

Gambar 2.1. Sistem koordinat citra berukuran M x N (M baris dan N kolom) [7]

Citra digital dapat memiliki noise. Noise adalah gambar atau pixel yang tidak

diinginkan dan mengganggu kualitas citra. Noise tersebut bisa terjadi sejak pengambilan

citra menggunakan sensor camera seperti webcam. Level pencahayaan dan suhu sensor

camera menjadi faktor utama yang mempengaruhi tingkat noise yang dihasilkan pada citra

digital. Noise tersebut perlu dihilangkan untuk mendapatkan kualitas citra yang lebih baik

[4].

2.1.1.2. Citra Grayscale

Proses awal yang banyak dilakukan dalam pemrosesan citra digital adalah dengan

mengubah citra berwarna menjadi citra grayscale, hal ini bertujuan untuk menyederhanakan

model citra berwarna yang terdiri dari tiga layer matriks yaitu red-layer, green-layer dan

blue layer menjadi satu layer matrik citra grayscale [4].

Citra grayscale merupakan citra digital yang hanya memiliki suatu nilai kanal pada

setiap piksel nya. Warna yang dimiliki adalah warna hitam, putih dan abu-abu. Citra

grayscale sudah tidak memiliki komponen RGB (Red Green Blue), yang ada adalah derajat

keabuan yang direpresentasikan dengan intensitas 0 sampai 255. Nilai 0 menyatakan hitam

dan nilai 255 menyatakan putih [6]. Citra grayscale beserta representasi nilai keabuannya

ditunjukan pada gambar 2.2.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

7

Gambar 2.2. Citra grayscale beserta representasi nilai keabuannya [7]

2.1.1.3. Citra Biner

Citra biner adalah citra yang setiap pikselnya hanya dinyatakan dengan sebuah nilai

dari dua kemungkinan (yaitu 0 dan 1). Nilai 0 menyatakan warna hitam dan nilai 1

menyatakan warna putih. Citra sbiner banyak digunakan dalam image processing, misalnya

untuk memperoleh tepi bentuk, luas area dan ukuran suatu objek pada citra digital [6].

Contoh citra biner ditunjukan pada gambar 2.3.

Gambar 2.3. Citra biner dan representasi nilai binernya [7]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

8

2.1.1.4. Konversi Citra Grayscale Ke Citra Biner

Proses pengkonversian citra grayscale menjadi citra biner merupakan tahap awal

dalam image processing. Dalam proses pengkonversian ini, dibutuhkan suatu nilai batas

yang disebut dengan threshold. Tresholding ini digunakan untuk mengatur jumlah derajat

keabuan pada citra. Nilai intensitas citra yang lebih dari atau sama dengan nilai threshold

akan diubah menjadi 1 (berwarna putih) sedangkan nilai intensitas citra yang kurang dari

nilai threshold akan diubah menjadi 0 (berwana hitam). Sehingga citra keluaran dari hasil

thresholding adalah berupa citra biner [8]. Persamaan yang digunakan untuk mengkonversi

nilai piksel citra grayscale menjadi biner pada metode thresholding ditunjukan pada

persamaan 2.1 sebagai berikut :

𝑔(𝑥, 𝑦) = {1, 𝑗𝑖𝑘𝑎 𝑓(𝑥, 𝑦) ≥ 𝑇

0, 𝑗𝑖𝑘𝑎 𝑓(𝑥, 𝑦) < 𝑇 (2.1)

Keterangan :

f (x,y) : citra grayscale

g (x,y) : citra biner

T : nilai threshold

Contoh perubahan nilai piksel pada proses thresholding ditunjukkan oleh gambar 2.4

sedangkan citra hasil thresholding dengan beberapa variasi nilai threshold ditunjukan oleh

gambar 2.5.

Gambar 2.4. Ilustrasi perubahan nilai piksel pada proses thresholding [8]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

9

Gambar 2.5. Citra hasil thresholding dengan beberapa variasi nilai threshold [8]

Gambar 2.5 menunjukan bahwa semakin kecil nilai threshold maka citra biner akan di

dominasi oleh warna putih, sedangkan semakin besar nilai threshold maka citra biner akan

di dominasi oleh warna hitam [8].

2.1.1.5 Noise Filtering

Suatu citra digital dapat memiliki noise. Noise merupakan gambar atau pixel yang

mengurangi kualitas citra. Noise pada citra digital dapat berupa titik-titik putih di area citra

yang berwarna hitam ataupun titik-titik hitam pada area yang berwarna putih. Ada beberapa

penyebab noise, yaitu gangguan fisis pada pada alat akuisisi serta intensitas pencahayaan.

Noise tersebut dapat mempengaruhi informasi yang terdapat pada citra. Untuk meningkatkan

kualitas citra dan mengurangi noise supaya informasi yang ada pada citra dapat diolah dan

dianalisa dengan baik dapat dilakukan dengan median filtering [9].

Median filtering merupakan suatu metode yang terfokus pada nilai median atau nilai

tengah dari jumlah total pixel yang ada disekelilingnya. Pada umumnya, median filtering

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

10

akan mengganti pixel-pixel yang berderau/noise dengan suatu nilai yang dekat dengan pixel-

pixel disekitarnya [10]. Nilai pixel pada pusat bidang window dapat dihitung dengan mencari

nilai median dari nilai intensitas sekelompok pixel yang telah diurutkan jika window tersebut

ditempatkan pada suatu bidang citra [9]. Secara matematis, rumus median filtering

ditunjukan pada persamaan 2.2 sebagai berikut :

𝑔(𝑥, 𝑦) = 𝑀𝑒𝑑𝑖𝑎𝑛{𝑓(𝑥 − 𝑖, 𝑦 − 𝑗), (𝑖, 𝑗) ∈ 𝑊} (2.2)

g (x,y) merupakan citra yang dihasilkan dari citra f (x,y), sedangkan W merupakan window

yang ditempatkan pada bidang citra dan (i,j) elemen dari window. Median filtering dan

contoh noise filtering ditunjukan oleh gambar 2.6 dan gambar 2.7.

(a) (b)

Gambar 2.6. Median Filtering (a) input (b) output

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

11

(a) (b)

Gambar 2.7. Noise filtering pada citra (a) input (b) output

2.1.1.6. Labeling objek

Citra biner dapat merepresentasikan sejumlah objek. Jumlah objek dalam citra biner

dihitung dengan cara memberi label pada objek. Pelabelan terhadap objek merupakan suatu

tindakan untuk memberi label berbeda (memberi nomor) pada setiap objek yang terdapat

dalam citra biner. Pada proses pelabelan, piksel berlabel nol adalah latar belakang, piksel

berlabel satu merupakan label pada objek pertama, piksel berlabel dua merupakan label pada

objek ke dua, dan seterusnya. Pelabelan pada citra biner digunakan untuk menghitung

jumlah objek dalam suatu citra [6]. Contoh labeling objek pada citra biner ditunjukan pada

gambar 2.8.

(a) (b)

Gambar 2.8. Labeling objek (a) citra input (b) citra hasil labeling objek

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

12

2.1.1.7. Segmentasi Citra

Segmentasi citra merupakan salah satu tahapan penting dalam proses pengenalan

bentuk dan posisi objek dalam citra. Proses segmentasi citra bertujuan untuk memisahkan

antara objek dengan backgroundnya. Segmentasi citra dilakukan untuk mempermudah

dalam proses pengidentifikasian suatu objek dalam citra digital. Pada umumnya keluaran

hasil segmentasi citra berupa citra biner di mana objek (foreground) yang dikehendaki

berwarna putih (1), sedangkan background yang ingin dihilangkan berwarna hitam (0) [11].

Proses segmentasi ditunjukan pada Gambar 2.9.

Gambar 2.9. Proses segmentasi (a) citra hasil labeling (b) segmentasi objek pertama (c)

segmentasi objek kedua

Pada gambar 2.9 dilakukan proses segmentasi objek. Pada segmentasi objek pertama,

jika terdapat nilai pixel yang tidak sama dengan 1, maka nilai pixel diubah menjadi bernilai

0 sedangkan untuk pixel yang bernilai 1 akan tetap bernilai 1 sehingga didapatkan hasil

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

13

segmentasi objek pertama. Pada segmentasi objek kedua, jika terdapat nilai pixel yang tidak

sama dengan 2, maka nilai pixel diubah menjadi bernilai 0 sedangkan untuk pixel yang

bernilai 2 akan diubah menjadi bernilai 1 sehingga didapatkan hasil segmentasi objek kedua.

2.1.2. Pengenalan Bentuk Dan Penentuan Posisi

Bentuk dan posisi merupakan salah satu ciri yang dapat diekstrak dari suatu objek

untuk membedakan objek tersebut dengan objek lainnya. Untuk dapat membedakan objek

satu dengan objek lainnya tersebut dilakukan identifikasi pada objek. Identifikasi tersebut

dapat berupa pengenalan bentuk dan posisi.

2.1.2.1. Pengenalan Bentuk

2.1.2.1.1. Area

Area merupakan banyaknya pixel pada suatu objek (luas objek). Objek pada citra biner

direpresentasikan dengan warna putih. Nilai pixel citra berwarna putih pada area tersebut

bernilai 1. Jumlah pixel (yang bernilai 1) pada suatu objek dalam citra digital adalah nilai

areanya. Jumlah pixel area dari setiap objek berbeda beda. Perbedaan nilai area objek ini

digunakan dalam perhitungan thinnes ratio untuk menentukan bentuk suatu objek dalam

citra digital [7]. Area objek persegi berwarna putih ditunjukan oleh gambar 2.10. Rumus

area ditunjukan pada persamaan 2.3 berikut [7] :

𝐴𝑖 = ∑ ∑ 𝑂𝑖(𝑥, 𝑦)𝑁𝑦=1

𝑀𝑥=1 (2.3)

Keterangan :

𝐴𝑖 = Jumlah pixel dari luas objek (area)

M = Kolom pixel

N = Baris pixel

Oi = Objek dalam suatu citra

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

14

Gambar 2.10. Area objek persegi

Berdasarkan gambar 2.10, dapat diketahui nilai area objek persegi menggunakan

persamaan 2.3. Area objek persegi tersebut adalah 9. Nilai area ini didapatkan dari jumlah

pixel yang bernilai 1 pada objek.

2.1.2.1.2. Perimeter

Perimeter merupakan banyaknya pixsel pada boundary atau tepi objek. Perimeter

didapatkan dari hasil deteksi tepi suatu objek dalam citra digital. Deteksi tepi dapat

dilakukan dengan kontur moore. Contoh kontur moore terdapat di lampiran. Jumlah pixel

perimeter dari setiap objek berbeda beda. Perbedaan nilai perimeter dari objek digunakan

dalam perhitungan thinnes ratio untuk menentukan bentuk suatu objek dalam citra digital

Jumlah pixel tersebut dihitung berdasarkan pixel (yang bernilai 1) pada tepi suatu objek [7].

Perimeter objek persegi ditunjukan oleh gambar 2.11.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

15

Gambar 2.11. Perimeter objek persegi

Berdasarkan gambar 2.11, dapat diketahui nilai perimeter objek persegi tersebut

adalah 8. Nilai perimeter ini didapatkan dari jumlah pixel yang bernilai 1 pada tepi objek.

2.1.2.1.3. Thinness Ratio

Thinness ratiomerupakan perbandingan banyaknya pixel area dengan banyaknya pixel

perimeter dari suatu objek dalam citra digital. Setiap bentuk objek memiliki nilai thinness

ratioyang berbeda beda. Nilai tersebut digunakan sebagai perbandingan untuk menentukan

bentuk suatu objek yang diamati. Untuk benda yang bentuknya sama tetapi ukuranya

berbeda, nilai thinness rationya tetap sama, hal ini karena perbandingan jumlah pixel area

dan pixel perimeternya tetap sama [7]. Rumus thinnes ratio ditunjukan pada persamaan 2.4.

𝑇𝑖 =4𝜋𝐴𝑖

𝑃𝑖2 (2.4)

Keterangan :

Ti = Thinness ratio

Ai = jumlah pixel dari luas objek (area)

Pi = jumlah pixel dari keliling objek (perimeter)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

16

Dari gambar 2.11 dan 2.12 didapatkan nilai area (Ai) = 9 dan nilai perimeter (Pi) = 8.

Dari nilai area dan perimeter, dapat dicari nilai thinness ratio. Contoh perhitungan nilai

thinness ratio sebagai berikut :

𝑇𝑖 =4𝜋𝐴𝑖

𝑃𝑖2

𝑇𝑖 =4𝜋 × 9

(8)2

𝑇𝑖 = 1,767

Berdasarkan hasil perhitungan, didapatkan nilai thinness ratio yaitu 1,767.

2.1.2.2. Penentuan Posisi

2.1.2.2.1. Centroid

Centroid merupakan titik pusat dari area suatu objek dengan koordinat (x,y) pada

suatu citra digital. Koordinat (x,y) dihitung berdasarkan nilai awal yang dimulai dari di titik

origin (0,0) citra. Centroid dari setiap objek dalam suatu citra memiliki nilai yang berbeda

beda. Perbedaan nilai centroid disebabkan oleh letak dari masing-masing objek dalam citra.

Nilai centroid tersebut yang digunakan untuk menentukan posisi suatu objek dalam suatu

citra [7]. Contoh centroid objek ditunjukan oleh gambar 2.12. Rumus centroid ditunjukan

pada persamaan 2.5 dan 2.6.

𝑥𝑖 =1

𝐴𝑖∑ ∑ 𝑥𝑂𝑖

𝑁𝑦=1

𝑀𝑥=1 (𝑥, 𝑦) (2.5)

𝑦𝑖 =1

𝐴𝑖∑ ∑ 𝑦𝑂𝑖

𝑁𝑦=1

𝑀𝑥=1 (𝑥, 𝑦) (2.6)

Keterangan :

xi = koordinat pada sumbu x

yi = koordinat pada sumbu y

Ai = jumlah pixel dari luas objek (area)

M = kolom pixel

N = baris pixel

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

17

Oi = objek dalam suatu citra

(a) (b)

Gambar 2.12. Titik pusat (centroid) (a) citra objek persegi (b) centroid objek persegi

Berdasarkan gambar 2.12a, contoh perhitungan nilai centroid dari objek persegi

sebagai berikut :

Ai = 9

a) 𝑥𝑖 =(2𝑥1)+(2𝑥1)+(2𝑥1)+(3𝑥1)+(3𝑥1)+(3𝑥1)+(4𝑥1)+(4𝑥1)+(4𝑥1)

9

𝑥𝑖 =27

9

𝑥𝑖 = 3

b) 𝑦𝑖 =(2𝑥1)+(2𝑥1)+(2𝑥1)+(3𝑥1)+(3𝑥1)+(3𝑥1)+(4𝑥1)+(4𝑥1)+(4𝑥1)

9

𝑦𝑖 =27

9

𝑦𝑖 = 3

Centroid dari objek persegi pada gambar 2.12 terletak pada koordinat (3,3). Centroid

objek persegi ditunjukan oleh gambar 2.12b.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

18

2.1.3. Webcam

Webcam atau web camera adalah sebuah kamera video digital kecil yang dihubungkan

ke komputer melalui port USB atau port COM. Webcam bermanfaat dalam bidang

telekomunikasi, bidang keamanan dan bidang industri. Sebagai contoh webcam digunakan

untuk videocall chatting, surveillience camera, dan sebagai video conference oleh beberapa

user. Pada bidang pengolahan citra, webcam digunakan untuk meng-capture citra analog

sehingga diperoleh citra digital yang kemudian diolah dengan perangkat lunak seperti matlab

[12]. Webcam logitech C170 ditunjukan oleh gambar 2.13, sedangkan spesifikasi webcam

terdapat di lampiran.

Gambar 2.13. Webcam logitech C170 [13]

2.2. Lengan Robot

Lengan robot atau robot manipulator merupakan sekumpulan hubungan mekanik

yang terdiri dari rangkaian kinematik yang secara umum terbagi menjadi tiga bagian yaitu

arm, wrist, dan gripper. Konfigurasi robot digunakan untuk mengklasifikasikan robot-robot

industri. Konfigurasi robot mengarah pada bentuk geometri dari manipulator robot, yaitu

informasi hubungan dari setiap joint pada manipulator. Robotics Industries Associations

(RIA) mendefinisikan robot sebagai manipulator didesain untuk memindahkan material,

benda, alat atau peralatan tertentu lewat pergerakan yang terprogram [2]. Sistem lengan

robot memiliki empat komponen dasar, yaitu : Manipulator, end effector, aktuator,

controller.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

19

a. Manipulator

Manipulator adalah bagian mekanik yang dapat difungsikan untuk memindah,

mengangkat dan memanipulasi benda kerja [14]. Manipulator pada lengan robot memiliki

tiga bagian, yaitu bagian dasar (base), bagian lengan (arm) dan bagian pergelangan (wrist).

Manipulator lengan robot ditunjukan pada gambar 2.14.

Gambar 2.14. Manipulator pada lengan robot [15]

Bagian dasar (base) berfungsi untuk menyangga lengan robot dan biasanya terpasang

secara paten pada area kerja. Hal ini bertujuan untuk menjaga keseimbangan lengan robot

ketika bergerak. Bagian lengan (arm) berfungsi untuk memposisikan end effector agar dapat

mengambil benda dan bagian pergelangan (wrist) berfungsi untuk mengatur orientasi dari

end effector. Bagian ujung pada lengan robot terpasang end effector atau biasa disebut

dengan gripper sebagai instrument untuk mencengkeram benda [4].

b. End Effector

End effector dapat ditemukan hampir disemua aplikasi robot, walaupun

keberadaannya bukan merupakan komponen dasar dari sistem robot. End effector berfungsi

sebagai bagian terakhir yang menghubungkan manipulator dengan objek [4].

Contoh end effector pada lengan robot yaitu gripper. Gripper berfungsi untuk

mencengkram objek. Contoh gripper ditunjukan pada gambar 2.15.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

20

Gambar 2.15. Gripper lengan robot [16]

c. Aktuator

Aktuator adalah bagian penting pada robot yang berfungsi sebagai penggerak dari

perintah yang diberikan oleh pengontrol. Biasanya aktuator merupakan piranti

elektromekanik yang menghasilkan daya gerakan [1]. Aktuator dasar yang sering digunakan

sebagai penghasil gerakan dapat dibagi menjadi tiga bagian, yaitu aktuator berbasis motor

listrik (motor DC magnet permanen (DC-MP), motor DC brushless (DC-BL), motor DC

servo (DC-SV)), aktuator pneumatik dan aktuator hidrolik [14].

d. Kontroler

Kontroler adalah rangkaian elektronik berbasis mikroprosesor yang berfungsi sebagai

pengendali sistem mekanik dalam membentuk fungsi kerja [3]. Kontroler mmenyimpan

informasi berupa data-data pergerakan lengan robot yang telah diprogram dengan bahasa

pemrogaman tertentu pada mikrokontroler. Informasi dan data-data tersebut disimpan dalam

memori. Data tersebut dapat dioutputkan untuk menentukan gerakan dari manipulator.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

21

2.2.1. Motor Servo

Motor servo merupakan motor DC yang memiliki kualitas tinggi. Motor ini sudah

dilengkapi sistem kontrol. Pada aplikasinya, motor servo sering digunakan sebagai kontrol

loop tertutup, sehingga dapat menangani perubahan posisi secara tepat dan akurat begitu

juga dengan pengaturan kecepatan dan percepatan [2]. Motor servo disusun dari sebuah

motor DC, gearbox, variabel resistor atau potensiometer dan rangkaian kontrol.

Potensiometer berfungsi untuk menentukan batas maksimal putaran sumbu (axis) motor

servo, sedangkan sudut dari sumbu motor servo diatur dengan memberikan variasi lebar

pulsa PWM pada bagian pin kontrolnya. [18]. Contoh model fisik servo dan pengkabelannya

ditunjukan pada gambar 2.16 dan gambar 2.17.

Gambar 2.16. Model fisik motor servo hitec HS-300 [18]

Gambar 2.17. Sistem pengkabelan motor servo [19]

Sistem pengkabelan motor servo terdiri dari 3 bagian, yaitu Vcc, Gnd, dan Kontrol

(PWM). Penggunaan PWM pada motor servo berbeda dengan penggunaan PWM pada

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

22

motor DC. Pada motor servo, pemberian nilai PWM akan membuat motor servo bergerak

pada posisi tertentu lalu berhenti (kontrol posisi) [2].

Motor servo dibedakan menjadi dua, yaitu continous servo motor dan uncontinous

servo motor. Motor servo tersebut dapat bergerak dua arah yaitu clock wise (CW) dan

Counter Clock Wise (CCW). Continous servo motor dapat berputar penuh 3600 sehingga

memungkinkan untuk bergerak rotasi, sedangkan uncontinous servo motor hanya dapat

berputar 1800. Cara pengontrolan servo ditunjukan pada gambar 2.18.

Gambar 2.18. Cara pengontrolan motor servo [2]

Prinsip utama pada pengontrolan motor servo adalah pemberian nilai PWM pada

kontrolnya. Perubahan duty cycle akan menentukan perubahan posisi dari motor servo.

Frekuensi PWM yang digunakan pada pengontrolan motor servo selalu mempunyai

frekuensi 50 Hz sehingga pulsa yang dihasilkan setiap 20 ms. Lebar pulsa pengontrolan

menentukan posisi servo yang dikehendaki. Seperti contoh pada gambar 2.18 yaitu untuk

menggerakkan servo ke posisi 900, maka dengan cara memberikan pulsa high selama 1,5 ms

dan pulsa low selama 18,5 ms [2].

2.2.2. Torsi/Momen Gaya

Torsi atau momen gaya (τ) adalah kemampuan sebuah gaya yang bekerja pada suatu

benda untuk memutar benda tersebut terhadap titik poros tertentu [20]. Jika pada benda

bekerja lebih dari satu torsi, maka torsi total adalah penjumlahan dari seluruh torsi yang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

23

bekerja. Gaya yang bekerja pada benda dapat menuju berbagai arah, tetapi torsi pada benda

akan bernilai maksimal jika arah gaya tegak lurus (θ = 90) dengan benda atau lengan.

Gambar 2.19 menunjukan penguraian vektor gaya yang bekerja pada lengan dalam

menganalisis torsi [21].

Gambar 2.19. Vektor gaya pada lengan [21]

Massa dan posisi gaya terhadap poros putaran mempengaruhi besarnya torsi yang

dihasilkan, sehingga semakin besar torsi (τ), dengan jarak antara sumbu putaran dan letak

gaya yang sama, maka gaya F untuk memutar benda semakin besar [22]. Rumus torsi pada

benda yang bergerak translasi ditunjukan pada persamaan 2.7

τ = F r sin θ (2.7)

Keterangan :

τ = Torsi (N.m)

L atau r = Jarak tegak lurus antara garis kerja gaya denga sumbu rotasi (m)

F = Gaya (N), F = massa x gravitasi bumi

θ = Derajat sumbu putar

Contoh perhitungan torsi, jika beban sebesar 10 N (F) dan panjang lengan 10 cm (θ =

900), maka besar torsi adalah 1 N.m. Berdasarkan persoalan, dibutuhkan motor servo yang

memiliki torsi lebih besar dari 1 N.m untuk dapat mengangkat beban tersebut [2].

Torsi tidak hanya menyebabkan gerak translasi, tetapi juga menyebabkan benda

bergerak rotasi (horizontal). Torsi digunakan untuk menggerakan benda dari posisi diam

hingga bergerak. Torsi yang menyebabkan benda berotasi dapat dihitung berdasarkan

hukum II Newton [23]. Resultan torsi untuk benda yang bergerak rotasi ditunjukan oleh

persamaan 2.8 dan 2.9, 2.10, sedangkan kecepatan sudut rotasi ditunjukan oleh persamaan

2.11. Gambar 2.20 menunjukan benda yang berotasi pada porosnya.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

24

∑ τ = 𝐼𝛼 (2.8)

∑ τ = (𝑚𝑟2) 𝑥 (∆𝜔

∆𝑡) (2.9)

∑ τ = (𝑚𝑟2) 𝑥 (𝜔1 − 𝜔0

𝑡1 − 𝑡0) (2.10)

𝜔 = 2𝜋

𝑇 (2.11)

Keterangan :

∑ τ = resultan torsi ( N.m)

I = momen inersia (kg.m2)

𝛼 = percepatan sudut (rad/s2)

𝑚 = massa (kg)

r = jari-jari atau jarak antara sumbu rotasi dengan gaya (m)

𝜔 = kecepatan sudut (rad/s)

T = periode (s)

Gambar 2.20. Gerak rotasi pada benda [24]

2.2.3. Invers Kinematics Robot Arm 2 DOF (Degree Of Freedom)

Kinematika didefinisikan sebagai studi pergerakan robot (motion) tanpa

memperhatikan gaya/force atau faktor lainnya yang mempengaruhi pergerakan tersebut.

Pada analisa kinematik, posisi, kecepatan, dan akselerasi dari seluruh link dihitung tanpa

memperhatikan gaya yang menyebabkan pergerakannya [2]. Invers kinematika merupakan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

25

analisa kinematik untuk mendapatkan besar sudut dari masing-masing joint berdasarkan

panjang lengan robot dan data koordinat posisi yang akan dituju.

Lengan robot dua DOF merupakan robot yang memiliki dua lengan (a1 dan a2) dan

memiliki dua derajat kebebasan (dua servo penggerak). Contoh lengan robot dua DOF

ditunjukan pada gambar 2.21.

Gambar 2.21. Robot lengan 2 sendi (2 DOF) [25]

Dengan memperhitungkan panjang lengan robot dan koordinat yang akan dituju,

analisa invers kinematik lengan robot yang memiliki 2 derajat kebebasan ( 2 DOF) dapat

dihitung dengan rumus yang ditunjukan pada persamaan 2.12 dan 2.13.

𝑞2 = cos−1 (𝑥2 + 𝑦2 − 𝑎1

2 − 𝑎22

2𝑎1 𝑎2) (2.12)

𝑞1 = tan−1 (𝑦 (𝑎1 + 𝑎2 cos 𝑞2) − 𝑥. 𝑎2 sin 𝑞2

𝑥 (𝑎1 + 𝑎2 cos 𝑞2) + 𝑦. 𝑎2 sin 𝑞2) (2.13)

Keterangan :

q1 = sudut antara garis horizontal pada base dengan sudut servo satu

q2 = sudut antara perpanjangan lengan l1 dengan sudut servo dua

a1 = panjang lengan pertama

a2 = panjang lengan kedua

x = titik koordinat yang ingin dituju (sumbu x)

y = titik koordinat pada yang ingin dituju (sumbu y)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

26

Gambar 2.22. Analisis pergerakan lengan robot

Contoh perhitungan sudut q1 dan sudut q2 seperti pada gambar 2.21 untuk menentukan

pergerakan lengan robot mengambil benda pada koordinat (16,1) seperti ditunjukan oleh

gambar 2.22 dapat di hitung menggunakan rumus pada persamaan 2.12 dan 2.13 sebagai

berikut :

Dari gambar 2.22, diketahui :

x = 16 cm, y = 1 cm

a1 = 14 cm, a2 = 22 cm

q1 = ? dan q2 = ?

Penyelesaian :

𝑞2 = cos−1 (𝑥2 + 𝑦2 − 𝑎1

2 − 𝑎22

2𝑎1 𝑎2)

𝑞2 = cos−1 (162 + 12 − 142 − 222

2 𝑥 14 𝑥 22)

𝑞2 = 133,368𝑜

𝑞1 = tan−1 (𝑦 (𝑎1 + 𝑎2 cos 𝑞2) − 𝑥. 𝑎2 sin 𝑞2

𝑥 (𝑎1 + 𝑎2 cos 𝑞2) + 𝑦. 𝑎2 sin 𝑞2)

𝑞1 = tan−1 ( 1(14 + 22 cos 133,3680) − 16𝑥22 sin 133,3680

16 (14 + 22 cos 133,3680) + 1𝑥22 sin 133,3680)

𝑞1 = 89,62𝑜

Berdasarkan contoh perhitungan, sudut pergerakan servo yang diperlukan supaya

lengan robot dapat mengambil benda yaitu sudut q1 = 89,62𝑜 , dan q2 = 133,368𝑜.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

27

2.2.4. Pulse Width Modulation (PWM)

Pulse width modulation (PWM) adalah cara memanipulasi lebar sinyal yang

dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan rata-rata yang

berbeda. Aplikasi PWM berbasis mikrokontroler bisa berupa pengendalian kecepatan motor

DC, pengaturan nyala terang lampu LED, dan pengedalian motor servo. Sinyal PWM

memiliki amplitudo dan frekuensi dasar yang tetap, namun memiliki duty cycle bervariasi

(antara 0 hingga 100%). Duty cycle merupakan perbandingan lebar pulsa on terhadap satu

periode gelombang [26]. Contoh sinyal PWM ditunjukan oleh gambar 2.23.

Gambar 2.23. Sinyal PWM [26]

Rumus menghitung duty cycle sinyal PWM ditunjukan pada persamaan 2.14.

𝐷𝑢𝑡𝑦 𝑐𝑦𝑐𝑙𝑒 =𝑇𝑜𝑛

𝑇𝑜𝑛+𝑇𝑜𝑓𝑓 𝑥 100 % (2.14)

Keterangan :

Ton = Lebar pulsa on dalam satu periode gelombang.

Toff = Lebar pulsa off dalam satu peridode gelombang.

Ttotal = Waktu satu periode gelombang.

2.2.5. Mikrokontroler AVR Atmega32

AVR (Alf and Vegard’s Risch Processor) merupakan single-chip microcontroller

RISC (Reduced Instruction Set Computer) 8-bit dengan arsitektur Havard yang dilengkapi

dengan fitur-fitur standart seperti on-chip-program (code) ROM, data RAM, dara EEPROM,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

28

timer-counter dan port I/O [23] . Chip AVR yang digunakan untuk tugas akhir ini adalah

ATmega32.

Hampir semua instruksi program dieksekusi dalam satu siklus clock. AVR juga

mempunyai 32 register general-purpose, timer-counter fleksibel dengan mode compare,

interupsi internal dan eksternal, serial UART, programmable Watchdog Timer, dan power

saving mode dan In-System Programmable Flash on-chip yang memungkinkan memori

program untuk diprogram ulang [4]. Sebagai generasi terbaru, ATmega32 memiliki fitur

yang lebih lengkap dibanding dengan generasi sebelumnya. ATmega32 memiliki kapasitas

memori programmable flash sebesar 32 KB, dua kali lebih besar dari ATmega16. Selain itu

ATmega32 juga memiliki EEPROM dan RAM dua kali lebih besar dari ATmega16 yakni

EEPPOM sebesar 1 KB dan SRAM sebesar 2 KB.

2.2.5.1. Arsitektur AVR ATmega32

Mikrokontroler ATmega32 memiliki arsitektur sebagai berikut :

a. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D.

b. ADC 10 bit sebanyak 8 saluran.

c. Tiga buah timer/counter yaitu Timer 0, Timer 1, dan Timer 2.

d. Watchdig Timer dengan osilator internal.

e. SRAM sebanyak 512 byte.

f. Memori Flash sebesar 32 kb.

g. Sumber interupsi internal dan eksternal.

h. Port SPI (Serial Pheriperal Interface).

i. EEPROM on board sebanyak 512 byte.

j. Komparator analog.

k. Port USART (Universal Shynchronous Ashynchronous Receiver Transmitter) untuk

komunikasi serial.

2.2.5.2. Deskripsi Mikrokontroler AVR ATmega32

Konfigurasi Pin Mikrokontroler ATmega32 dengan 40 pin DIP (dual in-line package)

dapat dilihat pada gambar 2.24. AVR menggunakan arsitektur Havard (dengan memori dan

bus terpisah untuk program dan data). Ketika sebuah instruksi sedang dikerjakan maka

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

29

instruksi berikuntya diambil dari memori program [27]. Konfigurasi pin Atmega32

ditunjukan pada gambar 2.24.

Gambar 2.24. Konfigurasi pin mikrokontroler AVR Atmega [28]

Penjelasan konfigurasi PIN pada mikrokontroler AVR ATmega32, secara umum :

a. Pin 1 sampai 8 (PortB : PB0 – PB7) merupakan port parallel 8 bit dua arah

(bidirectional), yang dapat digunakan untuk general purpose dan special feature.

b. Pin 9 (Reset). Reset terjadi jika pin ini diberi logika low melebihi perioda minimum

yang diperlukan.

c. Pin 10 (VCC) dihubungkan ke catu daya (+5 Volt).

d. Pin 11 dan 31 (GND) dihubungkan ke Vss atau Ground.

e. Pin 12 (XTAL 2) adalah pin keluaran dari inverting oscillator amplifier.

f. Pin 13 (XTAL 1) adalah pin masukan ke inverting oscillator amplifier dan masukan

ke rangkain internal clock.

g. Pin 14 sampai 21 (PortD : PD0 – PD7) adalah 8-bit dua arah (bi-directional I/O) port

dengan internal pull-up resistors) digunakan untuk general purpose dan special

feature.

h. Pin 22 sampai 29 (PortC : PC0 – PC7) adalah 8-bit dua arah (bi-directional I/O) port

dengan internal pull-up resistors digunakan untuk general purpose dan special

feature. Dua pin PC6 dan PC7 berfungsi sebagai oscillator eksternal untuk

timer/counter2.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

30

i. Pin 30 adalah Avcc pin penyuplai daya untuk port A dan A/D converter dan

dihubungkan ke Vcc. Jika ADC digunakan maka pin ini dihubungkan ke Vcc.

j. Pin 32 adalah AREF pin yang berfungsi sebagai referensi masukan analog untuk

ADC.

k. Pin 33 sampai 40 (PortA : PA0 – PA7) adalah 8-bit dua arah (bi-directional I/O) port

dengan internal pull-up resistors digunakan untuk general purpose. Port ini juga

dimultipleks dengan masukan analag ke ADC 8 kanal [27].

2.2.5.3. Timer/Counter

Timer / Counter adalah bagian mikrokontroller yang tidak terpengaruh oleh kerja

prosesor. Fungsi utama dari Timer / Counter, yaitu sebagai pewaktu (timer) atau penghitung

(counter) atau berfungsi untuk menciptakan periode waktu, menghitung waktu dan

menghitung kejadian. Pada chip AVR, Timer/Counter dapat berfungsi untuk mementukan

lebar pulsa atau untuk membangkitkan sinyal PWM (Pulse Width Modulation). Beberapa

Timer/Counter pada AVR juga digunakan sebagai penyelarasan waktu (kalibrasi) pada

aplikasi real time. Timer / Counter dibagi berdasarkan lebar register yang mengandung nilai

waktu atau menghitung nilai [4].

Mikrokontroler Atmega32 memiliki tiga macam timer yaitu timer/counter0 (8 bit),

timer/counter1 (16 bit) dan timer/counter2 (8 Bit). Masing-masing kanal pewaktuan

dilengkapi dengan prescaler yang berfungsi untuk membagi sumber clock utama

mikrokontroler [27].

TIMER/COUNTER 0

Fitur-fitur yang dimiliki:

1. Satu buah unit Compare Counter (Unit ini akan meng-count dan meng-compare)

2. Timer dinolkan saat compare match (Auto reload)

3. Dapat menghasilkan gelombang PWM dengan glitch free

4. Frekuensi generator

5. Exsternal event counter

6. Prescaler clock hingga 10 bit

7. Membangkitkan interupsi saat timer overflow dan atau compare match

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

31

Perhitungan OCR sebagai pembangkit PWM ditunjukkan pada persamaan 2.15,

2.16, 2.17 dan 2.18 berikut [28].

𝑇 =1

𝑓 (2.15)

Timer overflow = N x T x 256 (2.16)

𝑃𝑢𝑙𝑠𝑒 =𝜃

1800 + 1 (2.17)

𝑂𝐶𝑅 =𝑝𝑢𝑙𝑠𝑒

𝑇𝑖𝑚𝑒𝑟 𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤 (2.18)

Keterangan :

f = frekuensi yang digunakan untuk eksekusi program

T = periode

N = prescaller yang digunakan

OCR = nilai cacahan pulsa

Pulse = lebar pulsa

θ = sudut pergerakan servo

Berikut merupakan mode-mode operasi timer [4] :

a) Mode normal, timer digunakan untuk menghitung waktu nyata atau membuat

delay dalam suatu sistem.

Gambar 2.25. Mode phase correct PWM [28]

b) Mode phase correct PWM (PCP), digunakan untuk mnghasilkan sinyal PWM

dimana nilai register counter (TCNT0) yang mencacah dari $00 sampai $FF dan

kembali ke $00 secara terus menerus akan selalu dibandingkan dengan register

pembanding OCR0. Hasil perbandingan register TCNT0 dan OCR0 digunakan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

32

utnuk membangkitkan sinyal PWM yang dikeluarkan pada OC0 seperti

ditunjukkan Gambar 2.25.

c) CTC (Clear timer on compare match), register counter (TCNT0) akan mencacah

naik kemudian di-reset ke 0 pada saat nilai TCNT0 mencapai set nilai pada

OCR0. Sebelumnya OCR diset dulu karena timer 0 dan 2 maksimumnya 255,

maka range OCR 0-255. Mode CTC digunakan untuk membangkitkan

gelombang digital presisi seperti sinyal periodik atau sebuah pulsa tunggal.

d) Fast PWM, digunakan untuk membangkitkan sinyal PWM presisi dari suatu

frekuensi dan duty cyle yang dikehendaki. Mode ini hampir sama dengan mode

phase correct PWM, perbedaanya adalah register counter TCNT0 mencacah naik

saja dan tidak pernah mencacah turun seperti terlihat pada Gambar 2.26.

Gambar 2.26. Mode fast PWM [28]

2.2.5.4. Komunikasi Serial USART

Komunikasi serial merupakan alternatif untuk menggantikan komunikasi paralel,

karena transfer data paralel menggunakan delapan jalur konduktor/kawat untuk mentransfer

delapan bit sekaligus. Dengan komunikasi serial, maka komunikasi hanya menggunakan

satu kawat konduktor saja untuk men-transfer bit demi bit sebanyak 8 kali untuk

menyelesaikan transfer satu byte data [27]. Komunikasi USART dapat dibedakan menjadi

dua macam, yaitu komunikasi data serial sinkron dan komunikasi data serial asinkron.

Komunikasi serial sinkron adalah komunikasi antara mikrokontroler dengan peripheral lain

dimana sinyal clock yang digunakan antara transmitter dan receiver berasal dari satu sumber

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

33

clock yang sama. Sedangkan komunikasi serial asinkron masing-masing memiliki sumber

clock sendiri [4].

Pada proses inisialisasi ini setiap perangkat yang terhubung harus memiliki baudrate

yang sama. Beberapa fasilitas yang disediakan USART AVR adalah sebagai berikut:

a) Operasi full duplex (mempunyai register reciver dan transmit yang terpisah)

b) Mendukung komunikasi multiprosesor

c) Mode kecepatan berorde Mbps

d) Mode operasi asinkron atau sinkron

e) Operasi master atau slave clock sinkron

f) Dapat menghasilkan baud-rate (laju data) dengan resolusi tinggi

g) Modus komunikasi kecepatan ganda pada asinkron

Inisialisasi USART

Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART

dilakukan dengan cara mengaktifkan register-register yang digunakan untuk komunikasi

USART. Register-register yang digunakan untuk komunikasi USART antara lain:

USART I/O Data Register (UDR)

UDR merupakan register 8 bit yang terdiri dari dua buah dengan alamat yang sama,

yang digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau

tempat data yang diterima (RXB) sebelum data tersebut dibaca [4]. Gambar 2.27

menunjukan Register UDR.

Gambar 2.27. Register UDR [28]

USART Control and Status Register A (UCSRA)

Gambar 2.28. Register UCSRA [28]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

34

Gambar 2.28 menunjukan Register UCSRA. Penjelasan bit penyusun UCSRA [27]:

a) RXC (USART Receive Complete)

Flag ini akan set jika data yang masuk (lengkap) ke dalam UDR belum dibaca, dan

akan clear jika receiver buffer kosong (tidak berisi data yang belum dibaca). Flag ini dapat

digunakan untuk membangkitkan interupsi RX jika diaktifkan dan akan berlogika nol secara

otomatis bersamaan dengan eksekusi vector interupsi yang bersangkutan.

b) TXC (USART Transmit Complete)

Flag ini akan set jika data yang akan dikirim telah digeser keluar semuanya dan tidak

ada data baru yang berada dalam transmit buffer (UDR). Flag ini akan membangkitkan

interupsi TX jika diaktifkan dan akan clear secara otomatis bersamaan dengan eksekusi

vector interupsi yang bersangkutan.

c) UDRE( USART Data Register Empety)

Flag ini berfungsi untuk menyatakan kesiapan UDR menerima data baru. Jika bernilai

satu maka UDR dalam keadaan kosong dan siap menerima data berikutnya, jika flag bernilai

nol berarti sebaliknya.

d) FE (Frame Error)

Bit ini sebagai indicator ketika data diterima error, misalnya ketika stop bit pertama

data dibaca berlogika nol maka bit FE bernilai satu. Bit akan bernilai 0 ketika stop bit data

yang akan diterima

e) DOR (Data Over Run)

Bit ini berfungsi untuk mendeteksi jika ada data yang overrun. Flag ini selalu set ke

nol jika terjadi penulisan ke UCSRA. Flag akan bernilai satu ketika terjadi overrun data.

f) PE (Parity Error)

Bit yang menentukan apakah terjadi kesalahan paritas. Bit ini berfungsi jika ada

kesalahan paritas. Bit akan berlogika satu ketika terjadi bit parity error apabila bit paritas

digunakan.

g) U2X (Double the USART Transmission Speed)

Bit yang berfungsi untuk menggandakan laju data menjadi dua kalinya pada operasi

asinkron. Bit ini ditulis ke nol jika menggunakan operasi sinkron.

h) MPCM (Multi Processor Communication Mode)

Bit untuk meng-enable mode multi prosesor, dimana ketika data yang diterima oleh

USART tidak mengandung informasi alamat akan diabaikan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

35

USART Control and Status Register B (UCSRB)

Gambar 2.29. Register UCSRB [28]

Gambar 2.29 menunjukan Register UCSRB. Penjelasan bit penyusun UCSRB [27]:

a) RXCIE (RX Complete Interrupt Enable)

Bit ini berfungsi mengaktifkan interupsi RX copmplete. Jika satu data diterima dalam

register UDR sudah lengkap (tanpa error) maka secara otomatis akan men-set flag RXC

dalam register UCSRA dan akan membangkitkan interupsi RX complete.

b) TXCIE (TX Complete Interrupt Enable)

Bit ini berfungsi mengaktifkan interupsi TX copmplete. Jika satu data diterima dalam

register UDR sudah lengkap (tanpa error) maka secara otomatis akan men-set flag TXC

dalam register UCSRA dan akan membangkitkan interupsi TX complete.

c) UDRIE (USART Data Register Empety Interrupt Enable)

Bit ini berfungsi untuk mengaktifkan interupsi data register kosong, berlogika satu

jika diaktifkan dan sebaliknya.

d) RXEN (Receiver Enable)

Bit ini berfungsi untuk mengaktifkan pin RX saluran USART. Ketika pin diaktifkan

maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan

sebagai saluran penerima USART.

e) TXEN (Transmitter Enable)

Bit ini berfungsi untuk mengaktifkan pin TX saluran USART. Ketika pin diaktifkan

maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan

sebagai saluran pengirim USART.

f) UCSZ2 (Character Size)

Bit ini bersama dengan bit UCSZ1 dan UCSZ0 dalam register UCSRC digunakan

untuk memilih tipe lebar data bit (character size) yang digunakan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

36

Tabel 2.1. Penentuan ukuran karakter [28]

UCSZ2 UCSZ1 UCSZ0 Ukuran Karakter

0 0 0 5 bit

0 0 1 6 bit

0 1 0 7 bit

0 1 1 8 bit

1 0 0 Reserved

1 0 1 Reserved

1 1 0 Reserved

1 1 1 9 bit

g) RXB8 (Recive Data Bit 8)

Bit ini digunakan sebagai bit ke-9 ketika menggunakan format data 9 bit, dan bit ini

harus dibaca hdahulu sebelum membaca UDR.

h) TXB8 (Transmit Data Bit 8)

Bit ini digunakan sebagai bit ke-9 ketika menggunakan format data 9 bit, dan bit ini

harus ditulis dahulu sebelum membaca UDR.

USART Control and Status Register C (UCSRC)

Gambar 2.30. Register UCSRC [28]

Gambar 2.30 menunjukan Register UCSRC. Penjelasan bit penyusun UCSRC [27]:

a) URSEL (Register Select)

Bit ini berfungsi untuk memilih antara pengaksesan register UCSRC dengan UBBRH,

dimana untuk menulis atau membaca register UCSRC maka bit ini harus ditulis satu.

b) UMSEL (USART Mode Select)

Bit pemilih mode komunikasi serial antara sinkron dan asinkron (1 = sinkron, 0 =

asinkron).

c) UPM1:0 (Parity Mode)

Bit ini berfungsi untuk memilih mode paritas bit yang akan digunakan. Transmitter

USART akan membuat paritas yang akan digunakan secara otomatis.

d) USBS (Stop Bit Select)

Bit yang berfungsi untuk memilih jumlah stop bit yang akan digunakan.

e) UCSZ1 dan UCSZ0

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

37

Merupakan bit pengatur jumlah karakter serial bit yang berfungsi untuk memilih lebar

data yang digunakan dikombinasikan dengan bit UCSZ2 dalam register UCSRB.

f) UCPOL (Clock Parity)

Bit yang berguna hanya untuk modus sinkron. Bit ini berhubungan dengan perubahan

data keluaran dan sampel masukkan, dan clock sinkron (XCK).

2.2.6. Minimum Sistem ATmega32

Minimum sistem Atmega32 merupakan rangkaian elektronika yang terdiri dari

komponen dasar yang dibutuhkan oleh mikrokontroler dengan pendukung komponen

elektronika lainya yaitu power supply, crystal (pembangkit frekuensi), downloader, dan

reset. Tujuan adanya minimum sistem agar IC mikrokontroler tersebut dapat beroperasi

dengan baik. Minimum sistem ATmega32 ditunjukan pada gambar 2.31.

Gambar 2.31. Minimum sistem Atmega32

2.2.7. Power Supply

Power supply adalah suatu hardware komponen elektronika yang berfungsi sebagai

sumber tegangan DC yang digunakan untuk menyuplai tegangan listrik ke berbagai

rangkaian elektronika yang membutuhkan tegangan DC. Pada prinsipnya, power supply

mengubah tegangan AC menjadi tegangan DC dengan output tegangan tertentu [29].

Salah satu faktor penting pada power supply adalah besarnya perubahan tegangan DC

output diatas jangkauan (range) operasi rangkaian. Tegangan output power supply akan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

38

turun bila dipasang beban. Regulator tegangan digunakan untuk menyetabilkan tegangan

dari sumber daya atau power supply tersebut. Keluaran dari sumber daya yang belum

distabilkan sangat dipengaruhi oleh perubahan tegangan masukan (listrik jala-jala) dan

perubahan beban. Regulator tegangan berperan untuk mengatasi kedua pengaruh tersebut,

sehingga diperoleh tegangan keluaran yang stabil. Output tegangan dari regulator (misalnya

regulator yang memiliki output 5V) dapat menjadi sumber tegangan listrik untuk

mikrokontroler (+ 5 V) [30]. Contoh tampilan fisik Regulated switching power supply

ditunjukan oleh gambar 2.32.

Gambar 2.32. Contoh tampilan fisik regulated switching power supply [31]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

39

BAB III

PERANCANGAN PENELITIAN

Dalam bab III ini akan dibahas mengenai perancangan perangkat keras dan

perancangan perangkat lunak. Adapun pembahasan ini meliputi :

a) Proses kerja dan mekanisme lengan robot

b) Perancangan mekanik lengan robot

c) Perancangan perangkat keras (hardware)

d) Perancangan perangkat lunak (software)

3.1. Proses Kerja dan Mekanisme Lengan Robot

Pada pembuatan tugas akhir ini, akan dibuat lengan robot yang dapat mengambil dan

memindahkan benda (tabung, kubus, prisma segitiga) ke tempat yang telah ditentukan

sebelumnya. Komponen yang digunakan dalam pembuatan tugas akhir ini yaitu webcam

sebagai sensor kamera untuk mendeteksi posisi dan bentuk benda, aktuator berupa motor

servo standar untuk menggerakan lengan robot, regulator sebagai sumber tegangan, USB to

TTL converter dan rangkaian minimum system ATmega32.

Cara kerja lengan robot yaitu mula-mula objek diletakan pada area peletakan benda

yang berukuran 21 cm x 28 cm. Area peletakan benda tersebut terbagi menjadi 12 posisi

sehingga setiap posisi memiliki ukuran 7 cm x 7 cm. Benda diletakan di tengah posisi area

peletakan benda tersebut dengan orientasi dan posisi peletakan yang bisa acak. Kemudian

webcam akan mendeteksi objek pada area kerja, kemudian akan diproses oleh laptop

melalui software MATLAB untuk dikenali bentuk dan posisinya. Setelah objek dikenali,

maka laptop melalui software MATLAB akan mengirimkan sinyal yang dikomunikasikan

secara serial kepada minimum system ATmega32 menggunakan modul USB to TTL

converter untuk menggerakan motor servo pada lengan robot. Lengan robot akan mengambil

dan memindahkan objek menuju kotak peletakan benda. GUI digunakan sebagai penampil

informasi atau data yang diperoleh dari objek. Data yang ditampilkan pada GUI berupa

bentuk dan posisi objek.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

40

Gambar 3.1 merupakan blok diargam sistem kerja aplikasi computer vision pada

lengan robot pemindah benda berdasarkan bentuk dan posisi.

Gambar 3.1. Blok diagram sistem

3.2. Perancangan Mekanik Lengan Robot

Pada tahap ini dilakukan proses perancangan perangkat keras berupa mekanik dari

lengan robot. Adapun proses perancangan perangkat keras yang dilakukan antara lain

mendesain ukuran lengan robot, memilih penggunaan bahan dasar untuk lengan robot berupa

akrilik setebal 3 mm. Pembuatan desain lengan robot ini menggunakan software Autodesk

Invertor 2015. Berikut adalah gambar detail bagian-bagian lengan robot , yaitu : part gripper

ditunjukan oleh gambar 3.2, part base ditunjukan oleh gambar 3.3, komponen 1 (part

penghubung base terhadap lengan bawah ) ditunjukan oleh gambar 3.4, komponen 2 (part

lengan bawah) ditunjukan oleh gambar 3.5, komponen 3 (part lengan bawah) ditunjukan

oleh gambar 3.6.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

41

Desain part gripper terinspirasi dari penelitian sebelumnya oleh Irvan Hasan [4], tetapi

terdapat penambahan ukuran pada tiap part gripper. Penambahan ukuran panjang dan lebar

bertujuan untuk memenuhi spesifikasi ukuran objek benda berupa kubus, tabung dan prisma

segitiga yang akan dipindahkan ke kotak peletakan benda.

Gambar 3.2. Part gripper

Desain dan ukuran diameter dibagian base mengacu pada penelitian yang sebelumnya

oleh Irvan Hasan [4]. Pada penelitian ini, bagian base berukuran 80 mm bertujuan untuk

meminimalkan beban yang akan ditanggung oleh motor servo. Lubang berukuran 3 mm di

semua bagian digunakan untuk menempatkan lubang baut yang difungsikan untuk

menggabungkan antara part satu dengan part yang lain sedangkan lubang berukuran 12 mm

digunakan untuk meletakkan shaft motor servo.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

42

Gambar 3.3. Part base lengan robot

Part penghubung base dengan lengan bawah berfungsi sebagai penghubung antara

base dengan lengan bawah. Desain tersebut terinspirasi dengan penelitian yang sebelumnya

oleh Irvan Hasan [4], namun perbedaan terletak pada ukuran. Ukuran tersebut didapatkan

berdasarkan spesifikasi part yang lain dan spesifikasi motor servo yang akan digunakan.

Seperti pada gambar 3.4, ukuran 40 mm x 20 mm merupakan luas motor servo.

Gambar 3.4. Part penghubung base terhadap lengan bawah

Desain dan ukuran part lengan terinspirasi dari penelitian sebelumnya oleh Irvan

Hasan [4], namun dikarenakan perbedaan luas area kerja lengan robot maka ukuran panjang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

43

pada lengan bawah ditambah. Penambahan panjang lengan robot bertujuan agar lengan robot

dapat menjangkau objek yang terletak paling jauh.

Gambar 3.5. Part lengan bawah

Gambar 3.6. Part lengan atas

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

44

3.2.1. Robot Arm Assembly

Robot Arm Assembly merupakan kumpulan dari bagian-bagian lengan robot yang

kemudian dicetak dengan mesin printing laser. Hasil part yang telah tercetak pada akrilik

setebal 3 mm kemudian dirakit sehingga membentuk lengan robot. Gripper ditunjukan oleh

gambar 3.7.

Gambar 3.7. Gripper

Lengan robot terdiri dari 5 bagian utama yaitu gripper, base, komponen 1 (part

penghubung base terhadap lengan bawah ), komponen 2 (part lengan bawah) dan komponen

3 (part lengan bawah). Lengan robot beserta keterangan posisi servo ditunjukan oleh gambar

3.8.

Gambar 3.8. Lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

45

3.2.2. Desain Keseluruhan Sistem

Desain keseluruhan sistem bertujuan untuk memvisualisasikan secara nyata tentang

bentuk sistem, cara kerja sistem dan hasil yang akan dikerjakan. Visualisasi desain

keseluruhan sistem ditunjukan oleh gambar 3.9 dan gambar 3.10.

Gambar 3.9. Visualisasi sistem

Gambar 3.10. Visualisasi sistem (tampak atas)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

46

3.2.3. Sudut Pergerakan Tiap Motor Servo

Berikut merupakan variabel pergerakan sudut servo saat mengambil dan meletakan

benda. Untuk penentuan nilai sudutnya, akan dievaluasi lebih lanjut pada bab 4.

Tabel 3.1. Variabel sudut tiap servo untuk mengambil dan meletakan benda kubus

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga Sudut A0 Sudut B0 Sudut C0 Sudut D0

Mengambil Benda

Posisi 1 Sudut A1 Sudut B1 Sudut C1 Sudut D1

Posisi 2 Sudut A2 Sudut B2 Sudut C2 Sudut D2

Posisi 3 Sudut A3 Sudut B3 Sudut C3 Sudut D3

Posisi 4 Sudut A4 Sudut B4 Sudut C4 Sudut D4

Posisi 5 Sudut A5 Sudut B5 Sudut C5 Sudut D5

Posisi 6 Sudut A6 Sudut B6 Sudut C6 Sudut D6

Posisi 7 Sudut A7 Sudut B7 Sudut C7 Sudut D7

Posisi 8 Sudut A8 Sudut B8 Sudut C8 Sudut D8

Posisi 9 Sudut A9 Sudut B9 Sudut C9 Sudut D9

Posisi 10 Sudut A10 Sudut B10 Sudut C10 Sudut D10

Posisi 11 Sudut A11 Sudut B11 Sudut C11 Sudut D11

Posisi 12 Sudut A12 Sudut B12 Sudut C12 Sudut D12

Meletakan benda

Kotak

1(Kubus) Sudut A13 Sudut B13 Sudut C13 Sudut D13

Tabel 3.2. Variabel sudut tiap servo untuk megambil dan meletakan benda tabung

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga Sudut A0 Sudut B0 Sudut C0 Sudut D0

Mengambil Benda

Posisi 1 Sudut E1 Sudut F1 Sudut G1 Sudut H1

Posisi 2 Sudut E2 Sudut F2 Sudut G2 Sudut H2

Posisi 3 Sudut E3 Sudut F3 Sudut G3 Sudut H3

Posisi 4 Sudut E4 Sudut F4 Sudut G4 Sudut H4

Posisi 5 Sudut E5 Sudut F5 Sudut G5 Sudut H5

Posisi 6 Sudut E6 Sudut F6 Sudut G6 Sudut H6

Posisi 7 Sudut E7 Sudut F7 Sudut G7 Sudut H7

Posisi 8 Sudut E8 Sudut F8 Sudut G8 Sudut H8

Posisi 9 Sudut E9 Sudut F9 Sudut G9 Sudut H9

Posisi 10 Sudut E10 Sudut F10 Sudut G10 Sudut H10

Posisi 11 Sudut E11 Sudut F11 Sudut G11 Sudut H11

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

47

Tabel 3.2. (Lanjutan) Variabel sudut tiap servo untuk megambil dan meletakan benda

tabung

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Posisi 12 Sudut E12 Sudut F12 Sudut G12 Sudut H12

Meletakan benda

Kotak 2

(Tabung) Sudut E13 Sudut F13 Sudut G13 Sudut H13

Tabel 3.3. Variabel sudut tiap servo untuk mengambil dan meletakan benda prisma segitiga

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga Sudut A0 Sudut B0 Sudut C0 Sudut D0

Mengambil Benda

Posisi 1 Sudut I1 Sudut J1 Sudut K1 Sudut L1

Posisi 2 Sudut I2 Sudut J2 Sudut K2 Sudut L2

Posisi 3 Sudut I3 Sudut J3 Sudut K3 Sudut L3

Posisi 4 Sudut I4 Sudut J4 Sudut K4 Sudut L4

Posisi 5 Sudut I5 Sudut J5 Sudut K5 Sudut L5

Posisi 6 Sudut I6 Sudut J6 Sudut K6 Sudut L6

Posisi 7 Sudut I7 Sudut J7 Sudut K7 Sudut L7

Posisi 8 Sudut I8 Sudut J8 Sudut K8 Sudut L8

Posisi 9 Sudut I9 Sudut J9 Sudut K9 Sudut L9

Posisi 10 Sudut I10 Sudut J10 Sudut K10 Sudut L10

Posisi 11 Sudut I11 Sudut J11 Sudut K11 Sudut L11

Posisi 12 Sudut I12 Sudut J12 Sudut K12 Sudut L12

Meletakan benda

Kotak 3

(Prisma

segitiga)

Sudut I0 Sudut J0 Sudut K0 Sudut L0

3.3. Perancangan Perangkat Keras (Hardware)

Ada beberapa komponen dalam perancangan subsistem perangkat keras (hardware)

lengan robot pemindah benda berdasarkan bentuk dan posisi, yaitu :

a) Wiring motor servo pada minimum system ATmega32

b) Motor servo

c) Webcam dan area peletakan benda

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

48

3.3.1. Wiring Motor Servo Pada Minimum Sistem ATmega32

Minimum sistem merupakan sebuah rangkaian dari mikrokontroler agar IC

mikrokontroler dapat beroperasi dan di program. Rangkaian minimum sistem berfungsi

sebagai I/O untuk mengontrol sudut putar motor servo yang telah diprogram sebelumnya

dalam mikrokontroler Atmega32 pada lengan robot serta sebagai pengolah data serial yang

dikirimkan dari laptop melalui USB to TTL converter. Wiring motor servo pada minimum

sistem Atmega32 ditunjukan oleh gambar 3.11.

Gambar 3.11. Wiring motor servo pada minimum sistem Atmega32

Motor servo memiliki 3 jalur kabel, yaitu vcc (kabel merah), ground (kabel hitam) dan

jalur data (kabel kuning). Perancangan Wiring motor servo pada minimum sistem Atmega32,

jalur data dihubungkan pada port B 3, port D 4, port D 5 dan port D 7. Keempat port tersebut

merupakan port OCR (timer) yang digunakan untuk menggerakan servo.

USB to TTL dihubungkan pada port D0 dan port D1. port tersebut merupakan port

TX dan RX yang digunakan untuk komunikasi serial antara mikrokontroler dengan

perangkat eksternal.

Selain itu juga terdapat lampu led yang difungsikan sebagai indikator bahwa karakter

yang dikirim oleh matlab telah diterima dengan baik oleh mikrokontroler, sehingga

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

49

mikrokontroler dapat mengolah data dari matlab untuk menggerakan motor servo dalam

mengambil dan meletakan benda.

3.3.2. Perhitungan Torsi Motor Servo

Motor servo membutuhkan torsi maksimal ketika arah gaya tegak lurus dengan lengan

robot (saat θ = 900). Analisis perhitungan torsi maksimal yang dibutuhkan motor servo dua,

servo tiga, servo empat dan servo satu pada lengan robot ditunjukan oleh gambar 3.12, 3.13,

3.14 dan 3.15. Perhitungan torsi motor servo menggunakan rumus pada persamaan 2.7.

Gambar 3.12. Analisis torsi motor servo 2

Keterangan :

(r1 = 14 cm, r2 = 28 cm, r3 = 38 cm, r4 =14 cm, r5 = 24 cm, r6 = 10 cm))

m1 = 91 gram (lengan bawah + servo 3)

m2 = 145 gram (m1 + lengan atas + servo 4)

m3 = 176 gram (m2 + gripper + objek)

m4 = 54 gram (lengan atas + servo 4)

m5 = 85 gram (m4 + gripper + objek)

m6 = 54 gram (gripper + objek)

g = 9,8 m/s2

1 N-m = 10,20 Kg-cm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

50

Berdasarkan gambar 3.12, perhitungan torsi motor servo dua merupakan penjumlahan

dari tiga torsi yang bekerja pada lengan robot sebagai berikut :

𝜏𝑠𝑒𝑟𝑣𝑜 2 = (𝐹1𝑟1𝑆𝑖𝑛900) + (𝐹2𝑟2𝑆𝑖𝑛900) + (𝐹3𝑟3𝑆𝑖𝑛900)

𝜏𝑠𝑒𝑟𝑣𝑜 2 = (𝑚1𝑔𝑟1𝑆𝑖𝑛900) + (𝑚2𝑔𝑟2𝑆𝑖𝑛900) + (𝑚3𝑔𝑟3𝑆𝑖𝑛900)

𝜏𝑠𝑒𝑟𝑣𝑜 2 = (0,091 𝑥 9,8 𝑥 0,14 𝑥 1) + (0,145 𝑥 9,8 𝑥 0,28 𝑥 1)

+ (0,176 𝑥 9,8 𝑥 0,38 𝑥 1)

𝜏𝑠𝑒𝑟𝑣𝑜 2 = 0,125 + 0,398 + 0,655

𝜏𝑠𝑒𝑟𝑣𝑜 2 = 1,178 𝑁. 𝑚

𝜏𝑠𝑒𝑟𝑣𝑜 2 = 12,02 kg. cm

Gambar 3.13. Analisis torsi motor servo 3

Berdasarkan gambar 3.13, perhitungan torsi motor servo tiga merupakan penjumlahan

dua torsi yang bekerja pada lengan robot sebagai berikut :

𝜏𝑠𝑒𝑟𝑣𝑜 3 = (𝐹4𝑟4𝑆𝑖𝑛900) + (𝐹5𝑟5𝑆𝑖𝑛900)

𝜏𝑠𝑒𝑟𝑣𝑜 3 = (𝑚4𝑔𝑟4𝑆𝑖𝑛900) + (𝑚5𝑔𝑟5𝑆𝑖𝑛900)

𝜏𝑠𝑒𝑟𝑣𝑜 3 = (0,054 𝑥 9,8 𝑥 0,14 𝑥 1) + (0,085 𝑥 9,8 𝑥 0,24 𝑥 1)

𝜏𝑠𝑒𝑟𝑣𝑜 3 = (0,074 + 0,200)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

51

𝜏𝑠𝑒𝑟𝑣𝑜 3 = 0,274 𝑁. 𝑚

𝜏𝑠𝑒𝑟𝑣𝑜 3 = 2,79 kg. cm

Gambar 3.14. Analisis torsi motor servo 4

Berdasarkan gambar 3.14, perhitungan torsi motor servo empat sebagai berikut :

𝜏𝑠𝑒𝑟𝑣𝑜 4 = 𝐹6𝑟6𝑆𝑖𝑛900

𝜏𝑠𝑒𝑟𝑣𝑜 4 = 𝑚6𝑔𝑟6𝑆𝑖𝑛900

𝜏𝑠𝑒𝑟𝑣𝑜 4 = 0,031 𝑥 9,8 𝑥 0,10 𝑥 1

𝜏𝑠𝑒𝑟𝑣𝑜 4 = 0,030 N. m

𝜏𝑠𝑒𝑟𝑣𝑜 4 = 0,306 𝑘𝑔. 𝑐𝑚

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

52

Gambar 3.15. Analisis torsi servo 1

Servo satu bergerak rotasi (horizontal) untuk mengarahkan lengan robot dalam

mengambil dan meletakan objek. Untuk dapat bergerak, servo satu membutuhkan torsi.

Torsi yang dibutuhkan untuk menggerakkan servo dari posisi diam hingga bergerak dapat

dicari besar nilainya. Gambar 3.15 menunjukan Sebelum menghitung torsi motor servo satu,

terlebih dahulu dilakukan perhitungan untuk mencari kecepatan sudut rotasi servo

menggunakan persamaan 2.11 sebagai berikut :

𝜔1 = 2𝜋

𝑇

𝜔1 = 2𝜋

1,26

𝜔1 = 4,987 𝑟𝑎𝑑/𝑠

Dari hasil perhitungan kecepatan sudut servo satu ketika sudah bergerak, maka torsi

dapat dihitung menggunakan persamaan 2.8, 2,9 dan 2,10 sebagai berikut :

∑ τ = (𝑚𝑟2) 𝑥 (𝜔1 − 𝜔0

𝑡1 − 𝑡0)

∑ τ = (0,274 𝑥 (0,38)2) 𝑥 (4,987 − 0

1 − 0)

∑ τ = (0,0396) 𝑥 (4,987

1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

53

∑ τ = 0,1973 𝑁. 𝑚

∑ τ = 2,012 𝑘𝑔. 𝑐𝑚

Keterangan :

m = 274 gram (massa lengan robot)

r = 38 cm (panjang lengan robot)

𝜔0 = 0 (keadaan diam)

𝜔1 = 4,987 rad/s (keadaan bergerak)

𝑡0 = 0 (keadaan diam)

𝑡1 = 1 sekon (keadaan bergerak)

T = 1,26 sekon (waktu yang dibutuhkan servo untuk berotasi (3600))

Berdasarkan hasil perhitungan torsi, motor servo dua, servo tiga dan servo empat

membutuhkan servo yang memiliki torsi lebih besar dari 2,012 kg.cm (servo 1), 12,02 kg.cm

(servo 2), 2,79 kg.cm (servo 3) dan 0,306 kg.cm (servo 4) agar lengan robot dapat begerak.

3.3.3. Motor Servo

Motor servo merupakan aktuator yang digunakan untuk menggerakan lengan robot.

Motor servo yang digunakan yaitu JX PDI-6225-300 untuk servo 1, servo 2 dan servo 3

sebanyak 3 buah dan Towerpro SG90 untuk servo 4 sebanyak 1 buah. Spesifikasi motor

servo dapat dilihat di lampiran.

Alasan menggunakan motor servo JX PDI-6225-300 yaitu karena memiliki torsi yang

cukup kuat yaitu sebesar 25,3 kg.cm dengan tegangan input 6 V, serta harganya yang tidak

terlalu mahal dan masih terjangkau, sedangkan servo Towerpro SG90 digunakan pada

bagian gripper. Bagian gripper tidak membutukan servo dengan torsi yang besar yaitu

berdasarkan hasil perhitungan hanya sebesar 0,309 kg-cm sehingga dapat digunakan untuk

menggerakan gripper dalam mencengkram objek.

Motor servo memiliki 3 buah jalur kabel yaitu vcc, ground dan jalur data. Kabel

berwarna merah merupakan vcc, kabel berwarna hitam atau coklat merupakan ground dan

kabel berwarna kuning merupakan jalur data. Jalur data terhubung dengan port pada

mikrokontroler Atmega32 sebagai jalur pengiriman pulsa PWM yang digunakan untuk

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

54

mengatur sudut putar motor servo. Gambar 3.16 dan 3.17 merupakan motor servo yang

digunakan pada penelitian ini.

Gambar 3.16. Motor servo towerpro SG90 [32]

Gambar 3.17. Motor servo JX PDI-6225-300 [33]

Pulsa PWM dibangkitkan menggunakan timer. Timer berfungsi sebagai

counter/pengitung. Timer selalu menyimpan hitunganya saat menghitung “1, 2, 3, … , 225”

(8bit).

Pada perancangan motor servo, timer diset agar menghitung sampai 225. Jika sudah

mencapai 225, maka timer akan overflow dan memberikan sinyal, disaat inilah PWM bekerja

dan menginstruksikan timer untuk menghitung lagi dari 0. Perbandingan nilai lebar pulsa

terhadap nilai overflow motor servo selama T=20 ms adalah nilai OCR, yang merupakan

cacahan pulsa selama 1 ms sampai 2 ms. Berikut perhitungan overflow sebagai interrupt

sebagai pembangkit PWM.

Frekuensi crystal yang digunakan yaitu 11,059200 MHz, dengan menggunakan rumus

pada persamaan 2.15, didapatkan periode dari frekuensi osilator yaitu 0,090422 x 10-6 s.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

55

Dengan menggunakan timer 0/8bit dan nilai prescaler 1 sebagai pengatur kecepatan

clock maka timer overflow dapat dicari menggunakan persamaan 2.16 sehingga didapatkan

nilai timer overflow yaitu 23,148 x 10-6 s. Sehingga pemberian nilai untuk membuat interrupt

dapat mencacah selama 20 ms yaitu (20 ms / 23,148 x 10-6 s) = 864.

Untuk mencari lebar pulsa dan nilai OCR menggunakan persamaan 2.17 dan 2.18.

Nilai OCR digunakan untuk menentukan sudut putar motor servo. Tabel 3.5 merupakan

contoh perhitungan dalam menentukan lebar pulsa dan nilai OCR terhadap sudut putar motor

servo pada umumnya.

Tabel 3.4. Perhitungan Nilai OCR

Sudut Lebar Pulsa OCR

0° 1 ms 43

30° 1,16 ms 50

45° 1,25 ms 54

90° 1,5 ms 64

180° 2 ms 86

3.3.4. Webcam Dan Area Peletakan Benda

Webcam yang digunakan adalah webcam logitech seri C170. Webcam digunakan

sebagai sensor kamera yang berfungsi untuk meng-capture atau memindai citra analog

sehingga diperoleh citra digital. Citra digital hasil capturing webcam akan diproses oleh

software matlab untuk mengidentifikasi bentuk dan posisi objek. Webcam diletakan diatas

area peletakan benda. Jarak webcam dengan area peletakan benda disesuikan dengan luas

area peletakan benda.

Area peletakan benda memiliki ukuran panjang 28 cm, lebar 21 cm dan berwarna

hitam. Ukuran area tersebut memiliki skala ukuran yang sama dengan ukuran citra yang di

capture oleh webcam yaitu 320 x 240 pixel. Area tersebut dibagi menjadi 12 area posisi

peletakan benda. Masing-masing area berukuran 7 cm x 7 cm. Objek diletakan di tengah

area tersebut dengan posisi dan orientasi yang acak.

Area peletakan benda memiliki nomor posisi 1 sampai dengan 12. Penomoran area

bertujuan untuk mengurutkan pengambilan benda oleh lengan robot. Lengan robot akan

mengambil benda secara berurutan, dimulai dari nomor area yang terkecil hingga yang

terbesar. Penomoran posisi tidak dituliskan pada area peletakan benda, tetapi dituliskan pada

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

56

program di matlab. Visualisasi area peletakan benda ditunjukan oleh gambar 3.18 dan

gambar 3.19.

Gambar 3.18. Visualisasi nomor posisi area peletakan benda

Gambar 3.19. Area peletakan objek

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

57

3.4. Perancangan Perangkat Lunak (software)

Adapun pembahasan dalam perancangan perangkat lunak (software) sebagai berikut :

1) Flowchart Utama

2) Flowchart Akuisisi Citra

3) Flowchart Image Preprocessing

4) Flowchart Labeling dan Segmentasi

5) Flowchart Proses Pengenalan Bentuk Objek pada Matlab

6) Flowchart Proses Penentuan Posisi Objek pada Matlab

7) Flowchart Pengiriman Data Dari Matlab Ke Mikrokontroler

8) Flowchart Proses Pergerakan Servo Lengan Robot

9) Perancangan GUI pada Matlab

3.4.1. Flowchart Utama

Flowchart utama menjelaskan mekanisme lengan robot memindahkan benda

berdasarkan bentuk dan posisi. Berdasarkan gambar 3.19, proses awal sistem dimulai dengan

lengan robot dalam posisi standby, kemudian webcam akan mengakuisisi citra objek dalam

bentuk cira grayscale. Setelah citra di akuisisi, pada tahap image preprocessing, citra objek

akan dikonversi menjadi citra biner kemudian di lakukan noise filtering untuk meningkatkan

kualitas citra. Kemudian dilakukan labeling pada citra objek untuk memberi label pada

setiap objek. Objek yang sudah dilabeling akan disegmentasi sehingga dapat diolah untuk

mrngrtahui bentuk dan posisi objek. Setelah bentuk dan posisi objek dikenali, matlab akan

mengirim list karakter ke mikrokontroler. Apabila mikrokontroler menerima karakter, maka

led indikator akan menyala.Setelah data diterima oleh mikrokontroler, data tersebut diolah

untuk menggerakan lengan robot dalam mengambil dan memindahkan benda ke kotak

peletakan benda. Flowchart mekanisme lengan robot memindahkan benda berdasarkan

bentuk dan posisi ditunjukan oleh gambar 3.20.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

58

Mulai

Selesai

Lengan robot

Standby

Akuisisi citra

objek

webcam

Image

preprocessing

Pengenalan

bentuk dan

posisi objek

Karakter = a1/a2/

/a9, ax/ay/az?

Karakter = b1/b2/

/b9, bx/by/bz?

Karakter = c1/c2/

/c9, cx/cy/cz?

Lengan robot

mengambil benda

kubus di posisi 1/2/ /

12 dan meletakkan di

kotak 1

Lengan robot

siaga

List karakter =

0?

Ya Ya

Ya

TidakTidak

Tidak

Matlab mengirim

list karakter ke

mikrokontroler

Mikrokontroler

menerima list karakter

?

Ya

Tidak

Lengan robot

mengambil benda

tabung di posisi 1/2/ /

12 dan meletakkan di

kotak 2

Lengan robot

mengambil benda

prisma segitiga di

posisi 1/2/ /12 dan

meletakkan di kotak 3

A

A

Membaca list

karakter

Labeling dan

Segmentasi

Apakah ada

objek ?

Ya

Tidak

Output :

LED

Indikator

Gambar 3.20. Flowchart keseluruhan sistem

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

59

3.4.2. Akuisisi Citra

Akuisisi citra merupakan proses memindai (scan) citra analog sehingga diperoleh citra

digital. Akuisisi citra dilakukan dengan menggunakan web camera , yang terhubung dengan

komputer menggunakan kabel USB. Citra hasil akuisisi tersebut akan diproses oleh matlab

di komputer. Proses akuisisi citra ditunjukan oleh gambar 3.21. Tahap awal akuisisi citra

dilakukan dengan meng-on kan web camera, dan pada proses capture sistem akan

mengambil citra objek, yang berbentuk citra grayscale.

Gambar 3.21. Flowchart akuisisi citra

3.4.3. Image Preprocessing

Image Preprocessing merupakan tahap awal dalam pengolahan citra yang terdiri dari

beberapa proses yaitu mengkonversi citra biner menjadi citra grayscale dan noise filtering.

Flowchart image preprocessing ditunjukan oleh gambar 3.22.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

60

Gambar 3.22. Flowchart image preprocessing

Hasil akuisisi citra yang berbentuk citra grayscale, dikonversikan menjadi citra biner.

Pengkonversian citra grayscale ke citra biner dapat dilakukan menggunakan persamaan 2.1,

tetapi pada matlab menggunakan program im2bw.m yang prosesnya didasarkan pada metode

thresholding. Thresholding digunakan untuk mengelompokkan nilai derajat keabuan pada

setiap pixel ke dalam 2 kelas yaitu hitam (0) dan putih (1). Jika nilai intensitas citra grayscale

lebih besar atau sama dengan nilai thresholding maka nilai intensitas citra grayscale akan

diubah menjadi 1 (berwarna putih), sedangkan jika nilai intensitas citra grayscale lebih

rendah dari nilai thresholding maka nilai intensitas citra grayscale akan diubah menjadi 0

(berwarna hitam). Proses selanjutnya yaitu noise filtering pada citra biner. Noise filtering

merupakan proses mengurangi noise berupa titik-titik putih pada area berwarna hitam. Noise

filtering dilakukan agar mendapatkan kualitas citra yang lebih baik. Noise filtering dilakukan

menggunakan persamaan 2.2 tetapi pada matlab menggunakan program medfilt2.m.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

61

3.4.4. Labeling dan Segmentasi

Setelah melalui proses noise filtering maka proses selanjutnya yaitu labeling objek.

Tujuan dari labeling objek adalah memberi label/identitas pada masing-masing citra objek.

Program pada matlab yang digunakan untuk labeling objek yaitu program bwlabel.m. Proses

berikutnya yaitu segmentasi citra, proses ini bertujuan untuk memisahkan setiap citra objek

sesuai dengan hasil labeling objek agar mempermudah dalam proses pengidentifikasian citra

objek. Labeling dan segmentasi ditunjukan oleh gambar 3.23.

Mulai

Input :

Citra Hasil

Preprocessing

Segmentasi

Citra

Output :

Citra Hasil

Segmentasi

Selesai

Labeling Objek

Gambar 3.23. Flowchart labeling dan segmentasi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

62

3.4.5. Proses Pengenalan Bentuk Objek Pada Matlab

Proses pengenalan bentuk benda dilakukan dengan mencari nilai area, perimeter dan

thinness ratio dari citra objek hasil segmentasi. Untuk mendapatkan nilai area dapat

menggunakan persamaan 2.3. Pada matlab, nilai area dicari menggunakan program

regionprops.m. Setelah mendapatkan nilai area, tahap selanjutnya adalah dengan mencari

nilai perimeter dari citra objek. Untuk mendapatkan nilai perimeter menggunakan program

regionprops.m. Proses selanjutnya yaitu mencari nilai thinness ratio. Nilai thinness

ratiodicari dari perbandingan antara nilai area dengan nilai perimeter. Untuk mendapatkan

nilai thinnes ratio pada matlab digunakan rumus pada persamaan 2.4. Nilai thinnes ratio ini

yang digunakan sebagai dasar penentuan bentuk objek. Nilai thinness ratio disimpan dalam

variabel f0. Nilai variabel f0 akan dibandingkan dengan nilai variabel a (objek kubus), b

(objek tabung), c (objek prisma segitiga). Nilai variabel a, b, c mewakili nilai thinness ratio

dari masing-masing objek tersebut. Proses pengenalan bentuk benda pada matlab ditunjukan

oleh gambar 3.24.

Gambar 3.24. Flowchart proses pengenalan bentuk objek pada matlab

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

63

3.4.6. Proses Penentuan Posisi Objek Pada Matlab

Proses penentuan posisi objek dilakukan dengan mencari nilai centroid masing-masing

objek dari citra hasil segmentasi. Nilai centroid dapat dicari menggunakan persamaan 2.5

dan 2.6 tetapi pada matlab dapat dicari menggunakan program regionprops.m. Nilai

centroid berupa koordinat pusat (x dan y) dari citra objek. Nilai tersebut disimpan dalam

sebuah variabel Cen dan akan dibandingkan dengan variabel d1 sampai dengan d12 untuk

menentukan posisi objek. d1 sampai dengan d12 merupakan variabel yang mewakili batas

pada sumbu x dan sumbu y untuk masing-masing posisi. Proses penentuan posisi objek

ditunjukan oleh gambar 3.25, 3.26, dan 3.27.

Gambar 3.25. Flowchart proses penentuan posisi objek pada matlab

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

64

Gambar 3.26. (Lanjutan) Flowchart proses penentuan posisi objek pada matlab

Gambar 3.27. (Lanjutan) Flowchart proses penentuan posisi objek pada matlab

3.4.7. Pengiriman Data Dari Matlab ke Mikrokontroler

Pengiriman data dari matlab ke mikrokontroler menggunakan komunikasi USART.

Proses awal dari pengiriman data dari matlab ke mikrokontroler yaitu ukuran dan posisi

objek di inisialisasi menjadi karakter dan disatukan ke dalam sebuah list. Inisialisasi karakter

objek beserta posisinya ditunjukan oleh tabel 3.5, 3.6, 3.7. List yang berisikan kumpulan

karakter ini yang nantinya akan dikirimkan ke mikrokontroler untuk diolah menjadi

pergerakan motor servo. Flowchart pengiriman data dari matlab ke mikrokontroler dapat

dilihat pada gambar 3.28.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

65

Mulai

Input :

Bentuk dan

posisi

objek

Inisialisasi data

input menjadi

karakter

Mengirimkan list

karakter ke

mikrokontroler

List karakter dari

setiap objek

Selesai

Gambar 3.28. Flowchart pengiriman data dari matlab ke mikrokontroler

Tabel 3.5. Inisialisasi karakter objek kubus beserta posisinya

Karakter Bentuk Objek Posisi Objek

a1 Kubus 1

a2 Kubus 2

a3 Kubus 3

a4 Kubus 4

a5 Kubus 5

a6 Kubus 6

a7 Kubus 7

a8 Kubus 8

a9 Kubus 9

ax Kubus 10

ay Kubus 11

az Kubus 12

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

66

Tabel 3.6. Inisialisasi karakter objek tabung beserta posisinya

Karakter Bentuk Objek Posisi Objek

b1 Tabung 1

b2 Tabung 2

b3 Tabung 3

b4 Tabung 4

b5 Tabung 5

b6 Tabung 6

b7 Tabung 7

b8 Tabung 8

b9 Tabung 9

bx Tabung 10

by Tabung 11

bz Tabung 12

Tabel 3.7. Inisialisasi karakter objek prisma segitiga beserta posisinya

Karakter Bentuk Objek Posisi Objek

c1 Prisma segitiga 1

c2 Prisma segitiga 2

c3 Prisma segitiga 3

c4 Prisma segitiga 4

c5 Prisma segitiga 5

c6 Prisma segitiga 6

c7 Prisma segitiga 7

c8 Prisma segitiga 8

c9 Prisma segitiga 9

cx Prisma segitiga 10

cy Prisma segitiga 11

cz Prisma segitiga 12

3.4.8. Proses Pergerakan Servo Lengan Robot

Pergerakan lengan robot ketika mengambil dan meletakkan benda berdasarkan pada

karakter yang diterima oleh mikrokontroler. Karakter yang diterima akan diolah oleh

mikrokontroler untuk menggerakkan masing-masing motor servo. Dalam proses mengambil

dan meletakkan benda, motor servo akan bergerak secara bergantian dimulai dari servo 1,

servo 2, servo 3, dan servo 4.

Proses awal pemindahan benda yaitu mula-mula lengan robot dalam posisi standby,

kemudian mikrokontroler membaca list karakter dan mengolah masing-masing karakter

menjadi pergerakan servo yaitu pergerakan lengan robot pada saat mengambil benda, posisi

siaga, meletakkan benda, dan kembali ke posisi standby. Flowchart pergerakan lengan robot

ditunjukan pada gambar 3.29 sampai dengan gambar 3.35.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

67

Mulai

Input :

List

Karakter

matlab

Karakter =

a1?

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Karakter =

a2?

Servo 1

berputar ke

Sudut A2

Servo 2

berputar ke

Sudut B2

Servo 3

berputar ke

Sudut C2

Servo 4

berputar ke

Sudut D2

Karakter =

a3?

Servo 1

berputar ke

Sudut A3

Servo 2

berputar ke

Sudut B3

Servo 3

berputar ke

Sudut C3

Servo 4

berputar ke

Sudut D3

Karakter =

a4?

Servo 1

berputar ke

Sudut A4

Servo 2

berputar ke

Sudut B4

Servo 3

berputar ke

Sudut C4

Servo 4

berputar ke

Sudut D4

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

List

karakter =

0?

Selesai

Membaca list

karakter

A

Men

gam

bil B

end

aM

ele

tak

an B

en

da

H

H I J K L M N

Ya Ya Ya Ya

Tidak Tidak Tidak Tidak

Ya

Tidak

Gambar 3.29. Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

68

Karakter =

a6?

Servo 1

berputar ke

Sudut A6

Servo 2

berputar ke

Sudut B6

Servo 3

berputar ke

Sudut C6

Servo 4

berputar ke

Sudut D6

Lengan robot

posisi Siaga

Karakter =

a7?

Servo 1

berputar ke

Sudut A7

Servo 2

berputar ke

Sudut B7

Servo 3

berputar ke

Sudut C7

Servo 4

berputar ke

Sudut D7

Karakter =

a8?

Servo 1

berputar ke

Sudut A8

Servo 2

berputar ke

Sudut B8

Servo 3

berputar ke

Sudut C8

Servo 4

berputar ke

Sudut D8

Karakter =

a9?

Servo 1

berputar ke

Sudut A9

Servo 2

berputar ke

Sudut B9

Servo 3

berputar ke

Sudut C9

Servo 4

berputar ke

Sudut D9

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Karakter =

ax?

Servo 1

berputar ke

Sudut A10

Servo 2

berputar ke

Sudut B10

Servo 3

berputar ke

Sudut C10

Servo 4

berputar ke

Sudut D10

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Tidak TidakTidakTidakTidakBA

Mengam

bil B

enda

Mele

tak

kan

Ben

da

I

Ya Ya Ya Ya Ya

Karakter =

a5?

Servo 1

berputar ke

Sudut A5

Servo 2

berputar ke

Sudut B5

Servo 3

berputar ke

Sudut C5

Servo 4

berputar ke

Sudut D5

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Ya

Tidak

Gambar 3.30. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

69

Meletak

kan

Ben

da

Men

gam

bil B

end

a

Karakter =

ay?

Servo 1

berputar ke

Sudut A11

Servo 2

berputar ke

Sudut B11

Servo 3

berputar ke

Sudut C11

Servo 4

berputar ke

Sudut D11

Lengan robot

posisi Siaga

Karakter =

az?

Servo 1

berputar ke

Sudut A12

Servo 2

berputar ke

Sudut B12

Servo 3

berputar ke

Sudut C12

Servo 4

berputar ke

Sudut D12

Karakter =

b1?

Servo 1

berputar ke

Sudut E1

Servo 2

berputar ke

Sudut F1

Servo 3

berputar ke

Sudut G1

Servo 4

berputar ke

Sudut H1

Karakter =

b2?

Servo 1

berputar ke

Sudut E2

Servo 2

berputar ke

Sudut F2

Servo 3

berputar ke

Sudut G2

Servo 4

berputar ke

Sudut H2

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Karakter =

b3?

Servo 1

berputar ke

Sudut E3

Servo 2

berputar ke

Sudut F3

Servo 3

berputar ke

Sudut G3

Servo 4

berputar ke

Sudut H3

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Tidak TidakTidakTidakTidakCB

J

Ya Ya Ya Ya Ya

Gambar 3.31. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

70

Meletak

kan

Ben

da

Men

gam

bil B

end

a

Karakter =

b4?

Servo 1

berputar ke

Sudut E4

Servo 2

berputar ke

Sudut F4

Servo 3

berputar ke

Sudut G4

Servo 4

berputar ke

Sudut H4

Lengan robot

posisi Siaga

Karakter =

b5?

Servo 1

berputar ke

Sudut E5

Servo 2

berputar ke

Sudut F5

Servo 3

berputar ke

Sudut G5

Servo 4

berputar ke

Sudut H5

Karakter =

b6?

Servo 1

berputar ke

Sudut E6

Servo 2

berputar ke

Sudut F6

Servo 3

berputar ke

Sudut G6

Servo 4

berputar ke

Sudut H6

Karakter =

b7?

Servo 1

berputar ke

Sudut E7

Servo 2

berputar ke

Sudut F7

Servo 3

berputar ke

Sudut G7

Servo 4

berputar ke

Sudut H7

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Karakter =

b8?

Servo 1

berputar ke

Sudut E8

Servo 2

berputar ke

Sudut F8

Servo 3

berputar ke

Sudut G8

Servo 4

berputar ke

Sudut H8

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Tidak TidakTidakTidakTidakDC

K

Ya Ya Ya Ya Ya

Gambar 3.32. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

71

Meletak

kan

Ben

da

Men

gam

bil B

end

aKarakter =

b9?

Servo 1

berputar ke

Sudut E9

Servo 2

berputar ke

Sudut F9

Servo 3

berputar ke

Sudut G9

Servo 4

berputar ke

Sudut H9

Lengan robot

posisi Siaga

Karakter =

bx?

Servo 1

berputar ke

Sudut E10

Servo 2

berputar ke

Sudut F10

Servo 3

berputar ke

Sudut G10

Servo 4

berputar ke

Sudut H10

Karakter =

by?

Servo 1

berputar ke

Sudut E11

Servo 2

berputar ke

Sudut F11

Servo 3

berputar ke

Sudut G11

Servo 4

berputar ke

Sudut H11

Karakter =

bz?

Servo 1

berputar ke

Sudut E12

Servo 2

berputar ke

Sudut F12

Servo 3

berputar ke

Sudut G12

Servo 4

berputar ke

Sudut H12

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Karakter =

c1?

Servo 1

berputar ke

Sudut I1

Servo 2

berputar ke

Sudut J1

Servo 3

berputar ke

Sudut K1

Servo 4

berputar ke

Sudut L1

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Tidak TidakTidakTidakTidakED

L

Ya Ya Ya Ya Ya

Gambar 3.33. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

72

Meletak

kan

Ben

da

Men

gam

bil B

end

a

Karakter =

c2?

Servo 1

berputar ke

Sudut I2

Servo 2

berputar ke

Sudut J2

Servo 3

berputar ke

Sudut K2

Servo 4

berputar ke

Sudut L2

Lengan robot

posisi Siaga

Karakter =

c3?

Servo 1

berputar ke

Sudut I3

Servo 2

berputar ke

Sudut J3

Servo 3

berputar ke

Sudut K3

Servo 4

berputar ke

Sudut L3

Karakter =

c4?

Servo 1

berputar ke

Sudut I4

Servo 2

berputar ke

Sudut J4

Servo 3

berputar ke

Sudut K4

Servo 4

berputar ke

Sudut L4

Karakter =

c5?

Servo 1

berputar ke

Sudut I5

Servo 2

berputar ke

Sudut J5

Servo 3

berputar ke

Sudut K5

Servo 4

berputar ke

Sudut L5

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Karakter =

c6?

Servo 1

berputar ke

Sudut I6

Servo 2

berputar ke

Sudut J6

Servo 3

berputar ke

Sudut K6

Servo 4

berputar ke

Sudut L6

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Tidak TidakTidakTidakTidakFE

Ya Ya Ya Ya Ya

M

Gambar 3.34. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

73

Karakter =

c7?

Servo 1

berputar ke

Sudut I7

Servo 2

berputar ke

Sudut J7

Servo 3

berputar ke

Sudut K7

Servo 4

berputar ke

Sudut L7

Lengan robot

posisi Siaga

Karakter =

c8?

Servo 1

berputar ke

Sudut I8

Servo 2

berputar ke

Sudut J8

Servo 3

berputar ke

Sudut K8

Servo 4

berputar ke

Sudut L8

Karakter =

c9?

Servo 1

berputar ke

Sudut I9

Servo 2

berputar ke

Sudut J9

Servo 3

berputar ke

Sudut K9

Servo 4

berputar ke

Sudut L9

Karakter =

cx?

Servo 1

berputar ke

Sudut I10

Servo 2

berputar ke

Sudut J10

Servo 3

berputar ke

Sudut K10

Servo 4

berputar ke

Sudut L10

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

dalam posisi

Standby

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Karakter =

cy?

Servo 1

berputar ke

Sudut I11

Servo 2

berputar ke

Sudut J11

Servo 3

berputar ke

Sudut K11

Servo 4

berputar ke

Sudut L11

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Tidak TidakTidakTidakTidak

N

F Karakter = cz?

Servo 1

berputar ke

Sudut I12

Servo 2

berputar ke

Sudut J12

Servo 3

berputar ke

Sudut K12

Servo 4

berputar ke

Sudut L12

Lengan robot

posisi Siaga

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Ya Ya Ya Ya Ya

Mengam

bil B

enda

Mele

takkan B

enda

Gambar 3.35. (Lanjutan) Flowchart pergerakan servo lengan robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

74

3.4.9. Perancangan GUI Matlab

Tujuan pembuatan GUI (Graphical User Interface) yaitu membuat program terlihat

lebih praktis sehingga mempermudah pengguna (user) dalam memahami program yang

dibuat. GUI memiliki peran yang sangat penting, karena dengan adanya GUI, pengguna

dapat melihat apa yang sedang terjadi didalam program seperti pemrosesan data dan lain-

lain. GUI yang dibuat didesain untuk menampilkan data atau informasi dari proses

identifikasi objek, yaitu citra grayscale hasil capturing webcam, citra biner serta posisi dan

bentuk objek. Perancangan GUI ditunjukan oleh gambar 3.36.

OBJEK

HASIL CAPTURE

CITRA BINER

POSISI

POSISI

POSISI

POSISI

POSISI

BENTUK OBJEK

BENTUK OBJEK

BENTUK OBJEK

BENTUK OBJEK

BENTUK OBJEK

Tombol

Camera ON

Tombol

Capture Tombol

Exit

PORT COMM

Tombol

Proses

APLIKASI COMPUTER VISION PADA LENGAN ROBOT PEMINDAH BENDA

BERDASARKAN BENTUK DAN POSISI

Gambar 3.36. Perancangan GUI pada matlab

Tabel 3.8 Keterangan GUI

Nama Bagian Keterangan

Tombol “Camera on” Untuk menghidupkan webcam

Tombol “Capture” Untuk mengambil citra objek

Tombol “Proses” Untuk memulai proses pengenalan objek

Tombol “Exit” Untuk keluar dari program

Objek Untuk menampilkan citra secara langsung dari webcam

Citra Biner Untuk menampilkan citra biner

Hasil Capture Untuk menampilkan citra grayscale

Posisi Untuk menampilkan posisi objek

Bentuk Objek Untuk menampilkan bentuk objek

Pop up menu Untuk memilih port COM

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

75

BAB IV

HASIL DAN PEMBAHASAN

Pada bab ini, akan dibahas mengenai hasil perancangan perangkat keras (hardware)

dan hasil pengamatan dari aplikasi computer vision pada lengan robot pemindah benda

berdasarkan bentuk dan posisi. Hasil perancangan perangkat keras (hardware) berupa

bentuk fisik dan sistem kerja lengan robot, wiring motor servo pada minimum sistem

Atmega32 yang dilengkapi LCD 16x2 sebagai penampil data karakter yang dikirim matlab,

data posisi dan bentuk objek, webcam dan area peletakan benda, benda tiga dimensi dan

kotak peletakan benda. Hasil pengamatan berupa data pengenalan bentuk dan posisi objek,

data sudut motor servo dan pergerakan lengan robot, tingkat keberhasilan pengenalan bentuk

dan posisi objek, dan tingkat keberhasilan lengan robot ketika mengambil dan memindahkan

objek ke kotak peletakan yang telah disiapkan.

4.1. Perangkat Keras (Hardware) Lengan Robot

4.1.1. Bentuk Fisik dan Sistem Kerja Lengan Robot

Lengan robot memiliki bentuk fisik seperti yang ditunjukan pada gambar 3.8. Lengan

robot terbuat dari bahan akrilik berwarna putih dengan tebal 3 mm. Lengan robot dibuat

sesuai dengan part-part yang ditunjukan pada gambar 3.2 sampai dengan gambar 3.6.

Keseluruhan sistem lengan robot juga dibuat sesuai dengan desain sistem yang ditunjukan

pada gambar 3.9 dan 3.10. Tetapi pada implementasinya, ditambahkan sistem percahayaan

yang diletakan di atas area peletakan objek. Sistem pencahayaan berfungsi untuk memberi

penerangan pada area objek, supaya citra hasil capturing webcam lebih berkualitas.

Keseluruhan sistem lengan robot ditunjukan oleh gambar 4.1, bentuk fisik lengan robot

tampak samping ditunjukan oleh gambar 4.2 sedangkan lengan robot tampak atas ditunjukan

oleh gambar 4.3.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

76

Gambar 4.1. Keseluruhan sistem lengan robot

Gambar 4.2. Lengan robot tampak samping

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

77

Gambar 4.3. Lengan robot tampak atas

Mekanisme sistem kerja lengan robot yaitu mula-mula objek diletakan pada area

peletakan benda yang berukuran 21 cm x 28 cm. Area peletakan benda terbagi menjadi 12

posisi, masing-masing posisi berukuran 7 cm x 7 cm. Objek diletakan ditengah posisi area

peletakan benda dengan orientasi dan posisi peletakan yang bisa acak pada centroid area-

area tertentu. Selanjutnya webcam yang diletakan diatas area peletakan benda akan meng-

capture citra objek dan areanya. Kemudian citra hasil capturing webcam akan diolah oleh

matlab untuk dikenali bentuk dan posisi objek. Setelah objek dikenali, maka laptop melalui

software matlab akan mengirimkan karakter yang dikomunikasikan secara serial kepada

mikrokontroler menggunakan modul USB to TTL converter untuk menggerakan motor servo

pada lengan robot. Lengan robot akan mengambil objek dimulai dari posisi terkecil hingga

terbesar dan memindahkannya menuju kotak peletakan berdasarkan bentuk dan posisi objek.

GUI matlab digunakan sebagai penampil informasi dari hasil image processing. Selain itu,

data karakter yang dikirim oleh matlab, data posisi dan bentuk objek juga ditampilkan pada

LCD 16x2.

4.1.2. Wiring Motor Servo pada Minimum Sistem Atmega32 Beserta LCD

16x2

Pembuatan wiring motor servo pada minimum sistem Atmega32 memiliki perbedaan

dengan perancangan wiring seperti yang ditunjukan oleh gambar 3.11. Berdasarkan wiring

yang ditunjukan oleh gambar 3.11, kabel data motor servo dihubungkan dengan port timer

pada minimum sistem Atmega32, tetapi dalam implementasinya, kabel data servo

dihubungkan ke PORTB.0, PORTB.1, PORTB.2 dan PORTB.3. Berdasarkan hasil evaluasi

dan percobaan, kabel data servo yang dihubungkan ke port timer menyebabkan pergerakan

servo tidak menentu sehingga pada penelitian ini, kabel data servo dihubungkan ke

PORTB.0, PORTB.1, PORTB.2 dan PORTB.3 untuk mengontrol servo dengan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

78

menggunakan fasilitas interrupt timer0 sehingga pergerakan servo dapat dikontrol. Selain

itu, wiring yang dibuat juga tidak menggunakan power suppy dan lampu led indikator. Hal

ini karena dengan sumber tegangan dan ground dari minimum sistem atmega32 sudah cukup

untuk menggerakan servo. Led indikator digantikan oleh LCD 16x2 yang berfungsi sebagai

penampil data dan informasi berupa karakter yang dikirim oleh software matlab, serta bentuk

dan posisi objek. Hal ini bertujuan supaya sistem lebih komunikatif. Wiring motor servo

pada minimum sistem Atmega32 beserta LCD 16x2 dapat dilihat pada lampiran.

4.1.3. Webcam dan Area Peletakan Objek

Webcam dan area dibuat sesuai perancangan pada bab 3. Webcam untuk meng-capture

objek sehingga didapatkan citra digital dari objek yang akan di identifikasi. Webcam

ditempatkan diatas area peletakan objek. Tinggi peletakan webcam disesuaikan dengan luas

area, ini bertujuan supaya ukuran pixel citra hasil capturing webcam memiliki skala ukuran

yang sama dengan area peletakan benda. Citra hasil capturing webcam di set dengan ukuran

320 x 240 pixel sedangkan area peletakan benda memiliki panjang 28 cm x 21 cm.

Area peletakan benda dibuat dengan bahan akrilik setebal 3 mm. Warna area peletakan

benda yaitu hitam pekat. Ini bertujuan supaya area tidak memantulkan cahaya sehingga hasil

capturing webcam menjadi lebih berkualitas. Area peletakan benda diletakan 10 cm didepan

lengan robot, dan tingginya di samakan dengan poros servo 2 sehingga perhitungan invers

kinematik untuk menentukan pergerakan lengan robot menjadi lebih akurat. Urutan

penomoran area peletakan benda berdasarkan letak posisi lengan robot sehingga posisi 1

berada di sebalah kiro robot.

Area peletakan benda dibagi menjadi 12 posisi, masing-masing posisi memiliki batas

nilai pixel pada sumbu x dan y. Batas nilai pixel ini digunakan untuk menentukan posisi

objek berdasarkan centroid objek. Penentuan batas nilai pada sumbu x dan y untuk masing-

masing posisi ditunjukan oleh gambar 4.4 sedangkan batas nilai pixel untuk masing-masing

posisi dapat dilihat pada tabel 4.1. Data pada tabel 4.1 merupakan batas nilai sumbu x dan y

dilihat dari sudut pandang lengan robot, nilai batas ini berkebalikan jika dilihat dari sudut

pandang posisi webcam (batas nilai pixel posisi 1 berkebalikan dengan posisi 12, posisi 2

berkebalikan dengan posisi 11, dan seterusnya). Pada program matlab, nilai batas sumbu x

dan sumbu y yang digunakan yaitu berdasarkan sudut pandang posisi webcam.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

79

Gambar 4.4. Area peletakan objek beserta batas nilai pixel

Tabel 4.1. Batas nilai pixel pada sumbu x dan y untuk masing-masing posisi

Posisi Sumbu x Sumbu y

Batas

Minimal

Batas

Maksimal

Batas

Minimal

Batas

Maksimal

1 0 80 160 240

2 80 160 160 240

3 160 240 160 240

4 240 320 160 240

5 0 80 80 160

6 80 160 80 160

7 160 240 80 160

8 240 320 80 160

9 0 80 0 80

10 80 160 0 80

11 160 240 0 80

12 240 320 0 80

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

80

4.1.4. Objek 3 Dimensi dan Kotak Peletakan Benda

Objek tiga dimensi terbuat dari bahan styrofoam dan berwarna kuning. Objek yang

dibuat berbentuk kubus, tabung dan prisma segitiga. Objek kubus memiliki panjang rusuk

3,5 cm, objek tabung memiliki diameter 3,5 cm, dan objek prisma segitiga memiliki panjang

rusuk dan tinggi 3,5 cm. Objek tiga dimensi ditunjukan oleh gambar 4.5.

Gambar 4.5. Objek tiga dimensi

Kotak peletakan objek terbuat dari bahan akrilik setebal 3 mm dan memiliki ukuran

10 cm x 10 cm x 10 cm. Kotak peletakan objek kubus berwarna hijau, kotak peletakan objek

tabung berwarna merah sedangkan kotak peletakan objek prisma segitiga berwarna kuning.

Kotak peletakan objek kubus, tabung dan prisma segitiga ditunjukan oleh gambar 4.6.

Gambar 4.6. Kotak peletakan objek

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

81

4.2. Hasil Data Pengujian dan Pembahasan

Pada sub bab ini, dilakukan pengujian dan pembahasan terhadap nilai area, perimeter

thinness ratio dan centroid dari masing-masing objek pada 12 posisi, sudut motor servo,

pergerakan lengan robot, tingkat keberhasilan sistem saat mengenali bentuk dan posisi dari

masing-masing objek pada posisi 1 sampai dengan posisi 12, serta tingkat keberhasilan

lengan robot saat mengambil dan memindahkan benda berdasarkan bentuk dan posisi.

4.2.1. Pengujian Pengenalan Bentuk dan Posisi Objek

4.2.1.1. Pengujian Nilai Area, Perimeter dan Thinness Ratio Objek

Pengujian nilai area, perimeter dan thinness ratio untuk mengetahui nilai area,

perimeter dan thinness ratio dari masing-masing objek yang akan di proses dan dikenali

bentuknya dicari menggunakan rumus yang mengacu pada persamaan 2.3 dan 2.4.

Pengambilan data dilakukan sebanyak 12 kali untuk masing-masing bentuk objek. Dari hasil

pengujian, diperoleh data yang ditunjukan pada tabel 4.2, 4.3 dan 4.4 sebagai berikut.

Tabel 4.2. Data Nilai Area Masing-Masing Bentuk Benda

Posisi Nilai Area

Prisma segitiga Tabung Kubus

1 800 1521 1889

2 761 1565 1863

3 686 1447 1890

4 672 1346 1794

5 694 1383 1799

6 805 1504 1808

7 737 1521 1840

8 730 1374 1799

9 646 1392 1831

10 641 1311 1652

11 753 1425 1714

12 642 1472 1803

Rerata 714 1438 1807

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

82

Gambar 4.7. Grafik Nilai Area Objek

Tabel 4.3. Data Nilai Perimeter Masing-Masing Bentuk Benda

Posisi Nilai Perimeter

Prisma segitiga Tabung Kubus

1 118,17 136,07 168,07

2 114,09 138,76 162,27

3 108,63 132,39 164,47

4 108,23 128,11 162,89

5 107,77 129,15 158,25

6 117,35 135,82 160,51

7 111,89 135,32 160,59

8 111,98 128,84 159,26

9 106,45 129,39 160,52

10 106,20 126,45 155,24

11 113,03 131,47 155,25

12 104,43 134,22 162,20

Rerata 110,68 132,17 160,79

0

200

400

600

800

1000

1200

1400

1600

1800

2000

1 2 3 4 5 6 7 8 9 10 11 12

Nil

ai A

rea

Posisi Peletakan Objek

Grafik Nilai Area Objek

Prisma Segitiga Tabung Kubus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

83

Gambar 4.8. Grafik Nilai Perimeter Objek

Tabel 4.4. Data Nilai Thinness Ratio Masing-Masing Bentuk Benda

Posisi Nilai Thinness Ratio

Prisma segitiga Kubus Tabung

1 0,72 0,84 1,03

2 0,73 0,89 1,02

3 0,73 0,87 1,07

4 0,72 0,85 1,03

5 0,75 0,90 1,05

6 0,73 0,88 1,02

7 0,74 0,89 1,04

8 0,73 0,89 1,04

9 0,72 0,89 1,05

10 0,71 0,86 1,03

11 0,74 0,89 1,04

12 0,74 0,86 1,03

Rerata 0,73 0,87 1,04

Range Data 0,66-0,80 0,80-0,95 0,95-1,20

0

20

40

60

80

100

120

140

160

180

1 2 3 4 5 6 7 8 9 10 11 12

Nil

ai P

erim

eter

Posisi Peletakan Objek

Grafik Nilai Perimeter Objek

Prisma Segitiga Tabung Kubus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

84

Gambar 4.9. Grafik Nilai Thinness Ratio Objek

Berdasarkan tabel 4.2, tabel 4.3 dan tabel 4.4, rerata nilai area, perimeter dan

thinness ratio menunjukkan bahwa setiap objek memiliki karakteristik nilai tertentu yang

berbeda-beda. Nilai area dan perimeter objek digunakan dalam perhitungan untuk

mendapatkan nilai thinness ratio objek. Nilai thinness ratio suatu bentuk objek nilainya akan

tetap sama, ini karena thinness ratio merupakan perbandingan antara area dan perimeter dari

suatu objek. Sehingga meskipun ukuran objeknya berbeda, apabila bentuk objeknya sama,

maka nilai thinness rationya tetap sama. Range nilai thinness ratio di tuliskan dalam

program di software matlab yang digunakan untuk mengelompokan objek berdasarkan

bentuknya. Range nilai objek prisma segitiga dituliskan “f0 > 0,66 && f0 < 80”, objek kubus

“f0 > 80 && f0 < 0,95”, objek tabung “f0 > 0,95 && f0 < 1,20”. f0 merupakan variabel yang

menyimpan nilai thinness ratio hasil identifikasi objek. Grafik nilai area, perimeter dan

thinness ratio masing-masing objek ditunjukan pada gambar 4.7, gambar 4.8 dan gambar

4.9.

4.2.1.2. Nilai Centroid Posisi Peletakan Objek

Centroid merupakan titik tengah pada koordinat (x,y) dari citra digital yang akan

diolah dalam image processing. Nilai centroid digunakan untuk menentukan posisi objek

yang akan diidentifikasi. Centroid masing-masing posisi peletakan objek memiliki nilai

yang berbeda-beda dikarenakan area peletakan objek dibagi menjadi 12 posisi. Nilai

0

0,2

0,4

0,6

0,8

1

1,2

1 2 3 4 5 6 7 8 9 10 11 12

Nil

ai T

hin

nes

s R

atio

Posisi Peletakan Objek

Nilai Thinness Ratio Objek

Prisma Segitiga Tabung Kubus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

85

centroid tiap posisi peletakan objek ditunjukan pada gambar 4.10. Berdasarkan gambar 4.10,

nilai centroid tiap posisi ditunjukan oleh tabel 4.5.

Gambar 4.10. Nilai centroid tiap posisi peletakan objek

Tabel 4.5. Nilai Centroid tiap posisi peletakan objek

Posisi Centroid

X Y

1 40 200

2 120 200

3 200 200

4 280 200

5 40 120

6 120 120

7 200 120

8 280 120

9 40 40

10 120 40

11 200 40

12 280 40

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

86

4.2.2 Sudut Motor Servo

Berdasarkan data pengujian sudut motor servo yang diukur menggunakan busur

derajat, didapatkan nilai OCR motor servo. Pengujian dilakukan tiap 50 pada masing-masing

servo. Range sudut pengujian motor servo yaitu 00 sampai 1800. Nilai 1800 menjadi batas

maksimal pengujian karena pada implementasinya, lengan robot hanya membutuhkan

pergerakan maksimal 1800 untuk mengambil dan memindahkan objek. Berdasarkan hasil

pengujian, nilai OCR beserta sudut pada masing-masing servo berbeda-beda. Hal ini

ssebabkan oleh perbedaan karakteristik dan keakuratan motor servo. Nilai OCR dan sudut

servo digunakan sebagai acuan pemberian nilai OCR berdasarkan nilai sudut pergerakan

lengan robot. Nilai OCR motor servo 1, servo 2, servo 3 dan servo 4 beserta nilai sudutnya

dapat dilihat pada lampiran. Contoh pengujian sudut motor servo menggunakan busur

derajat dan LCD sebagai penampil data OCR ditunjukan pada gambar 4.11, gambar 4.12

gambar 4.13 dan gambar 4.14 sedangkan gambar hasil pengujian lengkapnya dapat dilihat

pada lampiran.

Pengaturan sudut motor servo dilakukan dengan cara memberikan lebar pulsa PWM

(pulse) . Rumus perhitungan pulse yang ditunjukan pada persamaan 2.17 tidak sesuai untuk

penelitian ini. Rumus pada persamaan 2.17 hanya digunakan untuk servo yang memiliki

lebar pulsa pengontrolan 1 ms sampai dengan 2 ms, sehingga untuk mengetahui pulsa

pengontrolan servo pada penelitian ini, digunakan persamaan garis seperti yang ditunjukkan

pada persamaan 4.1 [35]. Pengembangan rumus lebar pulsa untuk motor servo JX PDI-

6225MG-300 dan servo SG90 ditunjukan pada persamaan 4.2 dan 4.3.

𝑡 − 𝑡1

𝑡2 − 𝑡1=

𝜃 − 𝜃1

𝜃2 − 𝜃1 (4.1)

Keterangan :

t ∶ Lebar pulsa ℎ𝑖𝑔ℎ untuk sudut yang diinginkan

t1 ∶ Lebar pulsa ℎ𝑖𝑔ℎ sudut awal (ms)

t2 ∶ Lebar pulsa ℎ𝑖𝑔ℎ sudut akhir (ms)

θ ∶ Sudut yang diinginkan (derajat)

θ1 ∶ Sudut awal (derajat)

θ2 ∶ Sudut akhir (derajat)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

87

Berdasarkan spesifikasi motor servo yang dapat dilihat pada lampiran L-2 diketahui

motor servo JX PDI-6225MG-300 memiliki sudut pergerakan dari 00 hingga 3200 dengan

lebar pulsa dari 500 us – 2500 us atau sama dengan 0,5 ms – 2,5 ms. Dari spesifikasi tersebut

dapat diketahui jika pulsa untuk sudut 00 yaitu 0,5 ms (t1) dan pulsa untuk sudut 3200 yaitu

2,5 ms (t2), sedangkan sudut awal servo yaitu 00 (θ1) dan sudut akhir 3200 (θ2). Sehingga

jika nilai-nilai tersebut dimasukkan kedalam persamaan 4.1 akan didapatkan perhitungan

sebagai berikut :

𝑡𝐽𝑋 𝑃𝐷𝐼−6225𝑀𝐺−300 − 0,5 𝑚𝑠

2,5 𝑚𝑠 − 0,5 𝑚𝑠=

𝜃 − 0

3200 − 0

𝑡𝐽𝑋 𝑃𝐷𝐼−6225𝑀𝐺−300 − 0,5 𝑚𝑠

2 𝑚𝑠=

𝜃

320

𝑡𝐽𝑋 𝑃𝐷𝐼−6225𝑀𝐺−300 − 0,5 𝑚𝑠 = 𝜃

320× 2𝑚𝑠

𝑡𝐽𝑋 𝑃𝐷𝐼−6225𝑀𝐺−300 = (𝜃

320× 2 𝑚𝑠) + 0,5 𝑚𝑠 (4.2)

Keterangan :

𝑡𝐽𝑋 𝑃𝐷𝐼−6225𝑀𝐺−300 : Lebar pulsa ℎ𝑖𝑔ℎ 𝑃𝑊𝑀 servo JX PDI 6225MG 300

θ ∶ Sudut yang diinginkan (derajat)

Berdasarkan spesifikasi motor servo yang dapat dilihat pada lampiran L-3 diketahui

motor servo SG90 memiliki sudut pergerakan dari 00 hingga 1800 dengan lebar pulsa dari

500 us – 2400 us atau sama dengan 0,5 ms – 2,4 ms. Dari spesifikasi tersebut dapat diketahui

jika pulsa untuk sudut 00 yaitu 0,5 ms (t1) dan pulsa untuk sudut 1800 yaitu 2,4 ms (t2),

sedangkan sudut awal servo yaitu 00 (θ1) dan sudut akhir 1800 (θ2). Sehingga jika nilai-nilai

tersebut dimasukkan kedalam persamaan 4.1 akan didapatkan perhitungan sebagai berikut :

𝑡𝑆𝐺90 − 0,5 𝑚𝑠

2,4 𝑚𝑠 − 0,5 𝑚𝑠=

𝜃 − 0

180 − 0

𝑡𝑆𝐺90 − 0,5 𝑚𝑠

1,9 𝑚𝑠=

𝜃

180

𝑡𝑆𝐺90 − 0,5 𝑚𝑠 = 𝜃

180× 1,9𝑚𝑠

𝑡𝑆𝐺90 = (𝜃

180× 1,9 𝑚𝑠) + 0,5 𝑚𝑠 (4.3)

Keterangan :

𝑡𝑆𝐺90 ∶ Lebar pulsa ℎ𝑖𝑔ℎ PWM / 𝑝𝑢𝑙𝑠𝑒 (ms)

θ ∶ Sudut yang diinginkan (derajat)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

88

Gambar 4.11. Pengujian OCR dan sudut pada servo 1

Gambar 4.12. Pengujian OCR dan sudut pada servo 2

Gambar 4.13. Pengujian OCR dan sudut pada servo 3

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

89

Gambar 4.14. Pengujian OCR dan sudut servo pada 4

Perhitungan nilai error diperoleh dengan membandingkan lebar pulsa pengontrolan

servo dan OCR (praktik) dengan lebar pulsa pengontrolan servo dan OCR (teori).

Perhitungan nilai OCR mengacu pada persamaan 2.15, 2.16, 2.18, 4.2 dan 4.3Pada penelitian

ini, frekuensi kristal yang digunakan yaitu 11059200 Hz, sehingga didapatkan periode

sebesar 0,090422 x 10-6 s dan denga nilai prescaler 1, maka didapatkan lebar pulsa dan OCR

seperti ditunjukan pada tabel 4.6 dan tabel 4.7.

Tabel 4.6. Persentase Error Pulse Motor Servo JX-PDI-6225-300 (Servo 1)

Sudut

Teori Praktik Error (%)

|𝑃𝑢𝑙𝑠𝑒praktik − 𝑃𝑢𝑙𝑠𝑒teori

𝑃𝑢𝑙𝑠𝑒teori| 𝑥100%

Pulse

(ms) OCR

Pulse

(ms) OCR

00 0,50 22 0,50 22 0 %

300 0,69 30 0,69 30 0 %

450 0,78 34 0,78 34 0 %

900 1,06 46 1,06 46 0 %

1800 1,62 70 1,66 72 2,46 %

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

90

Tabel 4.7. Persentase Error Pulse Motor Servo Towerpro SG90

Sudut

Teori Praktik Error (%)

|𝑃𝑢𝑙𝑠𝑒praktik − 𝑃𝑢𝑙𝑠𝑒teori

𝑃𝑢𝑙𝑠𝑒teori| 𝑥100%

Pulse

(ms) OCR

Pulse

(ms) OCR

00 0,50 22 0,50 22 0 %

300 0,81 35 0,77 33 4,93 %

450 0,97 42 0,90 39 7,21 %

900 1,43 62 1,38 60 3,49 %

1800 2,39 103 2,36 102 1,25 %

4.2.3. Pergerakan Lengan Robot

Pergerakan lengan robot dalam mengambil dan memindahkan benda dicari

menggunakan analisis gambar untuk pergerakan servo 1 (servo base), invers kinematik

untuk pergerakan servo 2 dan servo 3 sedangkan servo 4 hanya bergerak membuka dan

menutup bagian gripper. Analisis gambar pergerakan servo satu dibuat menggunakan

software corel draw. Analisis pergerakan servo 2 dan servo 3 menggunakan metode invers

kinematik yang mengacu pada rumus 2.8 dan 2.9. Proses perhitungan invers kinematik

dilakukan menggunakan software matlab. Program perhitungan invers kinematik

menggunakan software matlab terdapat di lampiran. Tabel sudut tiap motor servo untuk

mengambil dan meletakan objek kubus, tabung dan prisma segitiga yang dianalisis

menggunakan gambar dan invers kinematik dapat dilihat pada lampiran sedangkan nilai

sudut tiap motor servo yang diimplementasikan pada lengan robot untuk mengambil dan

meletakan objek yang dapat dilihat pda tabel 4.8, tabel 4.9 dan tabel 4.10. Perbandingan

sudut pergerakan servo 1, serrvo 2 dan servo 3 ditunjukan oleh grafik pada gambar 4.15,

gambar 4.16 dan gambar 4.17.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

91

Tabel 4.8. Nilai sudut tiap servo untuk mengambil dan meletakan benda kubus

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1350 650 400 700

Posisi 2 1050 250 50 700

Posisi 3 800 250 50 700

Posisi 4 500 500 300 700

Posisi 5 1250 750 550 700

Posisi 6 1050 700 450 700

Posisi 7 850 700 450 700

Posisi 8 650 850 600 700

Posisi 9 1150 1000 850 700

Posisi 10 1000 950 750 700

Posisi 11 850 950 800 700

Posisi 12 700 1000 800 700

Meletakan benda

Kotak 1 00 450 350 100

Tabel 4.9. Nilai sudut tiap servo untuk mengambil dan meletakan benda tabung

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1350 650 400 700

Posisi 2 1050 250 50 700

Posisi 3 800 250 50 700

Posisi 4 500 500 300 700

Posisi 5 1250 750 550 700

Posisi 6 1050 700 450 700

Posisi 7 850 700 450 700

Posisi 8 650 850 600 700

Posisi 9 1150 1000 850 700

Posisi 10 1000 950 750 700

Posisi 11 850 950 800 700

Posisi 12 700 1000 800 700

Meletakan benda

Kotak 2 00 900 750 100

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 115: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

92

Tabel 4.10. Nilai sudut tiap servo untuk mengambil dan meletakan benda prisma

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1350 650 400 700

Posisi 2 1050 250 50 700

Posisi 3 800 250 50 700

Posisi 4 500 500 300 700

Posisi 5 1250 750 550 700

Posisi 6 1050 700 450 700

Posisi 7 850 700 450 700

Posisi 8 650 850 600 700

Posisi 9 1150 1000 850 700

Posisi 10 1000 950 750 700

Posisi 11 850 950 800 700

Posisi 12 700 1000 800 700

Meletakan benda

Kotak 3 250 1000 850 100

Nilai sudut pergerakan motor servo antara teori dan praktik memiliki perbedaan.

Perbedaan nilai sudut ini disebabkan oleh beberapa faktor, diantaranya yaitu ketidak

presisian mekanik lengan robot serta karakteristik, keakuratan motor servo dalam

menterjemahkan nilai OCR, serta pengimplementasian sudut yang harus bilangan bulat.

Perbedaan nilai sudut terjadi pada servo 1, servo 2 dan servo 3, hal ini karena servo 4 hanya

difungsikan untuk membuka dan menutup bagian gripper. Nilai sudut motor servo secara

teori terdapat di lampiran. Persentase error nilai sudut pergerakan motor servo antara teori

dan praktik dapat dilihat pada tabel 4.11, tabel 4.12, tabel 4.13 dan tabel 4.14.

Tabel 4.11. Persentase Error Nilai Sudut Motor Servo Satu

Posisi

Sudut

(Teori)

Sudut

(Praktik) |Sudutpraktik − Sudutteori

Sudutteori| 𝑥100%

1 1320 1350 2,27 %

2 1060 1050 0,94 %

3 740 800 8,10 %

4 490 500 2,04 %

5 1190 1250 5,04 %

6 1010 1050 3,96 %

7 800 850 6,25 %

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 116: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

93

Tabel 4.12. (Lanjutan) Persentase Error Nilai Sudut Servo 1

Posisi

Sudut

(Teori)

Sudut

(Praktik) |Sudutpraktik − Sudutteori

Sudutteori| 𝑥100%

8 610 650 6,55 %

9 1120 1150 2,67 %

10 980 1000 2,04 %

11 830 850 2,40 %

12 680 700 2,94 %

Gambar 4.15. Grafik Perbandingan Sudut Pergerakan Servo 1

Tabel 4.13. Persentase Error Nilai Sudut Motor Servo 2

Posisi

Sudut

(Teori)

Sudut

(Praktik) |Sudutpraktik − Sudutteori

Sudutteori| 𝑥100%

1 490 650 32,65 %

2 300 250 16,66 %

3 300 250 16,66 %

4 490 500 2,04 %

5 850 750 11,76 %

6 700 700 0 %

7 700 700 0 %

8 850 850 0 %

9 1080 1000 7,40 %

10 1010 950 5,94 %

11 1010 950 5,94 %

12 1080 1000 7,40 %

0

20

40

60

80

100

120

140

160

1 2 3 4 5 6 7 8 9 10 11 12

Su

du

t

Posisi Peletakan Objek

Grafik Perbandingan Sudut Pergerakan Servo 1

Nilai Sudut (Praktik) Nilai Sudut (Teori)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 117: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

94

Gambar 4.16. Grafik Perbandingan Sudut Pergerakan Servo 2

Tabel 4.14. Persentase Error Nilai Sudut Motor Servo 3

Posisi

Sudut

(Teori)

Sudut

(Praktik) |Sudutpraktik − Sudutteori

Sudutteori| 𝑥100%

1 230 400 73,91 %

2 140 50 64,28 %

3 140 50 64,28 %

4 230 300 30,43 %

5 510 550 7,84 %

6 380 450 18,42 %

7 380 450 18,42 %

8 510 600 17,64 %

9 760 850 11,84 %

10 670 750 11,94 %

11 670 800 19,40 %

12 760 800 5,26 %

0

20

40

60

80

100

120

1 2 3 4 5 6 7 8 9 10 11 12

Su

du

t

Posisi Peletakan Objek

Grafik Perbandingan Sudut Pergerakan Servo 2

Nilai Sudut (Praktik) Nilai Sudut (Teori)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 118: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

95

Gambar 4.17. Grafik Perbandingan Sudut Pergerakan Servo 3

Pemberian nilai sudut secara teori menyebabkan pergerakan lengan robot tidak akurat

dalam mengambil dan meletakan objek sehingga dilakukan beberapa percobaan untuk

mendapatkan pergerakan lengan robot yang tepat. Pada implementasinya, pemberian nilai

sudut secara praktik tidak memberikan keakuratan 100% pada lengan robot. Lengan robot

tidak dapat bergerak tepat berdasarkan centroid objek. Hal ini disebabkan oleh

ketidakpresisian mekanik lengan robot, perbedaan karakteristik motor servo serta dalam

penulisan program di software codevision AVR, serta nilai OCR yang harus ditulis dengan

bilangan bulat, tidak bisa dengan bilangan desimal. Supaya lengan robot dapat mengambil

setiap objek yang diletakan pada posisi 1 sampai dengan posisi 12, beberapa centroid titik

peletakan objek harus digeser posisinya. Perpindahan centroid peletakan objek pada sumbu

x dan sumbu y dapat dilihat pada tabel 4.15. Proses penentuan nilai centroid peletakan objek

pada area yang berukuran 28 cm x 21 cm sama dengan gambar 4.10. Pada implementasinya,

centroid peletakan objek di bor dengan diameter 4 mm. Pengeboran dilakukan pada area

sesuai dengan centroid posisi peletakan objek. Hal ini bertujuan untuk memberi lubang pada

centroid sehingga dalam peletakannya, objek dapat diletakan tepat di centroid masing-

masing area peletakan objek.

0

10

20

30

40

50

60

70

80

90

1 2 3 4 5 6 7 8 9 10 11 12

Sud

ut

Posisi Peletakan Objek

Grafik Perbandingan Sudut Pergerakan Servo 3

Nilai Sudut (Praktik) Nilai Sudut (Teori)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 119: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

96

Tabel 4.15. Nilai Centroid Peletakan Objek Sebelum dan Sesudah di Pindahkan

Posisi

Sebelum di Pindah

Sesudah di Pindah

Perpindahan Centroid

Peletakan Objek

Sumbu x

(cm)

Sumbu y

(cm)

Sumbu x

(cm)

Sumbu y

(cm)

Sumbu

X

(mm)

Sumbu y

(mm)

1 3,5 17,5 3,7 17 + 0,2 + 0,5

2 10,5 17,5 10,8 17,5 + 0,3 0

3 17,5 17,5 17,5 17,5 0 0

4 24,5 17,5 24,7 17,5 + 0,2 0

5 3,5 10,5 3,5 10,5 0 0

6 10,5 10,5 10,5 10,2 0 + 0,3

7 17,5 10,5 17,8 10,6 + 0,3 - 0,1

8 24,5 10,5 24,3 10,5 - 0,2 0

9 3,5 3,5 3,5 3,8 0 - 0,3

10 10,5 3,5 11,1 3,5 + 0,6 0

11 17,5 3,5 17,5 3,5 0 0

12 24,5 3,5 24,7 3,5 + 0,2 0

|Rerata Perpindahan| 0,16 0,1

Keterangan : Sumbu X ( + Geser ke Kanan, - Geser ke Kiri)

Sumbu Y ( + Geser ke Atas, - Geser ke Bawah)

4.2.4. Pengujian Keberhasilan Sistem Mengenali Bentuk dan Posisi Objek

Pada tugas akhir ini, dilakukan pengujian keberhasilan sistem mengenali bentuk dan

posisi objek. Objek yang dikenali berbentuk kubus, tabung dan prisma segitiga sedangkan

peletakan objek dilakukan pada posisi 1 hingga posisi 12. Pengujian dilakukan untuk

masing-masing objek pada 12 posisi peletakan benda dengan 5 kali percobaan. Tingkat

keberhasilan sistem ditunjukan oleh tabel 4.16 dan gambar objek yang dikenali bentuk dan

posisinya dapat dilihat pada lampiran.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 120: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

97

Tabel 4.16. Pengujian Keberhasilan Sistem Mengenali Bentuk dan Posisi Objek

Posisi Percobaan

ke-1

Percobaan

ke-2

Percobaan

ke-3

Percobaan

ke-4

Percobaan

ke-5

K T P K T P K T P K T P K T P

1 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

2 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

3 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

4 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

5 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

6 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

7 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

8 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

9 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

10 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

11 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

12 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √

Keterangan : K = Kubus, T = Tabung, P = Prisma Segitiga

: √ = Berhasil , X = Tidak Berhasil

Berdasarkan data hasil pengujian seperti ditunjukan pada tabel 4.16, maka dapat

disimpulkan bahwa sistem mampu mengenali bentuk dan posisi objek 100% apabia sesuai

dengan batasan masalah yang telah ditentukan sebelumnya dan dengan catatan intensitas

pencahayaanya sebesar 60 lux sampai dengan 80 lux.

4.2.5. Pengujian Keberhasilan Lengan Robot Saat Mengambil dan

Memindahkan Objek Berdasarkan Bentuk dan Posisi

Pengujian keberhasilan lengan robot saat mengambil dan meletakan objek berdasarkan

bentuk dan posisi dilakukan sebanyak 25 kali percobaan. Percobaan dilakukan dengan

mengkombinasikan jumlah dan bentuk objek yang diletakan pada area, orientasi peletakan

objek, posisi peletakan objek. Ketika sistem mengenali bentuk dan posisi objek, maka matlab

akan mengirimkan lima karakter secara serial kepada mikrokontroler Atmega32.

Mikrokontroler akan menterjemahkan masing-masing karakter yang diterima untuk

mengontrol pergerakan lengan robot saat mengambil dan meletakan objek ke kotak

peletakan benda. Pengujian keberhasilan lengan robot saat mengambil dan meletakan objek

berdasarkan bentuk dan posisi ditunjukan oleh tabel 4.17 dan tabel 4.18 sedangkan gambar

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 121: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

98

bentuk dan posisi objek yang diuji beserta GUI matlabnya ditunjukan pada gambar 4.18,

gambar 4.19, gambar 4.20, gambar 4.21, dan gambar 4.22.

Tabel 4.17. Pengujian lengan robot saat mengambil dan memindahkan objek

Percobaan

ke-

Keterangan Hasil

Pengujian Posisi Bentuk Obejk

1 2 Tabung √

2 3 Tabung √

3 6 Tabung √

4 8 Tabung √

5 9 Tabung √

6 1 Prisma Segitiga √

12 Kubus √

7 3 Prisma Segitiga √

5 Kubus √

8 7 Prisma Segitiga √

4 Kubus √

9 9 Prisma Segitiga √

3 Kubus √

10 11 Prisma Segitiga √

12 Kubus √

11

4 Prisma Segitiga √

6 Kubus √

7 Tabung √

12

1 Prisma Segitiga √

2 Kubus √

4 Tabung √

13

9 Prisma Segitiga √

6 Kubus √

3 Tabung √

14

12 Prisma Segitiga √

10 Kubus √

8 Tabung √

15

2 Prisma Segitiga √

7 Kubus √

11 Tabung √

16

3 Prisma Segitiga √

5 Tabung √

10 Tabung √

11 Prisma Segitiga √

17

4 Prisma Segitiga √

7 Tabung √

10 Tabung √

12 Prisma Segitiga √

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 122: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

99

Tabel 4.18. (Lanjutan) Pengujian lengan robot saat mengambil

dan memindahkan objek

Percobaan

ke-

Keterangan Hasil

Pengujian Posisi Bentuk Obejk

18

1 Prisma Segitiga √

6 Tabung √

9 Tabung √

3 Prisma Segitiga √

19

2 Prisma Segitiga √

7 Tabung √

6 Tabung √

4 Prisma Segitiga √

20

3 Prisma Segitiga √

2 Tabung √

12 Tabung √

10 Prisma Segitiga √

21

1 Tabung √

6 Prisma Segitiga √

7 Prisma Segitiga √

9 Tabung √

12 Kubus √

22

2 Tabung √

8 Prisma Segitiga √

7 Prisma Segitiga √

4 Tabung √

2 Kubus √

23

4 Tabung √

5 Prisma Segitiga √

9 Prisma Segitiga √

12 Tabung √

9 Kubus √

24

7 Tabung √

8 Prisma Segitiga √

1 Prisma Segitiga √

4 Tabung √

12 Kubus √

25

6 Tabung √

8 Prisma Segitiga √

2 Prisma Segitiga √

9 Tabung √

10 Kubus √

Keterangan : √ (Berhasil) , X (Tidak Berhasil)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 123: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

100

Gambar 4.18. Pengujian sistem lengan robot dengan 1 objek

Gambar 4.19. Pengujian sistem lengan robot dengan 2 objek

Gambar 4.20. Pengujian sistem lengan robot dengan 3 objek

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 124: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

101

Gambar 4.21. Pengujian sistem lengan robot dengan 4 objek

Gambar 4.22. Pengujian sistem lengan robot dengan 5 objek

Berdasarkan tabel 4.17 sampai dengan tabel 4.19 dapat dianalisa bahwa lengan robot

dapat mengambil dan memindahkan objek ke kotak peletakan benda berdasarkan bentuk dan

posisi. Hal ini dapat dibuktikan dengan melihat tingkat keberhasilan lengan robot dalam

mengambil dan meletakan objek seperti ditunjukan tabel 4.17 sampai dengan tabel 4.19.

Khusus pengambilan objek di posisi 1, gripper harus menggeser objek kekiri terlebih dahulu

untuk dapat mencengkram objek. Hal ini perlu dilakukan karena dengan desain gripper

seperti ditunjukan pada gambar 3.7, saat mengambil objek di posisi 1, gripper akan

menyentuh dan menggeser objek di area posisi 2, sehingga dapat menyebabkan objek di

posisi 2 tidak terambil. Tingkat keberhasilan lengan robot pada 75 kali pengambilan dan

pemindahan objek yaitu 100% dengan catatan sebagai berikut :

1. Semua wiring antara minimum sistem ATmega32 dan lengan robot dipastikan

terkoneksi, dikarenakan jika ada wiring yang tidak terkoneksi, akan meyebabkan

servo tidak bergerak.

2. Mekanik lengan robot harus dipastikan tersambung antara base, lengan bawah,

lengan atas dan juga gripper, dikarenakan jika ada sambungan yang tidak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 125: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

102

tersambung akan mempengaruhi pergerakan lengan robot dalam mengambil dan

memindahkan objek.

3. peletakan benda sesuai dengan batasan masalah.

4.3. Analisa dan Pembahasan Perangkat Lunak

Pada bagian ini, akan dibahas tentang program computer vision di software matlab dan

program pergerakan robot di software codevision AVR.

4.3.1. Software Matlab

Pada sub bab ini, akan dibahas listing program yang di program menggunakan

software matlab diantaranya penjelasan inisialisasi komunikasi USART, inisialisasi

webcam, proses akuisisi citra, proses image processing, proses labeling dan segmentasi,

proses pengenalan bentuk dan posisi objek, proses penentuan posisi objek, proses

pengiriman data dari matlab ke mikrokontroler, serta tampilan GUI matlab.

4.3.1.1. Inisialisasi Komunikasi USART

Supaya matlab dengan mikrokontroler dapat berkomunikasi, maka pada bagian

program matlab harus dilakukan inisialisasi komunikasi USART terlebih dahulu. Hal ini

dikarenakan pada bagian laptop dengan mikrokontroler harus memiliki nilai baudrate yang

sama. Jika kedua perangkat tersebut memiliki nilai baudrate yang berbeda, maka dipastikan

kedua perangkat ini tidak akan dapat berkomunikasi. Program inisialisasi komunikasi

USART ditunjukan oleh gambar 4.23, gambar 4.24, dan gambar 4.25.

Gambar 4.23. Listing program inisialisasi komunikasi USART

Gambar 4.24. (lanjutan) Listing program inisialisasi komunikasi USART

%inisialisasi komunikasi serial

komunikasi = serial ('COM5', 'BaudRate',9600);

fopen(komunikasi); %membuka port komunikasi

guidata(hObject,handles);

%menutup dan menghapus komunikasi

guidata(hObject,handles);

fclose(komunikasi);

delete(komunikasi);

clear komunikasi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 126: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

103

Gambar 4.25. (lanjutan) Listing program inisialisasikomunikasi USART

4.3.1.2. Inisialisasi Webcam

Untuk melakukan proses pengolahan citra, maka dibutuhkan perangkat keras berupa

kamera atau webcam yang digunakan untuk mengakuisisi citra. Oleh karena itu, diperlukan

inisialisasi webcam, supaya dapat terhubung dan dikenali oleh matlab. Inisialisasi webcam

ditunjukan oleh gambar 4.26.

Gambar 4.26. Listing program inisialisasi webcam

Listing program tersebut merupakan inisialisasi webcam. Winvideo merupakan nama

adaptor kamera webcam, angka 1 adalah DeviceID kamera, YUY2 merupakan format citra

hasil capturing webcam yang memiliki resolusi 320 x 240 pixel.

4.3.2.3. Proses Akuisisi Citra

Proses akuisisi dilakukan menggunakan webcam. Proses akuisisi citra dilakukan

dengan meng-capture atau memindai citra analog kemudian mengkonversinya menjadi citra

digital. Akuisisi citra oleh webcam bertujuan untuk mendapatkan citra digital objek yang

akan diolah dalam image processing. Program matlab akusisi citra mengacu pada flowchart

yang ditunjukan oleh gambar 3.21. Listing program akuisisi citra ditunjukan oleh gambar

4.27.

Gambar 4.27. Listing program akuisisi citra

Proses akuisisi dimulai dengan meng-ON kan webcam terlebih dahulu dengan perintah

“start” sehingga webcam akan menampilkan video citra yang akan diakuisisi. Perintah

program “stoppreview” adalah fungsi internal matlab yang digunakan untuk menghentikan

fprintf(komunikasi,'a');

%proses inisialisasi webcam

vidobj = videoinput('winvideo',1,'YUY2_320x240');

% Proses capture citra objek

start(vidobj);

pause(0.5);

trigger(vidobj);

stoppreview(vidobj);

frame=getdata(vidobj);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 127: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

104

video citra objek agar dapat di capture oleh webcam. Capture citra dilakukan menggunakan

fungsi internal matlab “getdata”.

4.3.2.4. Proses Image Preprocessing

Proses image preprocessing merupakan tahap awal dalam pengolahan citra digital.

Citra hasil capturing webcam memiliki format gambar YUY2. Citra hasil capturing webcam

harus dikonversi terlebih dahulu menjadi citra berwarna dengan cara menggunakan fungsi

internal matlab “yuy2torgb”. Citra RGB dikonversi menjadi citra grayscale menggunakan

fungsi internal matlab “rgb2gray” untuk diproses. Kemudian citra grayscale dikonversi

menjadi citra biner menggunakan fungsi internal matlab “im2bw” dengan nilai treshold

0,25. Nilai 0,25 merupakan nilai treshold untuk mengkonversi citra grayscale menjadi citra

biner. Nilai 0,25 didapatkan dari hasil evaluasi beberapa percobaan, dan yang menghasilkan

kualitas citra yang lebih baik adalah nilai 0,25. Nilai 0.25 merupakan nilai tengah antara

hasil percobaan yang menghasilkan citra biner dengan kualitas yang baik yaitu dengan nilai

treshold 0,2 dan 0,3. Percobaan dilakukan sebanyak lima kali, yaitu dengan nilai treshold

0,1 sampai dengan 0,5 pada intensitas cahaya sebesar 60 lux sampai dengan 80 lux. Intensitas

cahaya diukur menggunakan sensor cahaya pada smartphone menggunakan aplikasi lux

meter. Dari hasil percobaan, dapat disimpulkan bahwa pemberian nilai treshold yang tidak

tepat dapat mengurangi kualitas citra biner.

Citra hasil percobaan nilai treshold ditunjukan pada gambar 4.28, gambar 4.29,

gambar 4.30 gambar 4.31 dan gambar 4.32. Program matlab image preprocessing mengacu

pada flowchart yang ditunjukan oleh gambar 3.22. Listing program image preprocessing

ditunjukan oleh gambar 4.33.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 128: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

105

Gambar 4.28. Hasil capturing webcam dengan nilai treshold 0,1

Gambar 4.29. Hasil capturingwebcam dengan nilai treshold 0,2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 129: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

106

Gambar 4.30. Hasil capturing webcam dengan nilai treshold 0,3

Gambar 4.31. Hasil capturing webcam dengan nilai treshold 0,4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 130: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

107

Gambar 4.32. Hasil capturing webcam dengan nilai treshold 0,5

Gambar 4.33. Listing program image preprocessing

Citra biner dapat memiliki noise. Noise tersebut disebabkan oleh beberapa faktor,

diantaranya adalah faktor cahaya sehingga harus dilakukan proses noise filtering

menggunakan fungsi internal matlab “medfilt2”. Proses ini bertujuan untuk menghilangkan

noise agar citra dapat diproses dan di identifikasi. Nilai kernel matrix noise filtering yang

digunakan dalam penelitian ini yaitu 3x3. Nilai 3x3 merupakan nilai default median filtering

pada software matlab sehingga tidak perlu ditulis dalam program. Semakin besar nilai kernel

matrixnya, maka noise yang lebih besar dapat dihilangkan dari citra, tetapi tepi citra objek

akan ter-noise filtering juga sehingga bentuk objek tidak akan sempurna.

%image preprocessing

citra1=yuy2torgb(frame);

citra2=rgb2gray(citra1);

citrabiner=im2bw(citra2,0.25);

citranf=medfilt2(citrabiner);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 131: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

108

4.3.2.5. Proses Labeling dan Segmentasi

Setelah dilakukan proses image preprocessing pada citra digital, proses selanjutnya

adalah labeling citra objek. Proses ini bertujuan untuk memberi label atau identitas pada

masing-masing citra objek. Fungsi internal matlab untuk labeling objek adalah “bwlabel”.

Citra hasil labeling kemudian di segmentasi untuk di indentifikasi bentuk dan posisinya satu

per satu. Proses segmentasi yaitu, untuk segmenytasi objek pertama, jika terdapat nilai pixel

yang tidak sama dengan satu, maka nilai pixel diubah menjadi bernilai nol sedangkan untuk

pixel yang bernilai satu akan tetap bernilai satu sehingga didapatkan hasil segmentasi objek

pertama. Pada segmentasi objek kedua, jika terdapat nilai pixel yang tidak sama dengan dua,

maka nilai pixel diubah menjadi bernilai nol sedangkan untuk pixel yang bernilai dua akan

diubah menjadi bernilai satu sehingga didapatkan hasil segmentasi objek kedua.

Program matlab labeling dan segmentasi objek mengacu pada flowchart yang

ditunjukan oleh gambar 3.23. Listing program labeling dan segmentasi citra ditunjukan oleh

gambar 4.34.

Gambar 4.34. Listing program labeling dan segmentasi citra

%Memberi label untuk tiap objek dalam citra biner

c = bwlabel(a);

%segementasi citra objek

o1=c==1;

o2=c==2;

o3=c==3;

o4=c==4;

o5=c==5;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 132: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

109

4.3.2.6. Proses Pengenalan Bentuk Objek

Proses pengenalan bentuk objek dilakukan setelah proses segmentasi pada citra objek.

Proses pengenalan bentuk didasarkan pada hasil perhitungan nilai area, perimeter dan

thinnes ratio pada objek. Program matlab pengenalan bentuk objek mengacu pada

flowchart yang ditunjukan oleh gambar 3.24. Listing program perhitungan nilai area,

perimeter dan thinnes ratio ditunjukan oleh gambar 4.35.

Gambar 4.35. Listing program perhitungan nilai area, perimeter, thinness ratio objek

“jumobjek=max(max(c));” digunakan untuk menghitung banyaknya objek pada citra.

Proses ini bertujuan untuk menentukan proses looping program perhitungan area, perimeter

dan thinness ratio. Fungsi internal matlab yang digunakan untuk menghitung area dan

perimeter adalah “regionprops”. Nilai hasil perhitungan area disimpan dalam variabel dba

dalam bentuk matriks, sedangkan nilai hasil perhitungan perimeter disimpan dalam variabel

dbp matriks. Nilai dalam variabel dba dan dbp digunakan untuk perhitungan thinness ratio.

Nilai thinness ratio masing-masing objek disimpan dalam variabel f0 dalam bentuk matriks.

Masing-masing objek memiliki nilai thinness ratio yang berbeda-beda. Nilai tersebut yang

digunakan sebagai acuan untuk mengelompokan bentuk objek. Listing program penentuan

bentuk objek berdasarkan nilai thiness ratio ditunjukan pada gambar 4.36 dan gambar 4.37.

%perhitungan perimeter dan area

jumobjek=max(max(c));

for k=1:jumobjek

objek=c==k;

d0=regionprops(double(objek),'Perimeter');

d1=d0.Perimeter;

dbPerimeter(:,k)=d1;

e0=regionprops(double(objek),'Area');

e1=e0.Area;

dbArea(:,k)=e1;

end

dbp=dbPerimeter;

dba=dbArea;

%perhitungan thinness ratio

jumobjek=max(max(c));

for k=1:jumobjek

f0=(4*pi*dba(k))/dbp(k)^2;

dbthiness(:,k)=f0;

end

tr=dbthiness;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 133: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

110

Gambar 4.36. Listing program penentuan bentuk objek

Gambar 4.37. (Lanjutan) Listing program penentuan bentuk objek

Listing program tersebut merupakan bagian dari subrutin program utama untuk citra

hasil segmentasi pada posisi 1. Nilai thinness ratio objek pertama diambil dari matriks kolom

ke 1 dan baris ke 1 pada variabel f0, untuk objek ke 2 diambil dari matriks kolom ke 2 dan

baris ke 1 begitu seterusnya. Kemudian nilai tersebut dibandingkan satu persatu untuk

menentukan bentuk objek. Arrayoutput merupakan array yang menyimpan nilai sebagai

kode bentuk serta posisi objek. Nilai dalam arrayoutput akan dikonversikan menjadi bentuk

jumobjek=max(max(c));

%Menentukan output posisi dan bentuk objek

for k = 1 : jumobjek

%mengambil data centroid dan thinness ratio

dari matrik pada variabel db

%dan f0

db=dbcentroid(:,k);

f0=dbthiness(1,k);

%posisi 1

if db(1,1) > 240 && db(1,1) < 320 && db

(2,1) < 80

if f0 < 0.95 && f0 > 0.8

if (k==1)

arrayoutput = [1];

arraychar = [1];

elseif (k>1)

arrayoutput = [arrayoutput 1];

arraychar = [arraychar 1];

end

elseif f0 < 1.2 && f0 > 0.95

if (k==1)

arrayoutput = [2];

arraychar = [2];

elseif (k>1)

arrayoutput = [arrayoutput 2];

arraychar = [arraychar 2];

end

elseif f0 < 0.8 && f0 > 0.66

if (k==1)

arrayoutput = [3];

arraychar = [3];

elseif (k>1)

arrayoutput = [arrayoutput 3];

arraychar = [arraychar 3];

end

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 134: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

111

dan posisi objek untuk dioutputkan pada GUI matlab. Proses penentuan bentuk objek

dilakukan sebanyak jumlah objek yang dikenali pada citra digital.

4.3.2.7. Proses Penentuan Posisi Objek

Proses penentuan posisi objek didasarkan pada nilai centroid objek. Penentuan posisi

dilakukan dengan membagi area peletakan objek menjadi 12 posisi. Masing-masing posisi

memiliki batas nilai pixel sebagai batas antara posisi 1 dengan yang lainnya. Proses ini

bertujuan untuk mengelompokan nilai centroid objek berada di posisi 1 hingga posisi 12.

Untuk menentukan nilai centroid, dilakukan perhitungan pada masing-masing objek yang

akan di identifikasi. Program matlab penentuan posisi objek mengacu pada flowchart yang

ditunjukan oleh gambar 3.25. Listing program perhitungan centroid ditunjukan pada gambar

4.38.

Gambar 4.38. Listing program perhitungan centoid

Fungsi internal matlab “regionprops” adalah perintah untuk menghitung nilai

centroid. Perhitungan centroid dilakukan pada masing-maisng citra objek dan hasilnya

disimpan dalam variabel db dalam bentuk matriks. Listing program penentuan posisi objek

ditunjukan pada gambar 4.39.

%Perhitungan centroid

jumobjek=max(max(c));

for k=1:jumobjek;

objek=c==k;

c0=regionprops(double(objek),'Centroid');

c1=c0.Centroid;

dbcentroid(:,k)=c1;

end

db=dbcentroid;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 135: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

112

Gambar 4.39. Listing program penentuan posisi objek

Listing program tersebut merupakan bagian dari subrutin program utama citra hasil

segmentasi objek ke1 pada posisi 2. Program “db (1,1) < 240 && db (1,1) > 160 && db

(2,1) < 80” merupakan program untuk mengambil data nilai centroid pada matriks baris 1,

kolom 1 dan baris 2, kolom 1 pada variabel db. Nilai centroid tersebut dibandingankan

dengan nilai batas pixel untuk posisi 2 yaitu nilai y < 240 dan y > 160 serta x < 80. Proses

ini dilakukan untuk masing-masing posisi pada subrutin program utama hingga nilai

centroidnya sesuai dengan batas (x,y).

Arrayoutput merupakan array yang digunakan untuk menyimpan nilai sebagai kode

bentuk serta posisi objek. Nilai didalam arrayoutput akan dikonversikan menjadi bentuk dan

posisi objek untuk dioutputkan pada GUI matlab.

%Posisi 2

elseif db(1,1) < 240 && db (1,1) > 160 && db (2,1) < 80

if f0 < 0.95 && f0 > 0.8

if (k==1)

arrayoutput = [4];

arraychar = [4];

elseif (k>1)

arrayoutput = [arrayoutput 4];

arraychar = [arraychar 4];

end

elseif f0 < 1.2 && f0 > 0.95

if (k==1)

arrayoutput = [5];

arraychar = [5];

elseif (k>1)

arrayoutput = [arrayoutput 5];

arraychar = [arraychar 5];

end

elseif f0 < 0.8 && f0 > 0.66

if (k==1)

arrayoutput = [6];

arraychar = [6];

elseif (k>1)

arrayoutput = [arrayoutput 6];

arraychar = [arraychar 6];

end

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 136: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

113

4.3.2.8. Proses Pengiriman Data dari Matlab ke Mikrokontroler

Setelah bentuk dan posisi masing-masing objek dikenali, proses selanjutnya adalah

mengirimkan karakter ke mikrokontroler untuk menggerakan lengan robot dalam

mengambil dan meletakan benda sesuai dengan jumlah objek yang di identifikasi. Sebelum

karakter dikirimkan, karakter harus diurutkan terlebih dahulu mulai dari yang terkecil hingga

yang terbesar. Proses ini bertujuan supaya lengan robot mengambil benda dengan urutan

posisi terkecil hingga terbesar. Karakter dalam matlab tidak dapat diurutkan, sehingga dalam

program subrutin utama, dilakukan penambahan data pada variabel arraychar. Program

matlab pengiriman data dari matlab ke mikrokontroler mengacu pada flowchart yang

ditunjukan oleh gambar 3.28. Listing program penambahan data pada variabel arraychar

ditunjukan pada gambar 4.40.

Gambar 4.40. Listing program penambahan arraychar objek di posisi posisi 4

Penambahan data arraychar untuk segmentasi objek ke1 ditulis dengan progran

“arraychar = [10]”, “arraychar = [11]”, dan “arraychar = [12]”, sedangkan penambahan data

array citra hasil segmentasi 2,3,4,5 ditulis dengan program “ arraychar = [arraychar 10]”, “

arraychar = [arraychar 11]” dan “ arraychar = [arraychar 12]” yang bertujuan untuk

menambah data arraychar disamping kanan data arraychar sebelumnya.

%Posisi 4

elseif db(1,1) < 80 && db (2,1) < 80

if f0 < 0.95 && f0 > 0.8

if (k==1)

arrayoutput = [10];

arraychar = [10];

elseif (k>1)

arrayoutput = [arrayoutput 10];

arraychar = [arraychar 10];

end

elseif f0 < 1.2 && f0 > 0.95

if (k==1)

arrayoutput = [11];

arraychar = [11];

elseif (k>1)

arrayoutput = [arrayoutput 11];

arraychar = [arraychar 11];

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 137: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

114

Data arraychar akan menyimpan nilai yang menunjukan bentuk dan posisi benda yang

akan dikirimkan ke mikrokontroler. Setelah proses penambahan data arraychar di program

subrutin utama, data arraychar memiliki kemungkinan terisi kurang dari 5 data, ini

dikarenakan objek yang dikenali kurang dari lima objek. Untuk itu dilakukan penyortiran

yang bertujuan untuk melengkapi arraychar menjadi lima data dengan cara menambah data

arraychar dengan angka 0 sampai dengan total nilai yang disimpan di dalam arraychar

berjumlah lima data. Listing program pelengkapan data arraychar ditunjukan oleh gambar

4.41 dan gambar 4.42.

Gambar 4.41. Listing program mengisi arraychar secara lengkap (5 data)

Gambar 4.42. (lanjutan) Listing program mengisi arraychar secara lengkap (5 data)

%mengisi arraychar dengan 5 data 0 (objek = 0)

if jumobjek == 0

arraychar = [0 0 0 0 0];

%mengisi arraychar dengan 4 data 0 (objek = 1)

elseif jumobjek == 1

for k=1:4

arraychar = [arraychar 0];

end

%mengisi arraychar dengan 3 data 0 (objek = 2)

elseif jumobjek == 2

for k=1:3

arraychar = [arraychar 0];

end

%mengisi arraychar dengan 2 data 0 (objek = 3)

elseif jumobjek == 3

for k=1:2

arraychar = [arraychar 0];

end

%mengisi arraychar dengan 1 data 0 (objek = 4)

elseif jumobjek == 4

for k=1:1

arraychar = [arraychar 0];

end

%tidak menambah data arraychar

(objek = 5)

elseif jumobjek == 5

arraychar = [arraychar];

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 138: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

115

Setelah data arraychar lengkap (5 data), dilakukan proses pengurutan nilai dari yang

terkecil hingga terbesar menggunakan perintah program “sort”. Listing program pengurutan

data arraychar ditunjukan oleh gambar 4.43.

Gambar 4.43. Listing program sort array

Proses selanjutnya adalah mengkonversi nilai masing-masing arraychar menjadi

karakter yang akan dikirim ke mikrokontroler. Proses pengkonversian dilakukan satu per

satu, dimulai dari data arraychar pertama sampai dengan ke lima. Listing program

pengkonversian arraychar menjadi karakter ditunjukan oleh gambar 4.44 sampai gambar

3.50.

Gambar 4.44. Listing program pengkonversian data arraychar menjadi karakter

%mengurutkan data array mulai data terkecil hingga data terbesar

dataarray=sort(arraychar);

%program mengkonversi dataarray menjadi

%karakter untuk dikirim ke mikro

data=dataarray(f);

if (data==1)

guidata(hObject,handles);

fprintf(komunikasi,'a');

guidata(hObject,handles);

elseif (data==2)

guidata(hObject,handles);

fprintf(komunikasi,'b');

guidata(hObject,handles);

elseif (data==3)

guidata(hObject,handles);

fprintf(komunikasi,'c');

guidata(hObject,handles);

elseif (data==4)

guidata(hObject,handles);

fprintf(komunikasi,'d');

guidata(hObject,handles);

elseif (data==5)

guidata(hObject,handles);

fprintf(komunikasi,'e');

guidata(hObject,handles);

elseif (data==6)

guidata(hObject,handles);

fprintf(komunikasi,'f');

guidata(hObject,handles);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 139: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

116

Gambar 4.45. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

Gambar 4.46. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

elseif (data==7)

guidata(hObject,handles);

fprintf(komunikasi,'g');

guidata(hObject,handles);

elseif (data==8)

guidata(hObject,handles);

fprintf(komunikasi,'h');

guidata(hObject,handles);

elseif (data==9)

guidata(hObject,handles);

fprintf(komunikasi,'i');

guidata(hObject,handles);

elseif (data==10)

guidata(hObject,handles);

fprintf(komunikasi,'j');

guidata(hObject,handles);

elseif (data==11)

guidata(hObject,handles);

fprintf(komunikasi,'k');

guidata(hObject,handles);

elseif (data==12)

guidata(hObject,handles);

fprintf(komunikasi,'l');

guidata(hObject,handles);

elseif (data==13)

guidata(hObject,handles);

fprintf(komunikasi,'m');

guidata(hObject,handles);

elseif (data==14)

guidata(hObject,handles);

fprintf(komunikasi,'n');

guidata(hObject,handles);

elseif (data==15)

guidata(hObject,handles);

fprintf(komunikasi,'o');

guidata(hObject,handles);

elseif (data==16)

guidata(hObject,handles);

fprintf(komunikasi,'p');

guidata(hObject,handles);

elseif (data==17)

guidata(hObject,handles);

fprintf(komunikasi,'q');

guidata(hObject,handles);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 140: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

117

Gambar 4.47. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

Gambar 4.48. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

elseif (data==18)

guidata(hObject,handles);

fprintf(komunikasi,'r');

guidata(hObject,handles);

elseif (data==19)

guidata(hObject,handles);

fprintf(komunikasi,'s');

guidata(hObject,handles);

elseif (data==20)

guidata(hObject,handles);

fprintf(komunikasi,'t');

guidata(hObject,handles);

elseif (data==21)

guidata(hObject,handles);

fprintf(komunikasi,'u');

guidata(hObject,handles);

elseif (data==22)

guidata(hObject,handles);

fprintf(komunikasi,'v');

guidata(hObject,handles);

elseif (data==23)

guidata(hObject,handles);

fprintf(komunikasi,'w');

guidata(hObject,handles);

elseif (data==24)

guidata(hObject,handles);

fprintf(komunikasi,'x');

guidata(hObject,handles);

elseif (data==25)

guidata(hObject,handles);

fprintf(komunikasi,'y');

guidata(hObject,handles);

elseif (data==26)

guidata(hObject,handles);

fprintf(komunikasi,'z');

guidata(hObject,handles);

elseif (data==27)

guidata(hObject,handles);

fprintf(komunikasi,'!');

guidata(hObject,handles);

elseif (data==28)

guidata(hObject,handles);

fprintf(komunikasi,'#');

guidata(hObject,handles);

elseif (data==29)

guidata(hObject,handles);

fprintf(komunikasi,'$');

guidata(hObject,handles);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 141: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

118

Gambar 4.49. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

Gambar 4.50. (lanjutan) Listing program pengkonversian data arraychar menjadi karakter

Listing program tersebut merupakan program konversi data arraychar menjadi

karakter. Karakter ‘0’ menunjukan tidak ada data citra objek pada hasil segmentasi tertentu.

Nilai data arraychar yang sudah dikonversi menjadi karakter, kemudian dikirim secara serial

kse mikrokontroler. Pengiriman data ke mikrokontroler berupa lima data karakter yang akan

diterima dan diterjemahkan oleh mikrokontroler untuk menggerakan lengan robot.

elseif (data==30)

guidata(hObject,handles);

fprintf(komunikasi,'%');

guidata(hObject,handles);

elseif (data==31)

guidata(hObject,handles);

fprintf(komunikasi,'^');

guidata(hObject,handles);

elseif (data==32)

guidata(hObject,handles);

fprintf(komunikasi,'&');

guidata(hObject,handles);

elseif (data==33)

guidata(hObject,handles);

fprintf(komunikasi,'*');

guidata(hObject,handles);

elseif (data==34)

guidata(hObject,handles);

fprintf(komunikasi,'(');

guidata(hObject,handles);

elseif (data==35)

guidata(hObject,handles);

fprintf(komunikasi,')');

guidata(hObject,handles);

elseif (data==36)

guidata(hObject,handles);

fprintf(komunikasi,'+');

guidata(hObject,handles);

elseif (data==0)

guidata(hObject,handles);

fprintf(komunikasi,'0');

guidata(hObject,handles);

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 142: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

119

4.3.1.9. Tampilan GUI Matlab

GUI (Grapichal User Interface) merupakan suatu tampilan yang berfungsi sebagai

antarmuka antara user dan komputer sehingga mempermudah dalam pengawasan program

yang sedang terjadi atau dieksekusi. GUI memiliki peran yang penting karena dengan adanya

GUI, user dapat melihat informasi yang ditampilkan oleh program. Tampilan GUI yang

dibuat ditunjukan oleh gambar 4.51.

Gambar 4.51. Tampilan GUI Matlab

Terdapat beberapa fasilitas yang terdapat pada GUI yang digunakan yaitu axes, edit

text, dan push button. Axes 1 berfungsi untuk menampilkan citra secara langsung dari

webcam, axes 2 berfungsi untuk menampilkan citra biner, axes 3 berfungsi menampilkan

citra berwarna. Edit text 2 sampai edit text 6 berfungsi menampilkan posisi objek, sedangkan

edit text 7 sampai edit text 11 berfungsi menampilkan bentuk objek. Push button merupakan

tombol yang berfungsi sebagai controler, yaitu untuk mengaktifkan webcam, meng-capture

objek, memproses pengenalan bentuk dan posisi objek serta pengiriman data array secara

serial ke mikrokontroler. Bagian petunjuk posisi berfungsi untuk menunjukan posisi

peletakan objek pada area. Bagian yang terakhir yaitu exit yang berfungsi untuk keluar dari

GUI dan program matlab.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 143: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

120

4.3.2. Software Codevision AVR

Pada sub bab ini akan dibahas dan dijelaskan tentang masing-masing fungsi pada

listing program yang diprogram menggunakan software codevision AVR diantaranya

inisialisasi komunikasi serial USART, inisialisasi timer0, program menerima data serial dari

matlab, program pengendali motor servo dan sub rutin program utama dalam menampilkan

data karakter, bentuk dan posisi benda di LCD serta program pergerakan lengan robot saat

mengambil dan meletakan benda. Program pada mikrokontroler dibuat berdasarkan wiring

motor servo pada minimum sistem Atmega32 yang dapat dilihat di lampiran.

4.3.2.1. Inisialisasi Komunikasi USART

Pada bagian ini berfungsi sebagai inisialisasi dan pengaturan register-register dalam

komunikasi USART untuk menghubungkan laptop dengan ATmega32. Listing program

inisialisasi komunikasi USART ditunjukan oleh gambar 4.52.

Gambar 4.52. Listing Program inisialisasi komunikasi USART pada codevision AVR

Mikrokontroler Atmega32 hanya difungsikan untuk menerima data serial yang dikirim

oleh matlab sehingga USART Receiver On, sedangkan USART Transmitter di Off kan.

Mode USART yang digunakan adalah asynchronus yaitu komunikasi serial dengan masing-

masing memiliki sumber clock sendiri. Baudrate yang digunakan yaitu 9600 bps.

Register-register yang digunakan untuk inisialisasi USART yaitu UCSRA, UCSRB,

UCSRC, UBRRH, UBRRL. Register UCSRA tidak diberikan nilai karena bit-bit registernya

akan set sesuai dengan program yang sedang di eksekusi. Register UCSRB diberi nilai 0x90,

dalam biner sama dengan 10010000. Nilai 10010000 menunjukan bahwa bit 7 dan bit 4 di

set dengan nilai 1. Bit 7 berfungsi mengaktifkan interupsi RX complete sedangkan bit 4

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: Off

// USART Mode: Asynchronous

// USART Baud Rate: 9600

UCSRA=0x00;

UCSRB=0x90;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x47;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 144: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

121

berfungsi untuk mengangktifkan pin RX saluran USART. Register UCSRC diberi nilai

0x86, dalam biner sama dengan 10000110. Nilai 10000110 menunukan bahwa bit 7, bit 2,

dan bit 1 diset dengan nilai 1. Bit 7 berfungsi untuk menulis atau membaca register UCSRC,

bit 2 dan bit 1 dikombinasikan dengan bit 2 dalam register UCSRB yang berfungsi untuk

mengatur jumlah karakter serial bit yang digunakan untuk memilih lebar data. Register

UBRRH diberi nilai 0x00 dan UBRRL diberi nilai 0x47. Nilai 0x00 dan 0x47 menunjukan

bahwa pada komunikasi USART yang digunakan, memiliki frekuensi kristal 11,059200 Mhz

dan baudrate 9600 bps.

4.2.3.2. Inisialisasi Timer0

Timer0 digunakan sebagai pembangkit sinyal PWM. Timer yang digunakan

menggunakan sumber clock yaitu sistem clock serta memiliki frekuensi clock sebesar

11,059200 Mhz. Mode timer yang digunakan adalah mode normal sehingga register TCCR0

diberi rnilai 0x01. Timer0 yang akan mencacah nilai mulai dari 0 sampai dengan 255 yang

digunakan untuk membangkitkan sinyal PWM. Sinyal PWM digunakan untuk

mengendalikan motor servo. Inisialisasi timer0 ditunjukan oleh gambar 4.53.

Gambar 4.53. Listing program inisialisasi Timer0

4.3.2.3. Program Menerima Data Serial dari Matlab

Program untuk menerima data menggunakan fasilitas interupsi. Interupsi yang

digunakan yaitu dengan memanfaatkan RXC pada register UCSRB. Bit register ini akan set

ketika data yang masuk ke dalam UDR sudah lengkap dan belum dibaca sehingga dapat

membangkitkan interupsi. Ketika interupsi dibangkitkan, data yang dikirim dari matlab akan

disimpan dalam varibel. Data yang dikirim oleh matlab berjumlah lima karakter. Masing-

masing karakter memiliki variabel penyimpanan. Tujuannya yaitu masing-masing variabel

yang menyimpan data karakter akan dibandingankan dengan karakter pada mikrokontroler

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 11059,200 kHz

// Mode: Normal top=0xFF

// OC0 output: Disconnected

TCCR0=0x01;

TCNT0=0x00;

OCR0=0x00;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 145: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

122

untuk menentukan pergerakan lengan robot. Variabel yang digunakan untuk menyimpan

data yang dikirim matlan yaitu a,b,c,d dan e.

Pada penelitian ini, variabel yang akan digunakan untuk menyimpan data

dideklarasikan dengan tipe data char. Tipe data char merupakan tipe data yang hanya mampu

menyimpan 8 bit data, sehingga hanya bisa menerima satu karakter. Deklarasi variabel untuk

menerima data komunikasi serial USART ditunjukan pada gambar 4.54.

Gambar 4.54. Deklarasi tipe data variabel untuk menerima data serial USART

Program menerima data serial yang digunakan dalam komunikasi USART ini adalah

scanf. Scanf merupakan fungsi yang dapat menerima beberapa data dan menyimpan data

pada beberapa variabel. Tetapi pada penggunaanya, jumlah karakter yang dikirim harus

sama dengan jumlah variabel yang akan digunakan sebagai tempat penyimpanan data. Scanf

dapat menerima data angka maupun string. Untuk menerima data angka, variabel

dideklarasikan dengan “d” sedangkan data untuk string dideklarasikan dengan “%”. Listing

program menerima data serial USART menggunakan fungsi scanf ditunjukan oleh gambar

4.55.

Gambar 4.55. Listing program menerima data serial USART dengan scanf

Huruf f merupakan varibel yang menyimpan angka 1. Variabel ini digunakan sebagai

pemicu untuk mengeksekusi sub rutin program utama didalam fungsi while. Variabel ee

diberi nilai 0. Varibel ini digunakan sebagai counter untuk menentukan pemberian nilai OCR

pada servo base.

char a,b,c,d,e;

//interupsi untuk menerima data serial

interrupt [USART_RXC] void myinterrupt (void)

{

scanf("%s %s %s %s %s", &a, &b, &c, &d, &e);

f = 1;

ee=0;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 146: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

123

4.3.2.4. Pengendali Motor Servo

Untuk dapat mengendalikan motor servo yang dihubungkan pada PORTB.0,

PORTB.1 PORTB.2 dan PORTB.3, maka harus diinisialisasi sesuai dengan port yang akan

digunakan terlebih dahulu. Listing program inisialisasi servo pada PORTB.0, PORTB.1

PORTB.2 dan PORTB.3 ditunjukan pada gambar 4.56.

Gambar 4.56. Listing program mendefinisikan servo

Program pengendali motor servo menggunakan fasilitas interrupt timer0. Timer0

digunakan sebagai pembangkit pulsa PWM untuk menggerakan motor servo. Listing

program pengendali sudut putar motor servo ditunjukan pada gambar 4.57.

Gambar 4.57. Listing program pengendali sudut putar motor servo

Listing program pada gambar 4.51 adalah program interrupt timer0. Nilai i++ artinya

adalah timer mulai mencacah dari 0 sampai dengan 255, jika lebih dari nilai itu, maka timer

overflow dan mulai mengaktifkan PWM. Nilai 864 merupakan nilai overflow selama periode

motor servo yaitu 20 ms. Kemudian pemberian logika 1 pada tiap port, apabila kondisi nilai

//inisialisasi port servo

#define servo1 PORTB.0

#define servo2 PORTB.1

#define servo3 PORTB.2

#define servo4 PORTB.3

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

i++;

if (i>864) {i = 0;}

else

{

if(i<data1){servo1 = 1;}

else {servo1=0;}

if(i<data2){servo2 = 1;}

else {servo2=0;}

if(i<data3){servo3 = 1;}

else {servo3=0;}

if(i<data4){servo4 = 1;}

else {servo4=0;}

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 147: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

124

i lebih kecil daripada nilai variabel servo1, servo2, servo3 dan servo4 sehingga mulai

pemberianpulsa PWM agar motor servo bergerak. Pemberian logika 0, jika kondisinya tidak

terpenuhi maka PORTB akan direset. Data1, data 2, data 3, data 4 merupakan variabel yang

menyimpan nilai OCR untuk menggerakan motor servo.

Gambar 4.58. Fungsi program gerak kubus di posisi 1

Fungsi program lengan robot mengambil objek di posisi satu dan memindahkannya

kekotak peletakan objek kubus ditunjukan oleh gambar 4.58. Void gerak_kubus1 merupakan

fungsi program yang akan diekseskusi ketika di posisi 1 terdapat objek kubus. Urutan

pergerakan motor servo ketika memindahkan objek yaitu gerak ambil yang di program untuk

posisi satu sampai dengan dua belas, gerak siaga meletakan objek, kemudian gerak

peletakan objek ke kotak peletakan objek, selanjutnya adalah robot kembali standby untuk

mengambil objek selanjutnya. Jika tidak ada objek lagi, maka lengan robot akan standbylagi.

Standbylagi merupakan posisi awal lengan robot sebelum mengambil objek untuk pertama

kali.

void gerak_kubus1()

{

gerak_ambil1(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 148: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

125

Gambar 4.59. Listing program fungsi counter pergerakan lengan robot mengambil objek

Listing program fungsi counter pergerakan lengan robot mengambil objek ditunjukan

oleh Gambar 4.59. Variabel ee yang digunakan untuk menentukan pemberian nilai OCR

pada servo 1. Variabel alpa = 1 artinya adalah memberi nilai OCR pada servo 1 untuk

pengambilan objek pertama, sedangkan alpa = 2 artinya adalah memberi nilai OCR pada

servo 1 untuk pengambilan objek kedua, ketiga, keempat dan kelima. Perbedaan pemberian

nilai OCR terjadi karena masing-masing servo memiliki karakteristik dan keakuratan yang

berbeda-beda, akan tetapi pemberian nilai OCR yang berbeda tidak menganggu pergerakan

robot dalam mengambil dan memindahkan benda hanya saja pemberian nilai OCR untuk

servo satu dilakukan 2 kali. Pemberian OCR pertama untuk kondisi pengambilan objek

pertama, sedangkan pemberian OCR kedua untuk kondisi pengambilan objek kedua, ketiga,

keempat dan kelima.

// fungsi counter pergerakan robot mengambil benda

void awal()

{

ee=ee+1;

for(y=1;y<=2;y++)

{

if (ee==1)

{

alpa=1;

}

else if (ee==2)

{

alpa=2;

}

else if (ee==3)

{

alpa=2;

}

else if (ee==4)

{

alpa=2;

}

else if (ee==5)

{

alpa=2;

}

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 149: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

126

Gambar 4.60. Listing program gerak ambil di posisi 1

Gambar 4.61. (lanjutan) listing program gerak ambil di posisi 1

//pergerakan robot mengambil benda di posisi 1

void gerak_ambil1()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=60;data1--) //135 Derajat

{delay_ms(20);};

aa=60;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=60;data1++) //135 Derajat

{delay_ms(20);};

aa=60;

delay_ms(200);

}

delay_ms(200);

for(data2=48;data2>=41;data2--) //65 Derajat

{delay_ms(50);};

ab=41;

delay_ms(200);

for(data3=48;data3>=35;data3--) //40 Derajat

{delay_ms(70);};

ac=35;

delay_ms(500);

//program menggeser dan mengambil objek di posisi 1

for(data1=60;data1<=61;data1++) //140 Derajat

{delay_ms(60);};

delay_ms(300);

for(data2=41;data2>=40;data2--) //55 Derajat

{delay_ms(60);};

delay_ms(300);

for(data3=35;data3>=33;data3--) //35 Derajat

{delay_ms(70);};

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(20);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 150: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

127

Listing program yang ditunjukan pada gambar 4.60 dan 4.61 merupakan pemberian

nilai OCR pada masing-masing servo pada saat mengambil objek di posisi satu. Khusus

pengambilan objek di posisi 1, lengan robot tidak langsung mengambil objek, tetapi objek

terlebih dahulu digeser sedikit kekiri oleh gripper, kemudian gripper akan mencengkeram

objek. Hal ini karena pada pengambilan objek di posisi satu, apabila objek tidak digeser

kekiri, maka gripper lengan robot akan menyentuh dan mengubah posisi objek yang berada

diposisi ke dua.

Gambar 4.62. Listing program gerak siaga

//pergerakan robot siaga

void siaga()

{

da= 1;

if (da==1)

{

for (o=1;o<=4;o++)

{

switch (o)

{

case 1:

{

if (ac < 48)

{

for (data3=ac;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

bc=48;

delay_ms(100);

break;

}

else if (ac > 48)

{

for (data3=ac;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

bc=48;

delay_ms(100);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 151: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

128

Gambar 4.63. (lanjutan) listing program gerak siaga

Gambar 4.64. (Lanjutan) listing program gerak siaga

case 2:

{

if (ab < 48)

{

for (data2=ab;data2<=48;data2++) //90 Derajat

{delay_ms(50);};

bb=48;

delay_ms(100);

break;

}

else if (ab > 48)

{

for (data2=ab;data2>=48;data2--) //90 Derajat

{delay_ms(50);};

bb=48;

delay_ms(100);

break;

}

}

case 3:

{

if (aa < 46)

{

for (data1=aa;data1<=46;data1++) //90 Derajat

{delay_ms(40);};

ba=46;

delay_ms(100);

break;

}

else if (aa > 46)

{

for (data1=aa;data1>=46;data1--) //90 Derajat

{delay_ms(40);};

ba=46;

delay_ms(100);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 152: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

129

Gambar 4.65. (lanjutan) listing program gerak siaga

Gambar 4.66. Listing program gerak peletakan kubus

case 4:

{

data4 = 51;

bd = 51 ;

delay_ms(500);

break;

}

}

}

da=0;

}

}

//pergerakan robot meletakan objek kubus di kotak hijau(1)

void gerak_peletakankubus()

{

db= 1;

if (db==1)

{

for (p=1;p<=4;p++)

{

switch (p)

{

case 1:

{

if (ba < 22)

{

for (data1=ba;data1<=22;data1++) //0 Derajat

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

else if (ba > 22)

{

for (data1=ba;data1>=22;data1--) //0 Derajat

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 153: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

130

Gambar 4.67. (Lanjutan) listing program gerak peletakan kubus

Gambar 4.68. (Lanjutan) listing program gerak peletakan kubus

case 2:

{

if (bb < 36)

{

for (data2=bb;data2<=36;data2++) //45 Derajat

{delay_ms(50);};

cb=36;

delay_ms(100);

break;

}

else if (bb > 36)

{

for (data2=bb;data2>=36;data2--) //45 Derajat

{delay_ms(50);};

cb=36;

delay_ms(100);

break;

}

}

case 3:

{

if (bc < 33)

{

for (data3=bc;data3<=33;data3++) //35 Derajat

{delay_ms(50);};

cc=33;

delay_ms(1000);

break;

}

else if (bc > 33)

{

for (data3=bc;data3>=33;data3--) //35 Derajat

{delay_ms(50);};

cc=33;

delay_ms(1000);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 154: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

131

Gambar 4.69. (Lanjutan) listing program gerak peletakan kubus

Gambar 4.70. Listing program gerak standby1

case 4:

{

for (data4=bd;data4>=25;data4--) //10 Derajat

{delay_ms(25);};

cd=25;

delay_ms(1000);

break;

}

}

}

db=0;

}

}

//pergerakan robot kembali standby setelah meletakan benda di

kotak hijau

void standby1()

{

de= 1 ;

if (de==1)

{

for (q=1;q<=4;q++)

{

switch (q)

{

case 1:

{

if (cc < 48)

{

for (data3=cc;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cc > 48)

{

for (data3=cc;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 155: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

132

Gambar 4.71. (Lanjutan) listing program gerak standby1

Gambar 4.72. (Lanjutan) listing program gerak standby1

case 2:

{

if (cb < 48)

{

for (data2=cb;data2<=48;data2++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cb > 48)

{

for (data2=cb;data2>=48;data2--)//90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 3:

{

if (ca < 46)

{

for (data1=ca;data1<=46;data1++) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

else if (ca > 46)

{

for (data1=ca;data1>=46;data1--) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 156: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

133

Gambar 4.73. (Lanjutan) listing program gerak standby1

Gambar 4.74. listing program standbylagi

Listing program pergerakan lengan robot ketika bergerak siaga setelah mengambil

objek kubus diposisi 1, pergerakan meletakan objek kubus, pergerakan standby untuk

bersiap mengambil objek selanjutnya ditunjukan oleh gambar 4.62 sampai dengan gambar

4.74. Pada listing program, terdapat fungsi for yang digunakan untuk mencacah nilai OCR

satu persatu sehingga pergerakan motor servo menjadi lebih halus. Dengan menggunakan

fungsi for, OCR motor servo untuk fungsi yang sebelumnya dieksekusi dan fungsi yang

selanjutnya akan dieksekusi, nilainya harus sama, sehingga didalam fungsi switch case

digunakan fungsi if yang berfungsi untuk menentukan pemberian nilai OCR pada motor

servo berdasarkan nilai OCR motor servo pada fungsi yang sebelumnya dieksekusi. Hal ini

karena OCR motor servo ketika mengambil objek di posisi satu hingga posisi dua belas,

nilainya berbeda-beda. Nilai-nilai OCR yang berbeda-beda pada masing-masing fungsi

case 4:

{

data4=25;

delay_ms(1000);

break;

}

}

}

de=0;

}

}

// pergerakan robot kembali ke posisi awal setelah meletakan

semua objek

void standbylagi()

{

data1=74; // 180

delay_ms(1000);

data2=48; //90

delay_ms(1000);

data3=48; //90

delay_ms(1000);

data4=25; //0

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 157: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

134

disimpan di dalam variabel. Tujuannya adalah variabel yang menyimpan nilai OCR motor

servo digunakan untuk mengawali pernyataan pada fungsi for.

Delay yang digunakan pada fungsi for sebesar 20 ms. Delay 20 ms merupakan lama

waktu untuk mencacah satu nilai OCR pada fungsi for. Pemberian delay sebesar 20 ms

menyebabkan lengan robot bergerak lebih halus dan cepat. Semakin besar delay yang

diberikan, maka pergerakan lengan robot akan semakin lambat tetapi pergerakannya tetap

halus. Pemberian delay 500 ms dan 1000 ms bertujuan memberi jeda waktu pada lengan

robot untuk melakukan pergerakan selanjutnya.

4.3.2.5. Subrutin Program Utama

Pada bagian ini, akan dibahas mengenai subrutin program utama yang akan dieksekusi

untuk menggerakan lengan robot dalam mengambil dan meletakan benda berdasarkan

bentuk dan posisinya. Pergerakan lengan robot mengacu pada flowchart yang terdapat

dilampiran.

Subrutin program utama terdapat pada fungsi while sehingga akan dieksekusi secara

terus menerus, tetapi program pergerakan lengan robot akan dieksekusi ketika variabel f

bernilai 1. Variabel f akan bernilai 1 ketika terjadi interupsi RXC complete. Pada subrutin

program utama, masing-masing variabel yang digunakan untuk menyimpan karakter yang

dikirim matlab, akan diterjemahkan satu persatu oleh mikrokontroler, tujuannya untuk

mengeksekusi fungsi program pergerakan lengan robot dalam mengambil dan

memindahkan objek berdasarkan bentuk dan posisi. Penerjemahan dilakukan sebanyak lima

kali dengan menggunakan fungsi switch case. Informasi data karakter yang diterima oleh

mikrokontroler beserta informasi bentuk dan posisi objek ditampilkan pada LCD 16x2.

Listing program subrutin utama dapat di lihat pada lampiran.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 158: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

135

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Dari hasil pengujian serta pengambilan data pada aplikasi computer vision pada

lengan robot pemindah benda berdasarkan bentuk dan posisi, dapat diambil kesimpulan:

1. Sistem dapat mengenali bentuk dan posisi objek 100 % saat mengidentifikasi

objek.

2. Lengan robot mampu memindahkan objek yang diletakan dengan orientasi

bebas serta posisi yang acak pada centroid area-area tertentu.

3. Peletakan posisi objek sesuai dengan batasan masalah, membuat sistem dan

lengan robot bekerja 100%.

5.2. Saran

Saran-saran bagi pengembangan selanjutnya adalah :

1. Peletakan dan posisi objek dibuat bebas, tidak tergantung pada area-area

tertentu.

2. Proses konversi citra biner menggunakan binerisasi automatic agar sistem

dapat bekerja pada segala intensitas cahaya.

3. Gripper dibuat model vacum agar mudah dalam mengambil objek disegala

posisi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 159: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

136

Daftar Pustaka

[1] Budiharto, W. dan Purwanto, D., 2012, Robot Vision - Teknik membangun robot

cerdas masa depan, C.V Andi Offset, Yogyakarta.

[2] Budiharto, W. 2014, Robotika Modern - Teori dan Implementasi (Edisi Revisi), C.V

Andi Offset, Yogyakarta.

[3] Putra, G.A., Perancangan dan Implementasi Computer Vision Pada Robot

Pendeteksi Objek Berbasis Smartphone Android dan Mikrokontroler Atmega128,

http://perpustakaan.fmipa.unpak.ac.id/file/e-jurnal%20065111277.pdf, diakses 1

Desember 2018.

[4] Hasan, I. 2011, Aplikasi Pengenalan Objek Untuk Lengan Robot Pemisah Benda

Berdasarkan Bentuk Benda, Tugas Akhir, Jurusan Teknik Elektro, FST, Universitas

Sanata Dharma, Yogyakarta.

[5] Setyanto, K.D., Fibriani, I., dan Sumardi., ----, Pengendalian Mobile Robot Vision

Mengguakan Webcam Pada Objek Arah Panah Berbasis Rasberry PI, Jurnal Arus

Elektro Indonesia, Vol 2, No 1, hal 126-132.

[6] Kadir, A. dan Susanto, A., 2013, Teori dan Aplikasi Pengolahan Citra, C.V Andi

Offset, Yogyakarta.

[7] Marques, O., 2011, Practical Image and Video Processing Using Matlab, John

Wiley & Sons Inc, New Jersey.

[8] Pamungkas, A,. ----, Tresholding, https://pemrogramanmatlab.com/pengolahan-

citra-digital/segmentasi-citra/thresholding-menggunakan-matlab/, diakses 8

Februari 2019.

[9] Maulana, I., Andono, P.N., 2016, Analisa Perbandingan Adaptif Median Filter Dan

Median Filter Dalam Reduksi Noise Salt & Pepper, Cogito Smart Journal. Vol. 2.

No. 2, hal 157-166.

[10] Pamungkas, A,. ----, Pengolahan Citra Digital, https://pemrogramanmatlab.com

/pengolahan-citra-digital/perbaikan-kualitas-citra/, diakses 9 Februari 2019.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 160: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

137

[11] Pamungkas, A,. ----, Segmentasi Citra,

https://pemrogramanmatlab.com/pengolahan-citra-digital/segmentasi-citra/, diakses

tanggal 8 Februari 2019.

[12] Pranoto, S., 2011, Monitoring Ruang Dengan Webcam Yang Dapat Di Akses Melalui

Handphone Menggunakan Jaringan WI-FI, http://eprints.undip.ac.id/25268/,

diakses 8 Februari 2018.

[13] Logitech, ----, Webcam C170, https://www.logitech.com/id-id/product/webcam-

c170, diakses 12 November 2018.

[14] Pitowarno, E. 2006, Robotika - Desain, Kontrol dan Kecerdasan Buatan, C.V Andi

Offset, Yogyakarta.

[15] Robotics Beta, ----, ----, https://robotics.stackexchange.com/questions/7091/design-

and-construction-of-universal-robotic-arm-5kg-1m, diakses 1 Desember 2018.

[16] Robo Savvy, ----, ----, https://robosavvy.com/store/dagu-2dof-robot-arm-with-

gripper-and-servos-13cm.html, diakses 1 Desember 2018.

[17] ----, 2019, Motor servo, www.elektronika-dasar.web.id/motor-servo/, diakses 1

Desember 2018.

[18] ----, ----, ----, https://servodatabase.com, diakses 1 Desember 2018.

[19] ----, ----, Servo Wiring Informtion, http://fatlion.com/sailplanes/servos.html, diakses

1 Desember 2018.

[20] Tipler, P.A., 1998, FISIKA Untuk Sains Dan Teknik, Edisi 3 jilid 1, Erlangga,

Bandung.

[21] ----, ----, Konsep Momen Gaya Atau Torsi, https://fisikazone.com, diakses 9 Maret

2019.

[22] ----, ----, Torsi, www.fisikazone.com, diakses 9 Maret 2019.

[23] Jumini, S., Muhlisoh, L., 2013, Pengaruh Perbedaan Panjang Poros Suatu Benda

Terhadap Kecepatan Sudut Putar, Seminar Nasional Sains dan Pendidikan Sains

VIII, Fakultas Sains dan Matematika UKSW, Salatiga.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 161: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

138

[24] ----, ----, Dinamika Rotasi, https://www.studiobelajar.com/dinamika-rotasi/,

diakases 16 Maret 2019.

[25] ----, ----, Invers Kinematics, http://www.sml.ee.upatras.gr/UploadedFiles/Inverse

Kinematics.pdf, diakses 10 Februari 2019.

[26] Marzuki, A., ----, Pulse Width Modulation (PWM),

http://achamad.staff.ipb.ac.id/wp-content/plugins/as-pdf/andri_mz Pulse%20Width

%20Modulation%20(PWM).pdf, di akses 1 Desember 2018.

[27] Syahrul, 2014, Pemrogaman Mikrokontroler AVR Bahasa Assembly dan C,

Informatika, Bandung.

[28] ----, 2011, Data sheet Mikrokontroler Atmega32, Atmel.

[29] ---, 2019, Pengertian Power Supply dan Jenis-Jenisnya,

https://teknikelektronika.com /pengertian-power-supply-jenis-catu-daya/, diakses 1

Desember 2018.

[30] Surjono, D.H., 2011, Elektronika Lanjut, Cerdas Ulet Kreatif, Jawa Timur.

[31] ----, ----, 5V 2A Regulated Switching Power Supply, https://www.fasttech.com

/product/1270302-5v-2a-regulated-switching-power-supply, diakses 1 Desember

2018

[32] ----, ----, Towerpro SG90 9g Micro Servo,

https://www.rcshopbd.com/product/tower-pro-sg90-9g-micro-servo/, diakses 6

Februari 2019.

[33] ----, ----, ----, https://hobbyking.com/en_us/jx-pdi-6225mg-300-coreless-metal-gear-

high-torque-digital-servo-25-3kg-0-21sec-62g.html?___store=en_us, diakses 6

Februari 2019.

[34] Setiawan, M., 2018, Pengenalan Huruf Jepang Hiragana Menggunakan Ekstraksi

Ciri Polar Fourier Transform Dan Pengklasifikasi SVM , Tugas Akhir, Jurusan

Teknik Elektro, Universitas Sanata Dharma, Yogyakarta.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 163: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-1

LAMPIRAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 164: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-2

Kontur Moore [34]

Minimum Sistem ATmega32

Sistem Minimum AVR DIP-40 dan Downloader USB-ASP .Sistem minimum yang

dirancang untuk IC Mikrokontroller AVR ATMEGA dengan kemasan DIP-40. Tipe

mikrokontroller yang dapat digunakan pada PCB ini antara lain: MEGA8535, MEGA16,

MEGA32. PCB ini dibuat untuk memudahkan proses perancangan prototipe kontroller

berbasis mikrokontroller. Sistem minimum telah dilengkapi dengan Onboard Downloader

USB ASP, sehingga memudahkan proses flash IC.

1. Dimensi PCB 85mm x 65mm

2. Input Tegangan 7-12V DC dengan Barrel Jack

3. Dilengkapi Onboard Downloader USB-ASP

4. Dilengkapi Regulator Tegangan 5V 1A DC

5. 24 Digital I/O

6. 8 Analog input (resolusi 10 bit)

( a ) (b)

(c)

(d)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 165: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-3

7. Clock 11,0592MHz

8. Tombol Reset

9. LED Power Status Sismin (Merah )

10. LED Power Status Downloader (Merah )

11. LED Busy Status Downloader (Hijau)

Motor Servo JX PDI-6225-300.

Specification:

Brand: JX

Model: PDI-6225MG-300 25kg

Motor: High quality core motor

Max Angle:300°

Pulse width:800-2200μs=180°

Pulse width:500-2500μs=320°

Dead band: 4μs/1520μs / 330hz

Operating Speed (4.8V): 0.25 sec/60°

Operating Speed (6V): 0.21 sec/60°

Stall Torque (4.8V): 19.9 kg.cm

Stall Torque (6V): 25.3 kg.cm

Connector Wire Length: JR 260 mm

Bearing: 2BB

Application: RC Car Robot Airplane

Dimensions: 56X20X45mm

Weight: 65g

Package information:

Package size: 65 x 50 x 40mm / 2.56 x 1.97 x 1.58in

Package weight: 85g / 3oz

Brand gift box package

Package list:

1 x JX PDI-6225MG-300 25kg Metal Gear Digital Servo

1 x Spare Parts Set

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 166: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-4

Motor Servo SG90

Usb To Serial TTL PL2303HX PL2303 Serial Converter

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 167: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-5

Webcam Logitech c170h

Connection Type USB

USB Type USB 2.0

USB VID_PID 082B

UVC Support Yes

Microphone Yes

Microphone Type Mono

Lens and Sensor Type Plastic

Focus Type Fixed

Optical Resolution True 640x480,

I1.3MP nterpolated

Diagonal Field of View (FOV) 58°

Focal Length 2.3 mm

Image Capture (4:3 SD) 640x480, 1.3MP, 3MP, 5MP

Image Capture (16:9 W) 320x180, 360P

Video Capture (4:3 SD) 320x240, 640x480, 1024x768

Video Capture (16:9 W) 320x180, 360P

Frame Rate (max) 640x480@30

Right Light N/A

Video Effects (VFX) N/A

Buttons N/A

Indicator Lights (LED) Yes

Privacy Shade No

Tripod Mounting Option N/A

Universal Clip Adjustability 71mm

Cable Length 4 Feet, 121.92 CM

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 168: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-6

Wiring Motor Servo Beserta LCD 16x2 Pada Minimum Sistem Atmega32

SERVO 1

SERVO 2

SERVO 4

SERVO 3

PORTB.0

PORTB.1

PORTB.2

PORTB.3

VCC 5VGND Port D0 (RX)

US

B

(RX)

(TX)

VCCGND

ATmega32

USB to Serial

PWM

Vcc

Gnd

PWM

Vcc

Gnd

Vcc

Gnd

Vcc

Gnd

PWM

PWM

VCC 5V

GND

VSS VDD VO RSRWED5D6D7 D4

PORTA.0

PORTA.1

PORTA.2

PORTA.3

PORTA.4

PORTA.5

PORTA.6

PORTA.7

LCD 16x2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 169: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-7

Tabel Nilai OCR dan Nilai Sudut Masing-masing Servo

Sudut

(Derajat)

Nilai OCR

Servo 1 Servo 2 Servo 3 Servo 4

0 22 23 23 22

5 23 24 25 23

10 24 26 26 25

15 25 27 27 26

20 26 28 29 27

25 28 30 30 30

30 30 32 32 31

35 31 33 33 33

40 33 34 35 35

45 34 36 36 38

50 37 37 37 40

55 38 39 39 41

60 39 40 40 45

65 40 41 41 47

70 41 43 43 50

75 42 45 44 52

80 44 46 45 54

85 45 47 47 57

90 46 48 48 60

95 49 50 50 62

100 50 52 51 65

105 52 53 52 67

110 53 54 54 70

115 54 55 55 72

120 55 57 57 75

125 57 59 58 77

130 59 60 60 80

135 60 62 62 81

140 61 63 63 84

145 62 64 64 86

150 64 65 66 88

155 65 66 67 91

160 66 67 69 93

165 68 69 70 95

170 70 70 71 100

175 71 71 73 101

180 72 73 75 102

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 170: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-8

Sudut Lebar Pulsa (ms)

Servo 1 Servo 2 Servo 3 Servo 4

0 0,51 0,53 0,53 0,51

5 0,53 0,56 0,58 0,53

10 0,56 0,60 0,60 0,58

15 0,58 0,63 0,63 0,60

20 0,60 0,65 0,67 0,63

25 0,65 0,69 0,69 0,69

30 0,69 0,74 0,74 0,72

35 0,72 0,76 0,76 0,76

40 0,76 0,79 0,81 0,81

45 0,79 0,83 0,83 0,88

50 0,86 0,86 0,86 0,93

55 0,88 0,90 0,90 0,95

60 0,90 0,93 0,93 1,04

65 0,93 0,95 0,95 1,09

70 0,95 1,00 1,00 1,16

75 0,97 1,04 1,02 1,20

80 1,02 1,06 1,04 1,25

85 1,04 1,09 1,09 1,32

90 1,06 1,11 1,11 1,39

95 1,13 1,16 1,16 1,44

100 1,16 1,20 1,18 1,50

105 1,20 1,23 1,20 1,55

110 1,23 1,25 1,25 1,62

115 1,25 1,27 1,27 1,67

120 1,27 1,32 1,32 1,74

125 1,32 1,37 1,34 1,78

130 1,37 1,39 1,39 1,85

135 1,39 1,44 1,44 1,88

140 1,41 1,46 1,46 1,94

145 1,44 1,48 1,48 1,99

150 1,48 1,50 1,53 2,04

155 1,50 1,53 1,55 2,11

160 1,53 1,55 1,60 2,15

165 1,57 1,60 1,62 2,20

170 1,62 1,62 1,64 2,31

175 1,64 1,64 1,69 2,34

180 1,67 1,69 1,74 2,36

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 171: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-9

Tabel Sudut Tiap Servo untuk Mengambil dan Memindahkan Objek Kubus (Teori)

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1320 490 230 700

Posisi 2 1060 300 140 700

Posisi 3 740 300 140 700

Posisi 4 490 490 230 700

Posisi 5 1190 850 510 700

Posisi 6 1010 700 380 700

Posisi 7 800 700 380 700

Posisi 8 610 850 510 700

Posisi 9 1120 1080 760 700

Posisi 10 980 1010 670 700

Posisi 11 830 1010 670 700

Posisi 12 680 1080 760 700

Meletakan benda

Kotak 1

(Kubus) 00 550 200 100

Tabel Sudut Tiap Servo untuk Mengambil dan Memindahkan Objek Tabung (Teori)

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1320 490 230 700

Posisi 2 1060 300 140 700

Posisi 3 740 300 140 700

Posisi 4 490 490 230 700

Posisi 5 1190 850 510 700

Posisi 6 1010 700 380 700

Posisi 7 800 700 380 700

Posisi 8 610 850 510 700

Posisi 9 1120 1080 760 700

Posisi 10 980 1010 670 700

Posisi 11 830 1010 670 700

Posisi 12 680 1080 760 700

Meletakan benda

Kotak 2

(Tabung) 00 1050 650 100

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 172: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-10

Tabel Sudut Tiap Servo untuk Mengambil dan Meletakan Objek Prisma (Teori)

Posisi Sudut

Servo 1 Servo 2 Servo 3 Servo 4

Siaga 900 900 900 250

Mengambil Benda

Posisi 1 1320 490 230 700

Posisi 2 1060 300 140 700

Posisi 3 740 300 140 700

Posisi 4 490 490 230 700

Posisi 5 1190 850 510 700

Posisi 6 1010 700 380 700

Posisi 7 800 700 380 700

Posisi 8 610 850 510 700

Posisi 9 1120 1080 760 700

Posisi 10 980 1010 670 700

Posisi 11 830 1010 670 700

Posisi 12 680 1080 760 700

Meletakan benda

Kotak 3

(Prisma) 210 1050 650 100

Tabel Inisialisasi karakter objek kubus beserta posisinya

Karakter Bentuk Objek Posisi Objek

A Kubus 1

D Kubus 2

G Kubus 3

J Kubus 4

M Kubus 5

P Kubus 6

S Kubus 7

V Kubus 8

Y Kubus 9

# Kubus 10

^ Kubus 11

( Kubus 12

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 173: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-11

Inisialisasi karakter objek tabung beserta posisinya

Karakter Bentuk Objek Posisi Objek

B Tabung 1

E Tabung 2

H Tabung 3

K Tabung 4

N Tabung 5

Q Tabung 6

T Tabung 7

W Tabung 8

Z Tabung 9

$ Tabung 10

& Tabung 11

) Tabung 12

Inisialisasi karakter objek prisma segitiga beserta posisinya

Karakter Bentuk Objek Posisi Objek

C Prisma segitiga 1

F Prisma segitiga 2

I Prisma segitiga 3

L Prisma segitiga 4

O Prisma segitiga 5

R Prisma segitiga 6

U Prisma segitiga 7

X Prisma segitiga 8

! Prisma segitiga 9

% Prisma segitiga 10

* Prisma segitiga 11

+ Prisma segitiga 12

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 174: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-12

Tabel Invers Kinematic

No Keterangan Jarak

1 Jarak poros servo 1 dengan centroid posisi 1 16 cm

2 Jarak poros servo 1 dengan centroid posisi 2 13 cm

3 Jarak poros servo 1 dengan centroid posisi 3 13 cm

4 Jarak poros servo 1 dengan centroid posisi 4 16 cm

5 Jarak poros servo 1 dengan centroid posisi 5 22 cm

6 Jarak poros servo 1 dengan centroid posisi 6 19 cm

7 Jarak poros servo 1 dengan centroid posisi 7 19 cm

8 Jarak poros servo 1 dengan centroid posisi 8 22 cm

9 Jarak poros servo 1 dengan centroid posisi 9 28 cm

10 Jarak poros servo 1 dengan centroid posisi 10 26 cm

11 Jarak poros servo 1 dengan centroid posisi 11 26 cm

12 Jarak poros servo 1 dengan centroid posisi 12 28 cm

13 Jarak poros servo 1 dengan peletakan kubus 15 cm

14 Jarak poros servo 1 dengan peletakan prisma 25 cm

15 Jarak poros servo 1 dengan peletakan tabung 27 cm

16 Panjang lengan bawah 14 cm

17 Panjang lengan atas 28 cm

18 Tinggi pencengkeraman objek di posisi 1-12 1,75 cm

19 Tinggi peletakan objek di kotak peletakan 4,5 cm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 175: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-13

Analisa Pergerakan Servo 1 (Base)

Skematik Controller Lampu Penerangan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 176: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-14

Flowchart Utama

Mulai

Selesai

Lengan robot

standby

Akusisi citra

objek

webcam

Image

preprocessing

Pengenalan

bentuk dan

posisi objek

Karakter =

a,d,g #,^,(?

Karakter =

b,e,h $,&,)?

Lengan robot

mengambil objek

kubus di posisi 1...12

dan meletakkan di

kotak1

Lengan robot

siaga

List karakter

= 0?

Ya Ya Ya

Ya

TidakTidak

Tidak

Matlab mengirim

list karakter ke

mikrokontroler

Output :

LCD

Mikrokontroler

menerima List karakter

?

Ya

Tidak

Lengan robot

mengambil Objek

tabung di posisi 1...12

dan meletakkan di

kotak2

Lengan robot

mengambil objek

prisma di posisi 1...12

dan meletakkan di

kotak3

R

R

Membaca list

karakter

Lengan robot

posisi

standby

Labeling dan

Segmentasi

Apakah ada objek?

Karakter =

c,f,i %,*,+?

Tidak

Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 177: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-15

Flowchart Pergerakan Lengan Robot

Mulai

Input :

List

Karakter

matlab

Karakter =

a?

Servo 1

berputar ke

Sudut A1

Servo 2

berputar ke

Sudut B1

Servo 3

berputar ke

Sudut C1

Servo 4

berputar ke

Sudut D1

Lengan robot

dalam posisi

standby

Lengan robot

posisi siaga

Karakter =

b?

Servo 1

berputar ke

Sudut E1

Servo 2

berputar ke

Sudut F1

Servo 3

berputar ke

Sudut G1

Servo 4

berputar ke

Sudut H1

Karakter =

c?

Servo 1

berputar ke

Sudut I1

Servo 2

berputar ke

Sudut J1

Servo 3

berputar ke

Sudut K1

Servo 4

berputar ke

Sudut L1

Karakter =

d?

Servo 1

berputar ke

Sudut A2

Servo 2

berputar ke

Sudut B2

Servo 3

berputar ke

Sudut C2

Servo 4

berputar ke

Sudut D2

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

List

karakter =

0?

Selesai

Membaca list

karakter

A

Men

gam

bil B

en

da

Meletak

an

Ben

da

H

H I J K L M N

Ya Ya Ya Ya

Tidak Tidak Tidak TidakKarakter =

e?

Servo 1

berputar ke

Sudut E2

Servo 2

berputar ke

Sudut F2

Servo 3

berputar ke

Sudut G2

Servo 4

berputar ke

Sudut H2

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Ya

O P

Lengan robot

posisi

standby

Tidak

Tidak

Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 178: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-16

Karakter =

f?

Servo 1

berputar ke

Sudut I2

Servo 2

berputar ke

Sudut J2

Servo 3

berputar ke

Sudut K2

Servo 4

berputar ke

Sudut L2

Lengan robot

posisi siaga

Karakter =

g?

Servo 1

berputar ke

Sudut A3

Servo 2

berputar ke

Sudut B3

Servo 3

berputar ke

Sudut C3

Servo 4

berputar ke

Sudut D3

Karakter =

h?

Servo 1

berputar ke

Sudut E3

Servo 2

berputar ke

Sudut F3

Servo 3

berputar ke

Sudut G3

Servo 4

berputar ke

Sudut H3

Karakter =

i?

Servo 1

berputar ke

Sudut I3

Servo 2

berputar ke

Sudut J3

Servo 3

berputar ke

Sudut K3

Servo 4

berputar ke

Sudut L3

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Karakter =

j?

Servo 1

berputar ke

Sudut A4

Servo 2

berputar ke

Sudut B4

Servo 3

berputar ke

Sudut C4

Servo 4

berputar ke

Sudut D4

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Tidak TidakTidakTidakTidakBA

Men

gam

bil B

enda

Meletak

ka

n B

end

a

I

Ya Ya Ya Ya Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 179: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-17

Meletak

kan

Ben

da

Men

gam

bil B

en

da

Karakter =

k?

Servo 1

berputar ke

Sudut E4

Servo 2

berputar ke

Sudut F4

Servo 3

berputar ke

Sudut G4

Servo 4

berputar ke

Sudut H4

Lengan robot

posisi siaga

Karakter =

l?

Servo 1

berputar ke

Sudut I4

Servo 2

berputar ke

Sudut J4

Servo 3

berputar ke

Sudut K4

Servo 4

berputar ke

Sudut L4

Karakter =

m?

Servo 1

berputar ke

Sudut A5

Servo 2

berputar ke

Sudut B5

Servo 3

berputar ke

Sudut C5

Servo 4

berputar ke

Sudut D5

Karakter =

n?

Servo 1

berputar ke

Sudut E5

Servo 2

berputar ke

Sudut F5

Servo 3

berputar ke

Sudut G5

Servo 4

berputar ke

Sudut H5

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut F13

Servo 4

berputar ke

Sudut G13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut A13

Servo 3

berputar ke

Sudut A13

Servo 4

berputar ke

Sudut A13

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Karakter =

o?

Servo 1

berputar ke

Sudut I5

Servo 2

berputar ke

Sudut J5

Servo 3

berputar ke

Sudut K5

Servo 4

berputar ke

Sudut L5

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Tidak TidakTidakTidakTidakCB

J

Ya Ya Ya Ya Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 180: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-18

Meletak

kan B

enda

Men

gam

bil B

enda

Karakter =

p?

Servo 1

berputar ke

Sudut A6

Servo 2

berputar ke

Sudut B6

Servo 3

berputar ke

Sudut C6

Servo 4

berputar ke

Sudut D6

Lengan robot

posisi siaga

Karakter =

q?

Servo 1

berputar ke

Sudut E6

Servo 2

berputar ke

Sudut F6

Servo 3

berputar ke

Sudut G6

Servo 4

berputar ke

Sudut H6

Karakter =

r?

Servo 1

berputar ke

Sudut I6

Servo 2

berputar ke

Sudut J6

Servo 3

berputar ke

Sudut K6

Servo 4

berputar ke

Sudut L6

Karakter =

s?

Servo 1

berputar ke

Sudut A7

Servo 2

berputar ke

Sudut B7

Servo 3

berputar ke

Sudut C7

Servo 4

berputar ke

Sudut D7

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Karakter =

t?

Servo 1

berputar ke

Sudut E7

Servo 2

berputar ke

Sudut F7

Servo 3

berputar ke

Sudut G7

Servo 4

berputar ke

Sudut H7

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Tidak TidakTidakTidakTidakDC

K

Ya Ya Ya Ya Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 181: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-19

Meletak

ka

n B

end

aM

eng

amb

il Ben

da

Karakter =

u?

Servo 1

berputar ke

Sudut I7

Servo 2

berputar ke

Sudut J7

Servo 3

berputar ke

Sudut K7

Servo 4

berputar ke

Sudut L7

Lengan robot

posisi siaga

Karakter =

v?

Servo 1

berputar ke

Sudut A8

Servo 2

berputar ke

Sudut B8

Servo 3

berputar ke

Sudut C8

Servo 4

berputar ke

Sudut D8

Karakter =

w?

Servo 1

berputar ke

Sudut E8

Servo 2

berputar ke

Sudut F8

Servo 3

berputar ke

Sudut G8

Servo 4

berputar ke

Sudut H8

Karakter =

x?

Servo 1

berputar ke

Sudut I8

Servo 2

berputar ke

Sudut J8

Servo 3

berputar ke

Sudut K8

Servo 4

berputar ke

Sudut L8

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Karakter =

y?

Servo 1

berputar ke

Sudut A9

Servo 2

berputar ke

Sudut B9

Servo 3

berputar ke

Sudut C9

Servo 4

berputar ke

Sudut D9

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Tidak TidakTidakTidakTidakED

L

Ya Ya Ya Ya Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 182: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-20

Meletak

ka

n B

end

aM

eng

amb

il Ben

da

Karakter =

z?

Servo 1

berputar ke

Sudut E9

Servo 2

berputar ke

Sudut F9

Servo 3

berputar ke

Sudut G9

Servo 4

berputar ke

Sudut H9

Lengan robot

posisi siaga

Karakter =

!?

Servo 1

berputar ke

Sudut I9

Servo 2

berputar ke

Sudut J9

Servo 3

berputar ke

Sudut K9

Servo 4

berputar ke

Sudut L9

Karakter =

#?

Servo 1

berputar ke

Sudut A10

Servo 2

berputar ke

Sudut B10

Servo 3

berputar ke

Sudut C10

Servo 4

berputar ke

Sudut D10

Karakter =

$?

Servo 1

berputar ke

Sudut E10

Servo 2

berputar ke

Sudut F10

Servo 3

berputar ke

Sudut G10

Servo 4

berputar ke

Sudut H10

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Karakter =

%?

Servo 1

berputar ke

Sudut I10

Servo 2

berputar ke

Sudut J10

Servo 3

berputar ke

Sudut K10

Servo 4

berputar ke

Sudut L10

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Tidak TidakTidakTidakTidakFE

Ya Ya Ya Ya Ya

M

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 183: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-21

Karakter =

^?

Servo 1

berputar ke

Sudut A11

Servo 2

berputar ke

Sudut B11

Servo 3

berputar ke

Sudut C11

Servo 4

berputar ke

Sudut D11

Lengan robot

posisi siaga

Karakter =

&?

Servo 1

berputar ke

Sudut E11

Servo 2

berputar ke

Sudut F11

Servo 3

berputar ke

Sudut G11

Servo 4

berputar ke

Sudut H11

Karakter =

*?

Servo 1

berputar ke

Sudut I11

Servo 2

berputar ke

Sudut J11

Servo 3

berputar ke

Sudut K11

Servo 4

berputar ke

Sudut L11

Karakter =

(?

Servo 1

berputar ke

Sudut A12

Servo 2

berputar ke

Sudut B12

Servo 3

berputar ke

Sudut C12

Servo 4

berputar ke

Sudut D12

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut A13

Servo 2

berputar ke

Sudut B13

Servo 3

berputar ke

Sudut C13

Servo 4

berputar ke

Sudut D13

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Lengan robot

posisi siaga

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Karakter =

)?

Servo 1

berputar ke

Sudut E12

Servo 2

berputar ke

Sudut F12

Servo 3

berputar ke

Sudut G12

Servo 4

berputar ke

Sudut H12

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut E13

Servo 2

berputar ke

Sudut F13

Servo 3

berputar ke

Sudut G13

Servo 4

berputar ke

Sudut H13

Tidak TidakTidakTidakTidak

N

GF Karakter =

+?

Servo 1

berputar ke

Sudut I12

Servo 2

berputar ke

Sudut J12

Servo 3

berputar ke

Sudut K12

Servo 4

berputar ke

Sudut L12

Lengan robot

posisi siaga

Servo 1

berputar ke

Sudut I0

Servo 2

berputar ke

Sudut J0

Servo 3

berputar ke

Sudut K0

Servo 4

berputar ke

Sudut L0

Ya Ya Ya Ya Ya Ya

Men

gam

bil B

enda

Meletak

kan B

enda

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 184: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-22

Listing Program Invers Kinematik

%Nilai Input

% x = jarak horizontal antara poros servo 1 dengan objek (cm)

% y = Nilai setengah dari tinggi objek (Pengambilan objek) (cm)

% y = Tinggi gripper diatas kotak peletakan objek (Peletakan objek)(cm)

% a1 = Panjang lengan bawah (cm)

% a2 = Panjang lengan atas (cm)

%Program menghitung sudut servo 2

dataq2 = (x^2+y^2-a1^2-a2^2)/(2*a1*a2);

q2 = acosd(dataq2)

sudutservo2 = (abs(180-q2))

%Program menghitung sudut servo 3

Nilaia = (((cosd(q2)*a2)+a1)*y);

Nilaib = sind(q2)*a2*x;

Nilaipa = Nilaia-Nilaib;

Nilaic = (((cosd(q2)*a2) +a1)*x);

Nilaid = sind(q2)*a2*y;

Nilaipb = Nilaic+Nilaid;

Hasil1 = Nilaipa/Nilaipb;

q1 = atand(Hasil1)

if q1 < 0

sudutservo3 = (abs(180+q1))

else

sudutservo3 = (abs(q1))

end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 185: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-23

Listing Program Matlab

function varargout = TA1(varargin) % TA1 MATLAB code for TA1.fig % TA1, by itself, creates a new TA1 or raises the existing % singleton*. % % H = TA1 returns the handle to a new TA1 or the handle to % the existing singleton*. % % TA1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in TA1.M with the given input arguments. % % TA1('Property','Value',...) creates a new TA1 or raises the % existing singleton*. Starting from the left, property value pairs

are % applied to the GUI before TA1_OpeningFcn gets called. An % unrecognized property name or invalid value makes property

application % stop. All inputs are passed to TA1_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only

one % instance to run (singleton)". % % See also: GUIDE, GUIDATA,

% Edit the above text to modify the response to help TA1

% Last Modified by GUIDE v2.5 10-May-2019 22:48:04

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @TA1_OpeningFcn, ... 'gui_OutputFcn', @TA1_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end

if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before TA1 is made visible. function TA1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to TA1 (see VARARGIN)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 186: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-24

% Choose default command line output for TA1 handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes TA1 wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = TA1_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure varargout{1} = handles.output;

% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vidobj %untuk mendeklarasikan variabel vidobj secara global

%proses inisialisasi webcam imaqhwinfo vidobj = videoinput('winvideo',1,'YUY2_320x240');

% vidobj.FramesPerTrigger=1; % triggerconfig(vidobj,'manual'); % vidRes=get(vidobj,'VideoResolution')

% Tampilkan pada axes nBands=get(vidobj,'NumberOfBands'); hImage=image(zeros(240,320,nBands),'parent',handles.axes1); preview(vidobj,hImage)

% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global a global vidobj

vidobj.FramesPerTrigger=1; triggerconfig(vidobj,'manual');

% Tampilkan objek pada area di axes 1 nBands=get(vidobj,'NumberOfBands');

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 187: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-25

image(zeros(240,320,nBands),'parent',handles.axes1);

% Proses capture citra objek start(vidobj); pause(0.5); trigger(vidobj); stoppreview(vidobj); frame=getdata(vidobj);

%image preprocessing citra1=yuy2torgb(frame); citra2=rgb2gray(citra1); citrabiner=im2bw(citra2,0.25); citranf=medfilt2(citrabiner);

a = citranf;

% Menampilkan citra berwarna di axes 3 axes(handles.axes3); imshow(citra1) axis on;

% Menampilkan citra biner di axes 2 axes(handles.axes2); imshow(citranf) axis on; vidobj = videoinput('winvideo',1,'YUY2_320x240');

% Tampilkan objek pada area di axes 1 nBands=get(vidobj,'NumberOfBands'); hImage=image(zeros(240,320,nBands),'parent',handles.axes1); preview(vidobj,hImage)

% ================================================== % Internal function of function pushbutton1_Callback % ================================================== function newdata = yuy2torgb(data) % Konversi format YUY2 ke RGB % http://www.mathworks.com/matlabcentral/newsreader/view_thread/263490 % Access date: 11 June 2014

Y = single(data(:,:,1)); U = single(data(:,:,2)); V = single(data(:,:,3));

C = Y-16; D = U-128; E = V-128;

R = uint8((298*C+409*E+128)/256); G = uint8((298*C-100*D-208*E+128)/256); B = uint8((298*C+516*D+128)/256);

newdata = uint8(zeros(size(data))); newdata(:,:,1)=R; newdata(:,:,2)=G; newdata(:,:,3)=B;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 188: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-26

% =================================

% --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

global arraychar

%Reset semua input output set(handles.text2, 'string',[]); set(handles.text3, 'string',[]); set(handles.text4, 'string',[]); set(handles.text5, 'string',[]); set(handles.text6, 'string',[]); set(handles.text7, 'string',[]); set(handles.text8, 'string',[]); set(handles.text9, 'string',[]); set(handles.text10,'string',[]); set(handles.text11,'string',[]);

global a

%Memberi label untuk tiap objek dalam citra biner c = bwlabel(a);

%segementasi citra objek o1=c==1; o2=c==2; o3=c==3; o4=c==4; o5=c==5;

%perhitungan perimeter dan area jumobjek=max(max(c)); for k=1:jumobjek objek=c==k; d0=regionprops(double(objek),'Perimeter'); d1=d0.Perimeter; dbPerimeter(:,k)=d1; e0=regionprops(double(objek),'Area'); e1=e0.Area; dbArea(:,k)=e1; end dbp=dbPerimeter; dba=dbArea;

%perhitungan thinness ratio jumobjek=max(max(c));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 189: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-27

for k=1:jumobjek f0=(4*pi*dba(k))/dbp(k)^2; dbthiness(:,k)=f0; end tr=dbthiness;

%Perhitungan centroid jumobjek=max(max(c)); for k=1:jumobjek; objek=c==k; c0=regionprops(double(objek),'Centroid'); c1=c0.Centroid; dbcentroid(:,k)=c1; end db=dbcentroid;

global arraychar global arrayoutput

jumobjek=max(max(c)); %Menentukan output posisi dan bentuk objek for k = 1 : jumobjek %mengambil data centroid dan thinness ratio dari matrik pada variabel db %dan f0 db=dbcentroid(:,k); f0=dbthiness(1,k); %posisi 1 if db(1,1) > 240 && db(1,1) < 320 && db (2,1) < 80 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [1]; arraychar = [1]; elseif (k>1) arrayoutput = [arrayoutput 1]; arraychar = [arraychar 1]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [2]; arraychar = [2]; elseif (k>1) arrayoutput = [arrayoutput 2]; arraychar = [arraychar 2]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [3]; arraychar = [3]; elseif (k>1) arrayoutput = [arrayoutput 3]; arraychar = [arraychar 3]; end end

%Posisi 2 elseif db(1,1) < 240 && db (1,1) > 160 && db (2,1) < 80 if f0 < 0.95 && f0 > 0.8 if (k==1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 190: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-28

arrayoutput = [4]; arraychar = [4]; elseif (k>1) arrayoutput = [arrayoutput 4]; arraychar = [arraychar 4]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [5]; arraychar = [5]; elseif (k>1) arrayoutput = [arrayoutput 5]; arraychar = [arraychar 5]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [6]; arraychar = [6]; elseif (k>1) arrayoutput = [arrayoutput 6]; arraychar = [arraychar 6]; end end

%Posisi 3 elseif db(1,1) > 80 && db (1,1) < 160 && db (2,1) < 80 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [7]; arraychar = [7]; elseif (k>1) arrayoutput = [arrayoutput 7]; arraychar = [arraychar 7]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [8]; arraychar = [8]; elseif (k>1) arrayoutput = [arrayoutput 8]; arraychar = [arraychar 8]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [9]; arraychar = [9]; elseif (k>1) arrayoutput = [arrayoutput 9]; arraychar = [arraychar 9]; end end

%Posisi 4 elseif db(1,1) < 80 && db (2,1) < 80 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [10]; arraychar = [10]; elseif (k>1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 191: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-29

arrayoutput = [arrayoutput 10]; arraychar = [arraychar 10]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [11]; arraychar = [11]; elseif (k>1) arrayoutput = [arrayoutput 11]; arraychar = [arraychar 11]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [12]; arraychar = [12]; elseif (k>1) arrayoutput = [arrayoutput 12]; arraychar = [arraychar 12]; end end

%Posisi 5 elseif db(1,1) > 240 && db (1,1) < 320 && db (2,1) > 80 && db (2,1)

< 160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [13]; arraychar = [13]; elseif (k>1) arrayoutput = [arrayoutput 13]; arraychar = [arraychar 13]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [14]; arraychar = [14]; elseif (k>1) arrayoutput = [arrayoutput 14]; arraychar = [arraychar 14]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [15]; arraychar = [15]; elseif (k>1) arrayoutput = [arrayoutput 15]; arraychar = [arraychar 15]; end end

%Posisi 6 elseif db(1,1) < 240 && db (1,1) > 160 && db (2,1) > 80 && db (2,1)

< 160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [16]; arraychar = [16]; elseif (k>1) arrayoutput = [arrayoutput 16];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 192: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-30

arraychar = [arraychar 16]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [17]; arraychar = [17]; elseif (k>1) arrayoutput = [arrayoutput 17]; arraychar = [arraychar 17]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [18]; arraychar = [18]; elseif (k>1) arrayoutput = [arrayoutput 18]; arraychar = [arraychar 18]; end end

%Posisi 7 elseif db(1,1) < 160 && db (1,1) > 80 && db (2,1) > 80 && db (2,1) <

160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [19]; arraychar = [19]; elseif (k>1) arrayoutput = [arrayoutput 19]; arraychar = [arraychar 19]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [20]; arraychar = [20]; elseif (k>1) arrayoutput = [arrayoutput 20]; arraychar = [arraychar 20]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [21]; arraychar = [21]; elseif (k>1) arrayoutput = [arrayoutput 21]; arraychar = [arraychar 21]; end end

%Posisi 8 elseif db(1,1) < 80 && db (2,1) > 80 && db (2,1) < 160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [22]; arraychar = [22]; elseif (k>1) arrayoutput = [arrayoutput 22]; arraychar = [arraychar 22]; end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 193: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-31

elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [23]; arraychar = [23]; elseif (k>1) arrayoutput = [arrayoutput 23]; arraychar = [arraychar 23]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [24]; arraychar = [24]; elseif (k>1) arrayoutput = [arrayoutput 24]; arraychar = [arraychar 24]; end end

%Posisi 9 elseif db(1,1) < 320 && db (1,1) > 240 && db (2,1) > 160 && db (2,1)

< 240 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [25]; arraychar = [25]; elseif (k>1) arrayoutput = [arrayoutput 25]; arraychar = [arraychar 25]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [26]; arraychar = [26]; elseif (k>1) arrayoutput = [arrayoutput 26]; arraychar = [arraychar 26]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [27]; arraychar = [27]; elseif (k>1) arrayoutput = [arrayoutput 27]; arraychar = [arraychar 27]; end end

%Posisi 10 elseif db(1,1) < 240 && db (1,1) > 160 && db (2,1) > 160 && db (2,1)

< 240 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [28]; arraychar = [28]; elseif (k>1) arrayoutput = [arrayoutput 28]; arraychar = [arraychar 28]; end elseif f0 < 1.2 && f0 > 0.95

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 194: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-32

if (k==1) arrayoutput = [29]; arraychar = [29]; elseif (k>1) arrayoutput = [arrayoutput 29]; arraychar = [arraychar 29]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [30]; arraychar = [30]; elseif (k>1) arrayoutput = [arrayoutput 30]; arraychar = [arraychar 30]; end end

%Posisi 11 elseif db(1,1) < 160 && db(1,1) > 80 && db (2,1) < 240 && db (2,1) >

160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [31]; arraychar = [31]; elseif (k>1) arrayoutput = [arrayoutput 31]; arraychar = [arraychar 31]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [32]; arraychar = [32]; elseif (k>1) arrayoutput = [arrayoutput 32]; arraychar = [arraychar 32]; end elseif f0 < 0.8 && f0 > 0.66 if (k==1) arrayoutput = [33]; arraychar = [33]; elseif (k>1) arrayoutput = [arrayoutput 33]; arraychar = [arraychar 33]; end end

%Posisi 12 elseif db(1,1) < 80 && db(2,1) < 240 && db(2,1) > 160 if f0 < 0.95 && f0 > 0.8 if (k==1) arrayoutput = [34]; arraychar = [34]; elseif (k>1) arrayoutput = [arrayoutput 34]; arraychar = [arraychar 34]; end elseif f0 < 1.2 && f0 > 0.95 if (k==1) arrayoutput = [35];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 195: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-33

arraychar = [35]; elseif (k>1) arrayoutput = [arrayoutput 35]; arraychar = [arraychar 35]; end elseif f0 < 0.8 && f0 > 0.6 if (k==1) arrayoutput = [36]; arraychar = [36]; elseif (k>1) arrayoutput = [arrayoutput 36]; arraychar = [arraychar 36]; end end end end

global arrayoutput %program mengurutkan arrayoutput arrayoutput1 = sort(arrayoutput);

%program mengisi arrayoutput1 secara lengkap (5 data) jumobjek=max(max(c));

%mengisi arrayoutput1 dengan 5 data 0 (objek = 0) if jumobjek == 0 arrayoutput1 = [0 0 0 0 0];

%mengisi arrayoutput1 dengan 4 data 0 (objek = 1) elseif jumobjek == 1 for r=1:4 arrayoutput1 = [arrayoutput1 0]; end

%mengisi arrayoutput1 dengan 3 data 0 (objek = 2) elseif jumobjek == 2 for r=1:3 arrayoutput1 = [arrayoutput1 0]; end

%mengisi arrayoutput1 dengan 2 data 0 (objek = 3) elseif jumobjek == 3 for r=1:2 arrayoutput1 = [arrayoutput1 0]; end

%mengisi arrayoutput1 dengan 1 data 0 (objek = 4) elseif jumobjek == 4 for r=1:1 arrayoutput1 = [arrayoutput1 0]; end

%tidak menambah data arrayoutput (objek = 5) elseif jumobjek == 5 arrayoutput1 = [arrayoutput1]; end

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 196: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-34

%program menampilkan posisi dan bentuk objek di GUI counter=0; for x=1:5 %output 1 datax = arrayoutput1(x); if (datax==1) posisi = '1'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==2) posisi = '1'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==3) posisi = '1'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==4); posisi = '2'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==5) posisi = '2'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==6) posisi = '2'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==7) posisi = '3'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==8) posisi = '3'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==9) posisi = '3'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==10) posisi = '4'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==11) posisi = '4'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==12) posisi = '4'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==13) posisi = '5'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==14) posisi = '5';

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 197: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-35

bentuk = 'TABUNG'; counter = counter+1; elseif (datax==15) posisi = '5'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==16) posisi = '6'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==17) posisi = '6'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==18) posisi = '6'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==19) posisi = '7'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==20) posisi = '7'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==21) posisi = '7'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==22) posisi = '8'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==23) posisi = '8'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==24) posisi = '8'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==25) posisi = '9'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==26) posisi = '9'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==27) posisi = '9'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==28) posisi = '10'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==29)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 198: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-36

posisi = '10'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==30) posisi = '10'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==31) posisi = '11'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==32) posisi = '11'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==33) posisi = '11'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==34) posisi = '12'; bentuk = 'KUBUS'; counter = counter+1; elseif (datax==35) posisi = '12'; bentuk = 'TABUNG'; counter = counter+1; elseif (datax==36) posisi = '12'; bentuk = 'PRISMA SEGITIGA'; counter = counter+1; elseif (datax==0); posisi = ''; bentuk = ''; counter=counter+1; end if (counter==1) set(handles.text2,'string',posisi) set(handles.text7,'string',bentuk) elseif (counter==2) set(handles.text3,'string',posisi) set(handles.text8,'string',bentuk) elseif (counter==3) set(handles.text4,'string',posisi) set(handles.text9,'string',bentuk) elseif (counter==4) set(handles.text5,'string',posisi) set(handles.text10,'string',bentuk) elseif (counter==5) set(handles.text6,'string',posisi) set(handles.text11,'string',bentuk) end end

%program mengisi arraychar secara lengkap (5 data) global arraychar

jumobjek=max(max(c));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 199: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-37

%mengisi arraychar dengan 5 data 0 (objek = 0) if jumobjek == 0 arraychar = [0 0 0 0 0]; %mengisi arraychar dengan 4 data 0 (objek = 1) elseif jumobjek == 1 for k=1:4 arraychar = [arraychar 0]; end %mengisi arraychar dengan 3 data 0 (objek = 2) elseif jumobjek == 2 for k=1:3 arraychar = [arraychar 0]; end %mengisi arraychar dengan 2 data 0 (objek = 3) elseif jumobjek == 3 for k=1:2 arraychar = [arraychar 0]; end %mengisi arraychar dengan 1 data 0 (objek = 4) elseif jumobjek == 4 for k=1:1 arraychar = [arraychar 0]; end %tidak menambah data arraychar (objek = 5) elseif jumobjek == 5 arraychar = [arraychar]; end

%program komunikasi serial for f=1:5

if ~ isempty (instrfind) fclose (instrfind); delete(instrfind); end

global arraychar

%mengurutkan data array mulai data terkecil hingga data terbesar dataarray=sort(arraychar)

%inisialisasi komunikasi serial komunikasi = serial ('COM5', 'BaudRate',9600); fopen(komunikasi); %membuka port komunikasi guidata(hObject,handles);

%program mengkonversi dataarray menjadi %karakter untuk dikirim ke mikro data=dataarray(f); if (data==1) guidata(hObject,handles); fprintf(komunikasi,'a'); guidata(hObject,handles); elseif (data==2) guidata(hObject,handles); fprintf(komunikasi,'b'); guidata(hObject,handles); elseif (data==3)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 200: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-38

guidata(hObject,handles); fprintf(komunikasi,'c'); guidata(hObject,handles); elseif (data==4) guidata(hObject,handles); fprintf(komunikasi,'d'); guidata(hObject,handles); elseif (data==5) guidata(hObject,handles); fprintf(komunikasi,'e'); guidata(hObject,handles); elseif (data==6) guidata(hObject,handles); fprintf(komunikasi,'f'); guidata(hObject,handles); elseif (data==7) guidata(hObject,handles); fprintf(komunikasi,'g'); guidata(hObject,handles); elseif (data==8) guidata(hObject,handles); fprintf(komunikasi,'h'); guidata(hObject,handles); elseif (data==9) guidata(hObject,handles); fprintf(komunikasi,'i'); guidata(hObject,handles); elseif (data==10) guidata(hObject,handles); fprintf(komunikasi,'j'); guidata(hObject,handles); elseif (data==11) guidata(hObject,handles); fprintf(komunikasi,'k'); guidata(hObject,handles); elseif (data==12) guidata(hObject,handles); fprintf(komunikasi,'l'); guidata(hObject,handles); elseif (data==13) guidata(hObject,handles); fprintf(komunikasi,'m'); guidata(hObject,handles); elseif (data==14) guidata(hObject,handles); fprintf(komunikasi,'n'); guidata(hObject,handles); elseif (data==15) guidata(hObject,handles); fprintf(komunikasi,'o'); guidata(hObject,handles); elseif (data==16) guidata(hObject,handles); fprintf(komunikasi,'p'); guidata(hObject,handles); elseif (data==17) guidata(hObject,handles); fprintf(komunikasi,'q'); guidata(hObject,handles);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 201: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-39

elseif (data==18) guidata(hObject,handles); fprintf(komunikasi,'r'); guidata(hObject,handles); elseif (data==19) guidata(hObject,handles); fprintf(komunikasi,'s'); guidata(hObject,handles); elseif (data==20) guidata(hObject,handles); fprintf(komunikasi,'t'); guidata(hObject,handles); elseif (data==21) guidata(hObject,handles); fprintf(komunikasi,'u'); guidata(hObject,handles); elseif (data==22) guidata(hObject,handles); fprintf(komunikasi,'v'); guidata(hObject,handles); elseif (data==23) guidata(hObject,handles); fprintf(komunikasi,'w'); guidata(hObject,handles); elseif (data==24) guidata(hObject,handles); fprintf(komunikasi,'x'); guidata(hObject,handles); elseif (data==25) guidata(hObject,handles); fprintf(komunikasi,'y'); guidata(hObject,handles); elseif (data==26) guidata(hObject,handles); fprintf(komunikasi,'z'); guidata(hObject,handles); elseif (data==27) guidata(hObject,handles); fprintf(komunikasi,'!'); guidata(hObject,handles); elseif (data==28) guidata(hObject,handles); fprintf(komunikasi,'#'); guidata(hObject,handles); elseif (data==29) guidata(hObject,handles); fprintf(komunikasi,'$'); guidata(hObject,handles); elseif (data==30) guidata(hObject,handles); fprintf(komunikasi,'%'); guidata(hObject,handles); elseif (data==31) guidata(hObject,handles); fprintf(komunikasi,'^'); guidata(hObject,handles); elseif (data==32) guidata(hObject,handles); fprintf(komunikasi,'&');

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 202: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-40

guidata(hObject,handles); elseif (data==33) guidata(hObject,handles); fprintf(komunikasi,'*'); guidata(hObject,handles); elseif (data==34) guidata(hObject,handles); fprintf(komunikasi,'('); guidata(hObject,handles); elseif (data==35) guidata(hObject,handles); fprintf(komunikasi,')'); guidata(hObject,handles); elseif (data==36) guidata(hObject,handles); fprintf(komunikasi,'+'); guidata(hObject,handles); elseif (data==0) guidata(hObject,handles); fprintf(komunikasi,'0'); guidata(hObject,handles); end

%menutup dan menghapus komunikasi guidata(hObject,handles); fclose(komunikasi); delete(komunikasi); clear komunikasi end

% --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

%exit GUI matlab close all % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1

contents as cell array % contents{get(hObject,'Value')} returns selected item from

popupmenu1

% --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

% Hint: popupmenu controls usually have a white background on Windows.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 203: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-41

% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% --- Executes during object creation, after setting all properties. function popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns

called

% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes during object deletion, before destroying properties. function text20_DeleteFcn(hObject, eventdata, handles) % hObject handle to text20 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 204: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-42

Listing Program AVR

/*****************************************************

This program was produced by the

CodeWizardAVR V2.05.3 Standard

Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

// JUDUL SKRIPSI : APLIKASI COMPUTER VISION PADA LENGAN ROBOT

PEMINDAH BENDA BERDASARKAN BENTUK DAN POSISI

// NAMA : ALBERTUS ADIT TRIANGGORO

// NIM : 155114066

Project :

Version :

Date : 28/03/2019

Author : Windows User

Company : pc

Comments :

Chip type : ATmega32

Program type : Application

AVR Core Clock frequency : 11,059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 512

*****************************************************

//file header program

#include <mega32.h>

#include <delay.h>

#include <stdio.h>

//inisialisasi port servo

#define servo1 PORTB.0

#define servo2 PORTB.1

#define servo3 PORTB.2

#define servo4 PORTB.3

//deklarasi variabel signed int i = 0, data1 = 0, data2 = 0, data3 = 0, data4 = 0;

int z, f, aa, ab, ac, ad, ba, bb, bc, bd, ca, cb, cc, cd, da, db, dc, dd, de, df, dg;

int o = 1;

int p = 1;

int q = 1;

int r = 1;

int s = 1;

int t = 1;

int u = 1;

int x = 1;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 205: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-43

int y = 1;

int ee, alpa ;

// Alphanumeric LCD functions

#include <alcd.h>

char a,b,c,d,e;

// Standard Input/Output functions

#include <stdio.h>

//interupsi untuk menerima data serial

interrupt [USART_RXC] void myinterrupt (void)

{

scanf("%s %s %s %s %s", &a, &b, &c, &d, &e);

f = 1;

ee=0;

}

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

i++;

if (i>864) {i = 0;}

else

{

if(i<data1){servo1 = 1;}

else {servo1=0;}

if(i<data2){servo2 = 1;}

else {servo2=0;}

if(i<data3){servo3 = 1;}

else {servo3=0;}

if(i<data4){servo4 = 1;}

else {servo4=0;}

}

}

// Declare your global variables here

// fungsi counter pergerakan robot mengambil benda

void awal()

{

ee=ee+1;

for(y=1;y<=2;y++)

{

if (ee==1)

{

alpa=1;

}

else if (ee==2)

{

alpa=2;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 206: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-44

}

else if (ee==3)

{

alpa=2;

}

else if (ee==4)

{

alpa=2;

}

else if (ee==5)

{

alpa=2;

}

}

}

//pergerakan robot mengambil benda di posisi 1

void gerak_ambil1()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=60;data1--) //135 Derajat

{delay_ms(20);};

aa=60;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=60;data1++) //135 Derajat

{delay_ms(20);};

aa=60;

delay_ms(200);

}

delay_ms(200);

for(data2=48;data2>=41;data2--) //65 Derajat

{delay_ms(50);};

ab=41;

delay_ms(200);

for(data3=48;data3>=35;data3--) //40 Derajat

{delay_ms(70);};

ac=35;

delay_ms(500);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 207: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-45

//program menggeser dan mengambil objek di posisi 1

for(data1=60;data1<=61;data1++) //140 Derajat

{delay_ms(60);};

delay_ms(300);

for(data2=41;data2>=40;data2--) //55 Derajat

{delay_ms(60);};

delay_ms(300);

for(data3=35;data3>=33;data3--) //35 Derajat

{delay_ms(70);};

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(20);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 2

void gerak_ambil2()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=51;data1--) //105 Derajat

{delay_ms(20);};

aa=51;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=50;data1++) //100 Derajat

{delay_ms(20);};

aa=50;

delay_ms(200);

}

for(data2=48;data2>=30;data2--) //25 Derajat

{delay_ms(50);};

ab=30;

delay_ms(200);

for(data3=48;data3>=25;data3--) //5 Derajat

{delay_ms(70);};

ac=25;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 208: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-46

//pergerakan robot mengambil benda di posisi 3

void gerak_ambil3()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=43;data1--) //80 Derajat

{delay_ms(20);};

aa=43;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1>=43;data1--) //80 Derajat

{delay_ms(20);};

aa=43;

delay_ms(200);

}

for(data2=48;data2>=30;data2--) //25 Derajat

{delay_ms(50);};

ab=30;

delay_ms(200);

for(data3=48;data3>=25;data3--) //5 Derajat

{delay_ms(70);};

ac=25;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 4

void gerak_ambil4()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=37;data1--) //50 Derajat

{delay_ms(20);};

aa=37;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1>=37;data1--) //50 Derajat

{delay_ms(20);};

aa=37;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 209: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-47

delay_ms(200);

}

for(data2=48;data2>=38;data2--) //50 Derajat

{delay_ms(50);};

ab=38;

delay_ms(200);

for(data3=48;data3>=32;data3--) //30 Derajat

{delay_ms(70);};

ac=32;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 5

void gerak_ambil5()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=57;data1--) //125 Derajat

{delay_ms(20);};

aa=57;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=54;data1++) //115 Derajat

{delay_ms(20);};

aa=54;

delay_ms(20);

}

for(data2=48;data2>=45;data2--) //75 Derajat

{delay_ms(50);};

ab=45;

delay_ms(200);

for(data3=48;data3>=38;data3--) //55 Derajatt

{delay_ms(70);};

ac=38;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 210: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-48

//pergerakan robot mengambil benda di posisi 6

void gerak_ambil6()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=51;data1--) //105 Derajat

{delay_ms(20);};

aa=51;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=49;data1++) //95 Derajat

{delay_ms(20);};

aa=49;

delay_ms(200);

}

for(data2=48;data2>=43;data2--) //70 Derajat

{delay_ms(50);};

ab=43;

delay_ms(200);

for(data3=48;data3>=36;data3--) //45 Derajat

{delay_ms(70);};

ac=36;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 7

void gerak_ambil7()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=45;data1--) //85 Derajat

{delay_ms(20);};

aa=45;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1>=44;data1--) //80 Derajat

{delay_ms(20);};

aa=44;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 211: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-49

delay_ms(200);

}

for(data2=48;data2>=43;data2--) //70 Derajat

{delay_ms(50);};

ab=43;

delay_ms(200);

for(data3=48;data3>=36;data3--) //45 Derajat

{delay_ms(70);};

ac=36;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 8

void gerak_ambil8()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=40;data1--) //65 Derajat

{delay_ms(20);};

aa=40;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1>=40;data1--) //65 Derajat

{delay_ms(20);};

aa=40;

delay_ms(200);

}

for(data2=48;data2>=47;data2--) //85 Derajat

{delay_ms(50);};

ab=47;

delay_ms(200);

for(data3=48;data3>=40;data3--) //60 Derajat

{delay_ms(70);};

ac=40;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 212: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-50

//pergerakan robot mengambil benda di posisi 9

void gerak_ambil9()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=55;data1--) //115 Derajat

{delay_ms(20);};

aa=55;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=52;data1++) //105 Derajat

{delay_ms(20);};

aa=52;

delay_ms(200);

}

for(data2=48;data2<=51;data2++) //100 Derajat

{delay_ms(50);};

ab=51;

delay_ms(200);

for(data3=48;data3>=46;data3--) //85 Derajat

{delay_ms(70);};

ac=46;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 10

void gerak_ambil10()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=50;data1--) //100 Derajat

{delay_ms(20);};

aa=50;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1<=48;data1++) //95 Derajat

{delay_ms(20);};

aa=48;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 213: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-51

delay_ms(200);

}

for(data2=48;data2<=50;data2++) //95 Derajat

{delay_ms(50);};

ab=50;

delay_ms(200);

for(data3=48;data3>=44;data3--) //75 Derajat

{delay_ms(70);};

ac=44;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

//pergerakan robot mengambil benda di posisi 11

void gerak_ambil11()

{

awal();

delay_ms(100);

if (alpa==1)

{

for(data1=74;data1>=46;data1--) //85 Derajat

{delay_ms(20);};

aa=45;

}

else if (alpa==2)

{

for(data1=46;data1>=45;data1--) //85 Derajat

{delay_ms(20);};

aa=45;

}

for(data2=48;data2<=50;data2++) //95 Derajat

{delay_ms(50);};

ab=52;

delay_ms(200);

for(data3=48;data3>=45;data3--) //80 Deajat

{delay_ms(70);};

ac=45;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 214: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-52

//pergerakan robot mengambil benda di posisi 12

void gerak_ambil12()

{

awal();

if (alpa==1)

{

for(data1=74;data1>=42;data1--) //70 Derajat

{delay_ms(20);};

aa=42;

delay_ms(200);

}

else if (alpa==2)

{

for(data1=46;data1>=42;data1--) //70 Derajat

{delay_ms(20);};

aa=42;

delay_ms(200);

}

for(data2=48;data2<=52;data2++) //100 Derajat

{delay_ms(50);};

ab=52;

delay_ms(200);

for(data3=48;data3>=46;data3--) //80 Derajat

{delay_ms(70);};

ac=46;

delay_ms(200);

for(data4=25;data4<=51;data4++) //70 Derajat

{delay_ms(30);};

ad=51;

delay_ms(1000);

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 215: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-53

//pergerakan robot siaga

void siaga()

{

da= 1;

if (da==1)

{

for (o=1;o<=4;o++)

{

switch (o)

{

case 1:

{

if (ac < 48)

{

for (data3=ac;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

bc=48;

delay_ms(100);

break;

}

else if (ac > 48)

{

for (data3=ac;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

bc=48;

delay_ms(100);

break;

}

}

case 2:

{

if (ab < 48)

{

for (data2=ab;data2<=48;data2++) //90 Derajat

{delay_ms(50);};

bb=48;

delay_ms(100);

break;

}

else if (ab > 48)

{

for (data2=ab;data2>=48;data2--) //90 Derajat

{delay_ms(50);};

bb=48;

delay_ms(100);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 216: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-54

}

case 3:

{

if (aa < 46)

{

for (data1=aa;data1<=46;data1++) //90 Derajat

{delay_ms(40);};

ba=46;

delay_ms(100);

break;

}

else if (aa > 46)

{

for (data1=aa;data1>=46;data1--) //90 Derajat

{delay_ms(40);};

ba=46;

delay_ms(100);

break;

}

}

case 4:

{

data4 = 51;

bd = 51 ;

delay_ms(500);

break;

}

}

}

da=0;

}

}

//pergerakan robot meletakan objek kubus di kotak hijau(1)

void gerak_peletakankubus()

{

db= 1;

if (db==1)

{

for (p=1;p<=4;p++)

{

switch (p)

{

case 1:

{

if (ba < 22)

{

for (data1=ba;data1<=22;data1++) //0 Derajat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 217: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-55

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

else if (ba > 22)

{

for (data1=ba;data1>=22;data1--) //0 Derajat

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

}

case 2:

{

if (bb < 36)

{

for (data2=bb;data2<=36;data2++) //45 Derajat

{delay_ms(50);};

cb=36;

delay_ms(100);

break;

}

else if (bb > 36)

{

for (data2=bb;data2>=36;data2--) //45 Derajat

{delay_ms(50);};

cb=36;

delay_ms(100);

break;

}

}

case 3:

{

if (bc < 33)

{

for (data3=bc;data3<=33;data3++) //35 Derajat

{delay_ms(50);};

cc=33;

delay_ms(1000);

break;

}

else if (bc > 33)

{

for (data3=bc;data3>=33;data3--) //35 Derajat

{delay_ms(50);};

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 218: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-56

cc=33;

delay_ms(1000);

break;

}

}

case 4:

{

for (data4=bd;data4>=25;data4--) //10 Derajat

{delay_ms(25);};

cd=25;

delay_ms(1000);

break;

}

}

}

db=0;

}

}

//pergerakan robot meletakan objek tabung di kotak merah(2)

void gerak_peletakantabung()

{

dc= 1;

if (dc==1)

{

for (t=1;t<=4;t++)

{

switch (t)

{

case 1:

{

if (ba < 22)

{

for (data1=ba;data1<=22;data1++) //0 Derajat

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

else if (ba > 22)

{

for (data1=ba;data1>=22;data1--)//0 Derajat

{delay_ms(20);};

ca=22;

delay_ms(100);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 219: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-57

}

case 2:

{

if (bb < 49)

{

for (data2=bb;data2<=49;data2++) //90 Derajat

{delay_ms(50);};

cb=49;

delay_ms(100);

break;

}

else if (bb > 49)

{

for (data2=bb;data2>=49;data2--)//90 Derajat

{delay_ms(50);};

cb=49;

delay_ms(100);

break;

}

}

case 3:

{

if (bc < 44)

{

for (data3=bc;data3<=44;data3++) //75 Derajat

{delay_ms(50);};

cc=44;

delay_ms(1000);

break;

}

else if (bc > 44)

{

for (data3=bc;data3>=44;data3--) //75 Derajat

{delay_ms(50);};

cc=44;

delay_ms(1000);

break;

}

}

case 4:

{

for (data4=bd;data4>=25;data4--) //10 Derajat

{delay_ms(25);};

cd=25;

delay_ms(1000);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 220: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-58

}

}

dc=0;

}

}

//pergerakan robot meletakan objek prismasegitiga di kotak kuning(3)

void gerak_peletakanprismasegitiga()

{

dd= 1;

if (dd==1)

{

for (u=1;u<=4;u++)

{

switch (u)

{

case 1:

{

if (ba < 28)

{

for (data1=ba;data1<=28;data1++) //25 Derajat

{delay_ms(20);};

ca=28;

delay_ms(100);

break;

}

else if (ba > 28)

{

for (data1=ba;data1>=28;data1--) //25 Derajat

{delay_ms(20);};

ca=28;

delay_ms(100);

break;

}

}

case 2:

{

if (bb < 51)

{

for (data2=bb;data2<=51;data2++) //100 Derajat

{delay_ms(50);};

cb=51;

delay_ms(100);

break;

}

else if (bb > 51)

{

for (data2=bb;data2>=51;data2--) //100 Derajat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 221: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-59

{delay_ms(50);};

cb=51;

delay_ms(100);

break;

}

}

case 3:

{

if (bc < 47)

{

for (data3=bc;data3<=47;data3++) //85 Derajat

{delay_ms(50);};

cc=47;

delay_ms(100);

break;

}

else if (bc > 47)

{

for (data3=bc;data3>=47;data3--) //85 Derajat

{delay_ms(50);};

cc=47;

delay_ms(1000);

break;

}

}

case 4:

{

for (data4=bd;data4>=25;data4--) //10 Derajat

{delay_ms(25);};

cd=25;

delay_ms(1000);

break;

}

}

}

dd=0;

}

}

//pergerakan robot kembali standby setelah meletakan benda di kotak hijau

void standby1()

{

de= 1 ;

if (de==1)

{

for (q=1;q<=4;q++)

{

switch (q)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 222: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-60

{

case 1:

{

if (cc < 48)

{

for (data3=cc;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cc > 48)

{

for (data3=cc;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 2:

{

if (cb < 48)

{

for (data2=cb;data2<=48;data2++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cb > 48)

{

for (data2=cb;data2>=48;data2--)//90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 3:

{

if (ca < 46)

{

for (data1=ca;data1<=46;data1++) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

else if (ca > 46)

{

for (data1=ca;data1>=46;data1--) //90 Derajat

{delay_ms(20);};

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 223: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-61

delay_ms(100);

break;

}

}

case 4:

{

data4=25;

delay_ms(1000);

break;

}

}

}

de=0;

}

}

//pergerakan robot kembali standby setelah meletakan benda di kotak merah

void standby2()

{

df= 1 ;

if (df==1)

{

for (r=1;r<=4;r++)

{

switch (r)

{

case 1:

{

if (cc < 48)

{

for (data3=cc;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cc > 48)

{

for (data3=cc;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 2:

{

if (cb < 48)

{

for (data2=cb;data2<=48;data2++) //90 Derajat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 224: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-62

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cb > 48)

{

for (data2=cb;data2>=48;data2--) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 3:

{

if (ca < 46)

{

for (data1=ca;data1<=46;data1++) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

else if (ca > 46)

{

for (data1=ca;data1>=46;data1--) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

}

case 4:

{

data4=25;

delay_ms(1000);

break;

}

}

}

df=0;

}

}

//pergerakan robot kembali standby setelah meletakan benda di kotak kuning

void standby3()

{

dg= 1;

if (dg==1)

{

for (s=1;s<=5;s++)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 225: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-63

{

switch (s)

{

case 1:

{

if (cc < 54)

{

for (data3=cc;data3<=54;data3++) //110 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cc > 54)

{

for (data3=cc;data3>=54;data3--) //110 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 2:

{

if (cb < 48)

{

for (data2=cb;data2<=48;data2++) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

else if (cb > 48)

{

for (data2=cb;data2>=48;data2--) //90 Derajat

{delay_ms(50);};

delay_ms(100);

break;

}

}

case 3:

{

if (ca < 46)

{

for (data1=ca;data1<=46;data1++) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

else if (ca > 46)

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 226: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-64

for (data1=ca;data1>=46;data1--) //90 Derajat

{delay_ms(20);};

delay_ms(100);

break;

}

}

case 4:

{

data4=25;

delay_ms(1000);

break;

}

case 5: //90

{

if (cc < 48)

{

for (data3=cc;data3<=48;data3++) //90 Derajat

{delay_ms(50);};

delay_ms(500);

break;

}

else if (cc > 48)

{

for (data3=cc;data3>=48;data3--) //90 Derajat

{delay_ms(50);};

delay_ms(500);

break;

}

}

}

}

dg=0;

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 227: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-65

// fungsi program pergerakan total robot mengambil objek di posisi 1

void gerak_kubus1()

{

gerak_ambil1(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung1()

{

gerak_ambil1(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga1()

{

gerak_ambil1(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 2

void gerak_kubus2()

{

gerak_ambil2(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung2()

{

gerak_ambil2(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga2()

{

gerak_ambil2(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 228: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-66

}

// fungsi program pergerakan total robot mengambil objek di posisi 3

void gerak_kubus3()

{

gerak_ambil3(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung3()

{

gerak_ambil3(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga3()

{

gerak_ambil3(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 4

void gerak_kubus4()

{

gerak_ambil4(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung4()

{

gerak_ambil4(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga4()

{

gerak_ambil4(); delay_ms(10);

siaga();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 229: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-67

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 5

void gerak_kubus5()

{

gerak_ambil5(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung5()

{

gerak_ambil5(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga5()

{

gerak_ambil5(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 6

void gerak_kubus6()

{

gerak_ambil6(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung6()

{

gerak_ambil6(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga6()

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 230: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-68

gerak_ambil6(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 7

void gerak_kubus7()

{

gerak_ambil7(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung7()

{

gerak_ambil7(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga7()

{

gerak_ambil7(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 8

void gerak_kubus8()

{

gerak_ambil8(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung8()

{

gerak_ambil8(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 231: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-69

void gerak_prismasegitiga8()

{

gerak_ambil8(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 9

void gerak_kubus9()

{

gerak_ambil9(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung9()

{

gerak_ambil9(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga9()

{

gerak_ambil9(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 10

void gerak_kubus10()

{

gerak_ambil10(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung10()

{

gerak_ambil10(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 232: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-70

}

void gerak_prismasegitiga10()

{

gerak_ambil10(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 11

void gerak_kubus11()

{

gerak_ambil11(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung11()

{

gerak_ambil11(); delay_ms(10);

siaga();

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga11()

{

gerak_ambil11(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// fungsi program pergerakan total robot mengambil objek di posisi 12

void gerak_kubus12()

{

gerak_ambil12(); delay_ms(10);

siaga();

gerak_peletakankubus(); delay_ms(10);

standby1();

}

void gerak_tabung12()

{

gerak_ambil12(); delay_ms(10);

siaga();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 233: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-71

gerak_peletakantabung(); delay_ms(10);

standby2();

}

void gerak_prismasegitiga12()

{

gerak_ambil12(); delay_ms(10);

siaga();

gerak_peletakanprismasegitiga(); delay_ms(10);

standby3();

}

// pergerakan robot kembali ke posisi awal setelah meletakan semua objek

void standbylagi()

{

data1=74; // 180

delay_ms(1000);

data2=48; //90

delay_ms(1000);

data3=48; //90

delay_ms(1000);

data4=25; //0

delay_ms(1000);

}

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0xff;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0xff;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 234: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-72

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 11059,200 kHz

// Mode: Normal top=0xFF

// OC0 output: Disconnected

TCCR0=0x01;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer2 Stopped

// Mode: Normal top=0xFF

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 235: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-73

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0xff;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x01;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: Off

// USART Mode: Asynchronous

// USART Baud Rate: 9600

UCSRA=0x00;

UCSRB=0x90;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x47;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC disabled

ADCSRA=0x00;

// SPI initialization

// SPI disabled

SPCR=0x00;

// TWI initialization

// TWI disabled

TWCR=0x00;

// Alphanumeric LCD initialization

// Connections are specified in the

// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:

// RS - PORTA Bit 0

// RD - PORTA Bit 1

// EN - PORTA Bit 2

// D4 - PORTA Bit 4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 236: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-74

// D5 - PORTA Bit 5

// D6 - PORTA Bit 6

// D7 - PORTA Bit 7

// Characters/line: 16

lcd_init(16);

// Global enable interrupts

#asm("sei")

while (1)

{

if (data1 !=74 && data2 != 48 && data3 != 48 && data4 !=51)

{

data4=25;

delay_ms(100);

data3=48;

delay_ms(100);

data2=48;

delay_ms(100);

data1=74;

delay_ms(100);

}

if(f==1)

{

z=1;

while(z)

{

for(x=1;x<=5;x++)

{

switch (x)

{

case 1:

{

//Program utama pergerakan robot mengambil objek di posisi 1 dan

menampilkan data di LCD

if (a == '0')

{

break;

}

else if (a == 'a')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter a"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 KUBUS"); delay_ms(10);

gerak_kubus1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 237: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-75

}

else if (a == 'b')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter b"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 TABUNG");delay_ms(10);

gerak_tabung1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'c')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter c"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 PRISMA");delay_ms(10);

gerak_prismasegitiga1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 2 dan

menampilkan data di LCD

else if (a == 'd')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter d"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 KUBUS");delay_ms(10);

gerak_kubus2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'e')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter e"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 TABUNG");delay_ms(10);

gerak_tabung2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'f')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter f"); delay_ms(20);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 238: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-76

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 PRISMA");delay_ms(10);

gerak_prismasegitiga2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 3 dan

menampilkan data di LCD

else if (a == 'g')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter g"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 KUBUS");delay_ms(10);

gerak_kubus3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'h')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter h"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 TABUNG");delay_ms(10);

gerak_tabung3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'i')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter i"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 PRISMA");delay_ms(10);

gerak_prismasegitiga3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 4 dan

menampilkan data di LCD

else if (a == 'j')

{

lcd_gotoxy(0,0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 239: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-77

lcd_putsf("Karakter j");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 KUBUS");delay_ms(10);

gerak_kubus4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'k')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter k"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 TABUNG");delay_ms(10);

gerak_tabung4();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'l')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter l"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 PRISMA");delay_ms(10);

gerak_prismasegitiga4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 5 dan

menampilkan data di LCD

else if (a == 'm')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter m"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 KUBUS");delay_ms(10);

gerak_kubus5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'n')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter n"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 TABUNG");delay_ms(10);

gerak_tabung5(); delay_ms(10);

lcd_clear(); delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 240: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-78

break;

}

else if (a == 'o')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter o"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 PRISMA");delay_ms(10);

gerak_prismasegitiga5();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 6 dan

menampilkan data di LCD

else if (a == 'p')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter p"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 KUBUS");delay_ms(10);

gerak_kubus6(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'q')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter q"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 TABUNG");delay_ms(10);

gerak_tabung6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'r')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter r"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 PRISMA");delay_ms(10);

gerak_prismasegitiga6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 7 dan

menampilkan data di LCD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 241: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-79

else if (a == 's')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter s"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 KUBUS");delay_ms(10);

gerak_kubus7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 't')

{

lcd_gotoxy(0,0);

lcd_putsf("0Karakter t"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 TABUNG");delay_ms(10);

gerak_tabung7();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'u')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter u"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 PRISMA");delay_ms(10);

gerak_prismasegitiga7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 8 dan

menampilkan data di LCD

else if (a == 'v')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter v"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 KUBUS");delay_ms(10);

gerak_kubus8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'w')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter w"); delay_ms(20);

lcd_gotoxy(0,1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 242: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-80

lcd_putsf("POSISI 8 TABUNG");delay_ms(10);

gerak_tabung8();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'x')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter x"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 PRISMA");delay_ms(10);

gerak_prismasegitiga8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 9 dan

menampilkan data di LCD

else if (a == 'y')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter y"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 KUBUS");delay_ms(10);

gerak_kubus9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == 'z')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter z"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 TABUNG");delay_ms(10);

gerak_tabung9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '!')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter !"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 PRISMA");delay_ms(10);

gerak_prismasegitiga9(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 243: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-81

//Program utama pergerakan robot mengambil objek di posisi 10 dan

menampilkan data di LCD

else if (a == '#')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter #"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 KUBUS");delay_ms(10);

gerak_kubus10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '$')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter $"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 TABUNG");delay_ms(10);

gerak_tabung10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '%')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter %"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 PRISMA");delay_ms(10);

gerak_prismasegitiga10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 11 dan

menampilkan data di LCD

else if (a == '̂ ')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ^"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 KUBUS");delay_ms(10);

gerak_kubus11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '&')

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 244: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-82

lcd_gotoxy(0,0);

lcd_putsf("Karakter &"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 TABUNG");delay_ms(10);

gerak_tabung11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '*')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter *"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 PRISMA");delay_ms(10);

gerak_prismasegitiga11();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 12 dan

menampilkan data di LCD

else if (a == '(')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ("); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 KUBUS");delay_ms(10);

gerak_kubus12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == ')')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter )"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 TABUNG");delay_ms(10);

gerak_tabung12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (a == '+')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter +"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 PRISMA");delay_ms(10);

gerak_prismasegitiga12();delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 245: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-83

lcd_clear(); delay_ms(10);

break;

}

}

case 2:

{

//Program utama pergerakan robot mengambil objek di posisi 1 dan

menampilkan data di LCD

if (b == '0')

{

break;

}

else if (b == 'a')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter a");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 KUBUS");delay_ms(10);

gerak_kubus1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'b')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter b");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 TABUNG");delay_ms(10);

gerak_tabung1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'c')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter c");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 PRISMA");delay_ms(10);

gerak_prismasegitiga1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 2 dan

menampilkan data di LCD

else if (b == 'd')

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 246: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-84

lcd_gotoxy(0,0);

lcd_putsf("Karakter d"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 KUBUS");delay_ms(10);

gerak_kubus2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'e')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter e");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 TABUNG");delay_ms(10);

gerak_tabung2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'f')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter f"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 PRISMA");delay_ms(10);

gerak_prismasegitiga2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 3 dan

menampilkan data di LCD

else if (b == 'g')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter g"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI e KUBUS");delay_ms(10);

gerak_kubus3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'h')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter h"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 TABUNG");delay_ms(10);

gerak_tabung3(); delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 247: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-85

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'i')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter i");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 PRISMA");delay_ms(10);

gerak_prismasegitiga3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 4 dan

menampilkan data di LCD

else if (b == 'j')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter j"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 KUBUS");delay_ms(10);

gerak_kubus4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'k')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter k"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 TABUNG");delay_ms(10);

gerak_tabung4();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'l')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter l");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 PRISMA");delay_ms(10);

gerak_prismasegitiga4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 248: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-86

//Program utama pergerakan robot mengambil objek di posisi 5 dan

menampilkan data di LCD

else if (b == 'm')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter m"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 KUBUS");delay_ms(10);

gerak_kubus5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'n')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter n"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 TABUNG");delay_ms(10);

gerak_tabung5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'o')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter o"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 PRISMA");delay_ms(10);

gerak_prismasegitiga5();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 6 dan

menampilkan data di LCD

else if (b == 'p')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter p"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 KUBUS");delay_ms(10);

gerak_kubus6(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'q')

{

lcd_gotoxy(0,0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 249: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-87

lcd_putsf("Karakter q"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 TABUNG");delay_ms(10);

gerak_tabung6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'r')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter r"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 PRISMA");delay_ms(10);

gerak_prismasegitiga6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 7 dan

menampilkan data di LCD

else if (b == 's')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter s"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 KUBUS");delay_ms(10);

gerak_kubus7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 't')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter t"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 TABUNG");delay_ms(10);

gerak_tabung7();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'u')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter u"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 PRISMA");delay_ms(10);

gerak_prismasegitiga7(); delay_ms(10);

lcd_clear(); delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 250: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-88

break;

}

//Program utama pergerakan robot mengambil objek di posisi 8 dan

menampilkan data di LCD

else if (b == 'v')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter v"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 KUBUS");delay_ms(10);

gerak_kubus8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'w')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter w"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 TABUNG");delay_ms(10);

gerak_tabung8();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == 'x')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter x"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 PRISMA");delay_ms(10);

gerak_prismasegitiga8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 9 dan

menampilkan data di LCD

else if (b == 'y')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter y"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 KUBUS");delay_ms(10);

gerak_kubus9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 251: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-89

else if (b == 'z')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter z"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 TABUNG");delay_ms(10);

gerak_tabung9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '!')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter !"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 PRISMA");delay_ms(10);

gerak_prismasegitiga9(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 10 dan

menampilkan data di LCD

else if (b == '#')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter #"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 KUBUS");delay_ms(10);

gerak_kubus10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '$')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter $"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 TABUNG");delay_ms(10);

gerak_tabung10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '%')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter %"); delay_ms(20);

lcd_gotoxy(0,1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 252: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-90

lcd_putsf("POSISI 10 PRISMA");delay_ms(10);

gerak_prismasegitiga10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 11 dan

menampilkan data di LCD

else if (b == '̂ ')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ^"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 KUBUS");delay_ms(10);

gerak_kubus11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '&')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter &"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 TABUNG");delay_ms(10);

gerak_tabung11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '*')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter *"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 PRISMA");delay_ms(10);

gerak_prismasegitiga11();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 12 dan

menampilkan data di LCD

else if (b == '(')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ("); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 KUBUS");delay_ms(10);

gerak_kubus12();delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 253: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-91

lcd_clear(); delay_ms(10);

break;

}

else if (b == ')')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter )"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 TABUNG");delay_ms(10);

gerak_tabung12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (b == '+')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter +"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 PRISMA");delay_ms(10);

gerak_prismasegitiga12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

}

case 3:

{

//Program utama pergerakan robot mengambil objek di posisi 1 dan

menampilkan data di LCD

if(c == '0')

{

break;

}

else if (c == 'a')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter a"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 KUBUS");delay_ms(10);

gerak_kubus1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'b')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter b"); delay_ms(20);

lcd_gotoxy(0,1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 254: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-92

lcd_putsf("POSISI 1 TABUNG");delay_ms(10);

gerak_tabung1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'c')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter c"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 PRISMA");delay_ms(10);

gerak_prismasegitiga1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 2 dan

menampilkan data di LCD

else if (c == 'd')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter d"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 KUBUS");delay_ms(10);

gerak_kubus2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'e')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter e"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 TABUNG");delay_ms(10);

gerak_tabung2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'f')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter f"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 PRISMA");delay_ms(10);

gerak_prismasegitiga2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 255: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-93

//Program utama pergerakan robot mengambil objek di posisi 3 dan

menampilkan data di LCD

else if (c == 'g')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter g"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 KUBUS");delay_ms(10);

gerak_kubus3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'h')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter h"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 TABUNG");delay_ms(10);

gerak_tabung3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'i')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter i");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 PRISMA");delay_ms(10);

gerak_prismasegitiga3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 4 dan

menampilkan data di LCD

else if (c == 'j')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter j");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 KUBUS");delay_ms(10);

gerak_kubus4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'k')

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 256: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-94

lcd_gotoxy(0,0);

lcd_putsf("Karakter k"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 TABUNG");delay_ms(10);

gerak_tabung4();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'l')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter l"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 PRISMA");delay_ms(10);

gerak_prismasegitiga4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 5 dan

menampilkan data di LCD

else if (c == 'm')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter m"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 KUBUS");delay_ms(10);

gerak_kubus5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'n')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter n"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 TABUNG");delay_ms(10);

gerak_tabung5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'o')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter o"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 PRISMA");delay_ms(10);

gerak_prismasegitiga5();delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 257: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-95

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 6 dan

menampilkan data di LCD

else if (c == 'p')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter p"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 KUBUS");delay_ms(10);

gerak_kubus6(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c== 'q')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter q"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 TABUNG");delay_ms(10);

gerak_tabung6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'r')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter r"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 PRISMA");delay_ms(10);

gerak_prismasegitiga6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 7 dan

menampilkan data di LCD

else if (c == 's')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter s"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 KUBUS");delay_ms(10);

gerak_kubus7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 258: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-96

}

else if (c == 't')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter t"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 TABUNG");delay_ms(10);

gerak_tabung7();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'u')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter u"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 PRISMA");delay_ms(10);

gerak_prismasegitiga7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 8 dan

menampilkan data di LCD

else if (c == 'v')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter v");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 KUBUS");delay_ms(10);

gerak_kubus8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'w')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter w");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 TABUNG");delay_ms(10);

gerak_tabung8();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'x')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter x"); delay_ms(20);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 259: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-97

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 PRISMA");delay_ms(10);

gerak_prismasegitiga8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 9 dan

menampilkan data di LCD

else if (c == 'y')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter y"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 KUBUS");delay_ms(10);

gerak_kubus9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == 'z')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter z"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 TABUNG");delay_ms(10);

gerak_tabung9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '!')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter !"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 PRISMA");delay_ms(10);

gerak_prismasegitiga9(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 10 dan

menampilkan data di LCD

else if (c == '#')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter #"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 KUBUS");delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 260: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-98

gerak_kubus10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '$')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter $"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 TABUNG");delay_ms(10);

gerak_tabung10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '%')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter %");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 PRISMA");delay_ms(10);

gerak_prismasegitiga10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 11 dan

menampilkan data di LCD

else if (c == '̂ ')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ^"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 KUBUS");delay_ms(10);

gerak_kubus11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '&')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter &"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 TABUNG");delay_ms(10);

gerak_tabung11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '*')

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 261: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-99

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter *"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 PRISMA");delay_ms(10);

gerak_prismasegitiga11();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 12 dan

menampilkan data di LCD

else if (c == '(')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ("); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 KUBUS");delay_ms(10);

gerak_kubus12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == ')')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter )"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 TABUNG");delay_ms(10);

gerak_tabung12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (c == '+')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter +"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 PRISMA");delay_ms(10);

gerak_prismasegitiga12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

}

case 4:

{

//Program utama pergerakan robot mengambil objek di posisi 1 dan

menampilkan data di LCD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 262: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-100

if (d == '0')

{

break;

}

else if (d == 'a')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter a"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 KUBUS");delay_ms(10);

gerak_kubus1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'b')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter b"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 TABUNG");delay_ms(10);

gerak_tabung1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'c')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter c"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 PRISMA");delay_ms(10);

gerak_prismasegitiga1(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 2 dan

menampilkan data di LCD

else if (d == 'd')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter d"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 KUBUS");delay_ms(10);

gerak_kubus2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'e')

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 263: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-101

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter e"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 TABUNG");delay_ms(10);

gerak_tabung2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'f')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter f"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 PRISMA");delay_ms(10);

gerak_prismasegitiga2(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 3 dan

menampilkan data di LCD

else if (d == 'g')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter g"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 KUBUS");delay_ms(10);

gerak_kubus3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'h')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter h"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 TABUNG");delay_ms(10);

gerak_tabung3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'i')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter i"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 PRISMA");delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 264: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-102

gerak_prismasegitiga3(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 4 dan

menampilkan data di LCD

else if (d == 'j')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter j"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 KUBUS");delay_ms(10);

gerak_kubus4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'k')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter k"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 TABUNG");delay_ms(10);

gerak_tabung4();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'l')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter l"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 PRISMA");delay_ms(10);

gerak_prismasegitiga4(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 5 dan

menampilkan data di LCD

else if (d == 'm')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter m"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 KUBUS");delay_ms(10);

gerak_kubus5(); delay_ms(10);

lcd_clear(); delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 265: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-103

break;

}

else if (d == 'n')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter n"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 TABUNG");delay_ms(10);

gerak_tabung5(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'o')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter o"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 PRISMA");delay_ms(10);

gerak_prismasegitiga5();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 6 dan

menampilkan data di LCD

else if (d == 'p')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter p"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 KUBUS");delay_ms(10);

gerak_kubus6(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'q')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter q");delay_ms(20);

lcd_gotoxy(1,1);

lcd_putsf("POSISI 6 TABUNG");delay_ms(10);

gerak_tabung6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'r')

{

lcd_gotoxy(0,0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 266: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-104

lcd_putsf("Karakter r"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 PRISMA");delay_ms(10);

gerak_prismasegitiga6();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 7 dan

menampilkan data di LCD

else if (d == 's')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter s"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 KUBUS");delay_ms(10);

gerak_kubus7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 't')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter t"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 TABUNG");delay_ms(10);

gerak_tabung7();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'u')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter u"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 PRISMA");delay_ms(10);

gerak_prismasegitiga7(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 8 dan

menampilkan data di LCD

else if (d == 'v')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter v"); delay_ms(20);

lcd_gotoxy(0,1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 267: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-105

lcd_putsf("POSISI 8 KUBUS");delay_ms(10);

gerak_kubus8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'w')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter w"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 TABUNG");delay_ms(10);

gerak_tabung8();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'x')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter x"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 PRISMA");delay_ms(10);

gerak_prismasegitiga8(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 9 dan

menampilkan data di LCD

else if (d == 'y')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter y"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 KUBUS");delay_ms(10);

gerak_kubus9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == 'z')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter z"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 TABUNG");delay_ms(10);

gerak_tabung9();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 268: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-106

else if (d == '!')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter !"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 PRISMA");delay_ms(10);

gerak_prismasegitiga9(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 10 dan

menampilkan data di LCD

else if (d == '#')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter #"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 KUBUS");delay_ms(10);

gerak_kubus10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == '$')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter $"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 TABUNG");delay_ms(10);

gerak_tabung10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == '%')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter %"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 PRISMA");delay_ms(10);

gerak_prismasegitiga10(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 11 dan

menampilkan data di LCD 1

else if (d == '̂ ')

{

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 269: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-107

lcd_gotoxy(2,0);

lcd_putsf("Karakter ^"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 KUBUS");delay_ms(10);

gerak_kubus11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == '&')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter &"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 TABUNG");delay_ms(10);

gerak_tabung11(); delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == '*')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter *");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 PRISMA");delay_ms(10);

gerak_prismasegitiga11();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

//Program utama pergerakan robot mengambil objek di posisi 12 dan

menampilkan data di LCD

else if (d == '(')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ("); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 KUBUS");delay_ms(10);

gerak_kubus12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

else if (d == ')')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter )"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 TABUNG");delay_ms(10);

gerak_tabung12();delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 270: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-108

lcd_clear(); delay_ms(10);

break;

}

else if (d == '+')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter +"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 PRISMA");delay_ms(10);

gerak_prismasegitiga12();delay_ms(10);

lcd_clear(); delay_ms(10);

break;

}

}

case 5:

{

//Program utama pergerakan robot mengambil objek di posisi 1 dan

menampilkan data di LCD

if (e == '0')

{

standbylagi();

z=0;

f=0;

}

else if (e == 'a')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter a");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 KUBUS");delay_ms(10);

gerak_kubus1(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'b')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter b");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 TABUNG");delay_ms(10);

gerak_tabung1(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 271: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-109

else if (e == 'c')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter c"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 1 PRISMA");delay_ms(10);

gerak_prismasegitiga1(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 2 dan

menampilkan data di LCD

else if (e == 'd')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter d");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 KUBUS");delay_ms(10);

gerak_kubus2(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'e')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter e"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 TABUNG");delay_ms(10);

gerak_tabung2(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'f')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter f"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 2 PRISMA");delay_ms(10);

gerak_prismasegitiga2(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 272: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-110

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 3 dan

menampilkan data di LCD

else if (e == 'g')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter g"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 KUBUS");delay_ms(10);

gerak_kubus3(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'h')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter h"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 TABUNG");delay_ms(10);

gerak_tabung3(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'i')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter i"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 3 PRISMA");delay_ms(10);

gerak_prismasegitiga3(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 4 dan

menampilkan data di LCD

else if (e == 'j')

{

lcd_gotoxy(0,0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 273: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-111

lcd_putsf("Karakter j"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 KUBUS");delay_ms(10);

gerak_kubus4(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'k')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter k"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 TABUNG");delay_ms(10);

gerak_tabung4();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'l')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter l"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 4 PRISMA");delay_ms(10);

gerak_prismasegitiga4(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 5 dan

menampilkan data di LCD

else if (e == 'm')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter m");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 KUBUS");delay_ms(10);

gerak_kubus5(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 274: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-112

else if (e == 'n')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter n"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 TABUNG");delay_ms(10);

gerak_tabung5(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'o')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter o"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 5 PRISMA");delay_ms(10);

gerak_prismasegitiga5();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 6 dan

menampilkan data di LCD

else if (e == 'p')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter p");delay_ms(20);;

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 KUBUS");delay_ms(10);

gerak_kubus6(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'q')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter q");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 TABUNG");delay_ms(10);

gerak_tabung6();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 275: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-113

z=0;

f=0;

}

else if (e == 'r')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter r"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 6 PRISMA");delay_ms(10);

gerak_prismasegitiga6();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 7 dan

menampilkan data di LCD

else if (e == 's')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter s");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 KUBUS");delay_ms(10);

gerak_kubus7(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 't')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter t"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 TABUNG");delay_ms(10);

gerak_tabung7();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'u')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter u"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 7 PRISMA");delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 276: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-114

gerak_prismasegitiga7(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 8 dan

menampilkan data di LCD

else if (e == 'v')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter v"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 KUBUS");delay_ms(10);

gerak_kubus8(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'w')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter w"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 TABUNG");delay_ms(10);

gerak_tabung8();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'x')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter x"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 8 PRISMA");delay_ms(10);

gerak_prismasegitiga8(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 9 dan

menampilkan data di LCD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 277: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-115

else if (e == 'y')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter y"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 KUBUS");delay_ms(10);

gerak_kubus9();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == 'z')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter z"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 TABUNG");delay_ms(10);

gerak_tabung9();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == '!')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter !"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 9 PRISMA");delay_ms(10);

gerak_prismasegitiga9(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 10 dan

menampilkan data di LCD

else if (e == '#')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter #"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 KUBUS");delay_ms(10);

gerak_kubus10(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 278: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-116

z=0;

f=0;

}

else if (e == '$')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter $"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 TABUNG");delay_ms(10);

gerak_tabung10(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == '%')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter %");delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 10 PRISMA");delay_ms(10);

gerak_prismasegitiga10(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 11 dan

menampilkan data di LCD

else if (e == '̂ ')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ^"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 KUBUS");delay_ms(10);

gerak_kubus11(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == '&')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter &"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 TABUNG");delay_ms(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 279: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-117

gerak_tabung11(); delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == '*')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter *"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 11 PRISMA");delay_ms(10);

gerak_prismasegitiga11();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

//Program utama pergerakan robot mengambil objek di posisi 12 dan

menampilkan data di LCD

else if (e == '(')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter ("); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 KUBUS");delay_ms(10);

gerak_kubus12();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == ')')

{

lcd_gotoxy(0,0);

lcd_putsf("Karakter )"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 TABUNG");delay_ms(10);

gerak_tabung12();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

else if (e == '+')

{

lcd_gotoxy(0,0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 280: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-118

lcd_putsf("Karakter +"); delay_ms(20);

lcd_gotoxy(0,1);

lcd_putsf("POSISI 12 PRISMA");delay_ms(10);

gerak_prismasegitiga12();delay_ms(10);

lcd_clear(); delay_ms(10);

standbylagi();

z=0;

f=0;

}

}

}

}

}

}

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 281: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-119

Pengujian Nilai OCR dan Sudut Servo 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 282: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-120

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 283: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-121

Pengujian Nilai OCR dan Sudut Servo 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 284: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-122

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 285: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-123

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 286: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-124

Pengujian Nilai OCR dan Sudut Servo 3

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 287: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-125

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 288: APLIKASI COMPUTER VISION - USD Repository · 2019. 7. 25. · dengan mikrokontroler yang diprogram menggunakan matlab dan codevision AVR. Hasil dari penelitian ini adalah sistem yang

L-126

Pengujian OCR dan Sudut Servo 4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI