LENGAN ROBOT PENULIS KATA YANG DIKENDALIKAN · PDF filerobotic arm is designed to write with a...
Transcript of LENGAN ROBOT PENULIS KATA YANG DIKENDALIKAN · PDF filerobotic arm is designed to write with a...
TUGAS AKHIR
LENGAN ROBOT PENULIS KATA YANG
DIKENDALIKAN OLEH APLIKASI PADA ANDROID
Diajukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
disusun oleh:
PETRUS CLAVER HENDAR KRISTYANTO
NIM : 125114031
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA
YOGYAKARTA 2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
FINAL PROJECT
ROBOT ARM WRITER OF WORDS CONTROLLED BY THE APPLICATION ON ANDROID
In partial fulfilment of the requirements for the degree of Sarjana Teknik
In Electrical Engineering Study Program
PETRUS CLAVER HENDAR KRISTYANTO
NIM : 125114031
ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY 2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO :
“I am not the best, but I try to do my best”
Dengan ini kupersembahkan karyaku ini untuk..... Tuhanku Yesus Kristus Pembimbingku yang setia,
Keluargaku tercinta, Teman-temanku seperjuangan,
Dan semua orang yang mengasihiku
Terima Kasih untuk semuanya.......
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
INTISARI
Teknologi robotika di Indonesia telah berkembang dengan pesat. Perkembangan ini diikuti dengan hadirnya smartphone dengan sistem operasi android. Penelitian ini bertujuan membuat prototipe lengan robot 4 DOF yang dapat menulis kata yang dikendalikan oleh aplikasi pada android melalui bluetooth. Lengan robot dapat bergerak ke segala arah dan dirancang agar mampu mengikuti perintah dari android ke semua sudut dimensi dengan motor servo. Lengan robot dirancang untuk menulis huruf kapital dengan jenis seperti fourteen segment. Hasil dari penelitian ini adalah lengan robot telah dapat menulis kata dengan persentase keberhasilan 62% dan dapat dikendalikan jarah jauh dengan maksimal jarak 15 meter. Kata kunci — lengan robot, menulis, Android, Bluetooth, 4 DOF
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
Robotics technology in Indonesia has grown rapidly. This development was followed by the presence of a Smartphone with android operating system. This study aims to create a prototype robot arm 4 DOF which can write words that are controlled by the application on android via Bluetooth. The robotic arm can move in any direction and designed to be capable to follow the orders from android to all corners of the dimension with servo motors. The robotic arm is designed to write with a capital letter types like fourteen segments. The results from this study is the robot arm has been able to write the words with a success percentage of 62% and can be controlled remotely with a maximum distance of 15 meters.
Keyword — Robot Arm, writing, Android, Bluetooth, 4 DOF
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI Halaman Sampul (Bahasa Indonesia) ................................................................................ i
Halaman Sampul (Bahasa Inggris) .................................................................................... ii
Halaman Persetujuan ......................................................................................................... iii
Halaman Pengesahan ......................................................................................................... iv
Pernyataan Keaslian Karya ................................................................................................ v
Halaman Persembahan dan Motto Hidup .......................................................................... vi
Lembar Pernyataan Persetujuan Karya Ilmiah Untuk Kepentingan Akademis ................ vii
Intisari ................................................................................................................................ viii
Abstract .............................................................................................................................. ix
Kata Pengantar ................................................................................................................... x
Daftar Isi ............................................................................................................................ xi
Daftar Gambar ................................................................................................................... xiv
Daftar Tabel ....................................................................................................................... xvii
Daftar Persamaan ............................................................................................................... xviii
Daftar Lampiran ................................................................................................................ xix
BAB I:PENDAHULUAN 1.1. Latar Belakang ............................................................................................ 1
1.2. Tujuan dan Manfaat Penelitian ................................................................... 2
1.3. Batasan Masalah .......................................................................................... 3
1.4. Metodologi Penelitian ................................................................................. 3
BAB II:DASAR TEORI
2.1. Mikrokontroler ............................................................................................. 5
2.1.1. Mikrokontroler Arduino Mega 2560 ................................................ 6
2.1.2 . Perangkat Lunak Arduino ................................................................ 9
2.2. Motor Servo .................................................................................................. 10
2.3. Adafruit Servo Shield 16 Channel PWM ..................................................... 12
2.3.1 Komunikasi I2C ................................................................................ 14
2.4. Bluetooth ...................................................................................................... 16
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.4.1 Modul Bluetooth HC-05 ................................................................... 17
2.4.2 Pengaturan HC-05 dengan AT-COMMAND .................................... 19
2.5. Pemodelan Kinematika Dalam Sistem Robotik ........................................... 20
2.5.1 Konsep Kinematika .......................................................................... 21
2.5.2 Penggunaan Persamaan Trigonometri .............................................. 24
BAB III:PERANCANGAN
3.1. Proses Kerja Sistem ...................................................................................... 28
3.2. Perancangan Perangkat Keras (Hardware) .................................................. 29
3.2.1. Desain Lengan Robot ....................................................................... 29
3.2.2. Perancangan Pengendali Utama ....................................................... 39
3.2.3. Perancangan Rangkaian Motor Servo .............................................. 40
3.3. Perancangan Perangkat Lunak (Software) .................................................. 41
3.3.1. Diagram Alir Android ...................................................................... 41
3.3.2. Diagram Alir Robot Menulis Kata ................................................... 42
BAB IV:HASIL DAN PEMBAHASAN
4.1. Hasil Perancangan Perangkat Keras ............................................................. 44
4.2. Hasil Pengujian ............................................................................................ 47
4.2.1. Pengujian Koneksi Bluetooth ........................................................... 47
4.2.2. Pengujian Kinematika Lengan Robot ............................................... 50
4.2.3. Pengujian repeatabilitas lengan robot .............................................. 60
4.2.4. Pengujian keseluruhan sistem........................................................... 61
4.3. Pembahasan Perangkat Lunak ...................................................................... 65
4.3.1. Inisialisasi ......................................................................................... 65
4.3.2. Program Home .................................................................................. 66
4.3.3. Program Pemilihan Posisi Karakter .................................................. 66
4.3.4. Pembacaan Data dari Android ........................................................... 67
4.3.5. Program Data Huruf .......................................................................... 68
4.3.6. Program Garis Acuan ........................................................................ 68
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V:KESIMPULAN DAN SARAN
5.1. Kesimpulan ................................................................................................... 70
5.2. Saran ............................................................................................................. 70
DAFTAR PUSTAKA ........................................................................................................ 71
LAMPIRAN ...................................................................................................................... 73
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR Halaman
Gambar 1.1. Blok Diagram Prototipe Lengan Robot Menulis Kata ................................ 4
Gambar 2.1. Bentuk Fisik Arduino Mega 2560 ............................................................... 7
Gambar 2.2. Alokasi Penempatan Pin Arduino Mega 2560 ............................................ 7
Gambar 2.3. Tampilan IDE Arduino ............................................................................... 9
Gambar 2.4. Bentuk Fisik Motor Servo ........................................................................... 10
Gambar 2.5. Konstruksi Motor Servo .............................................................................. 11
Gambar 2.6. Kendali Pulsa Motor Servo ......................................................................... 12
Gambar 2.7. Adafruit Servo Shield 16 Channel PWM .................................................... 13
Gambar 2.8. Bentuk Fisik Modul Bluetooth Seri HC ...................................................... 17
Gambar 2.9. Pengaturan Modul Bluetooth Dengan AT-Command Melalui Arduino ..... 19
Gambar 2.10 Diagram Sistem Robotik ............................................................................. 20
Gambar 2.11. Diagram Sistem Kontrol Robotik ............................................................... 21
Gambar 2.12. Transformasi Kinematik Maju dan Kinematik Balik .................................. 21
Gambar 2.13. Gerakan Holonomic .................................................................................... 23
Gambar 2.14. Gerakan Nonholonomic .............................................................................. 23
Gambar 2.15. Gerakan Holonomic dan Nonholonomic .................................................... 23
Gambar 2.16. Konfigurasi Lengan Robot Satu Sendi ....................................................... 24
Gambar 2.17. Konfigurasi Lengan Robot Dua Sendi ........................................................ 24
Gambar 2.18. Konfigurasi Lengan Robot Tiga Sendi ....................................................... 26
Gambar 3.1. Blok Diagram Sistem .................................................................................. 29
Gambar 3.2. Tampilan Desain Gambar 3D Lengan Robot Menulis Kata ....................... 29
Gambar 3.3. Bagian Base dan Penggeraknya .................................................................. 30
Gambar 3.4. Dimensi Lengan Robot ............................................................................... 30
Gambar 3.5. a. Desain 3D End-Effector Lengan Robot .................................................. 31
Gambar 3.5. b. Desain 3D Whiteboard ........................................................................... 31
Gambar 3.6. Desain 3D Keseluruhan Prototipe Lengan Robot ....................................... 34
Gambar 3.7. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Atas ................. 35
Gambar 3.8. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Samping .......... 35
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 3.9. Desain 2D Sederhana Lengan Robot Tampak Atas .................................... 36
Gambar 3.10. Desain 3D Sederhana Lengan Robot Tampak Samping ............................. 37
Gambar 3.11. Contoh Beberapa Titik Acuan di tiap Huruf Serta Dimensi Huruf............. 38
Gambar 3.12. Bentuk Keseluruhan Huruf Beserta Titik Acuannya .................................. 39
Gambar 3.13. Rangkaian Keseluruhan Sistem .................................................................. 40
Gambar 3.14. Gambar Rangkaian Servo Controller ......................................................... 40
Gambar 3.15. Diagram Alir Android ................................................................................. 41
Gambar 3.16. Diagram Alir Program Menulis Kata .......................................................... 42
Gambar 4.1. Keseluruhan Bentuk Lengan Robot Menulis Kata ..................................... 44
Gambar 4.2. Motor Servo Sebagai Penggerak Lengan Robot ......................................... 45
Gambar 4.3. Motor Bagian Base yang Dihubungkan dengan Transmisi Gear ............... 45
Gambar 4.4. Konektor Motor Servo ................................................................................ 46
Gambar 4.5. Rangkaian Elektrik Lengan Robot Menulis Kata ....................................... 46
Gambar 4.6. Ilustrasi Pengujian Koneksi Bluetooth ........................................................ 47
Gambar 4.7. Listing Program Pengujian Koneksi Bluetooth ........................................... 48
Gambar 4.8. Tampilan Interface Arduino Bluetooth Terminal ....................................... 48
Gambar 4.9. Tampilan Serial Monitor pada IDE Arduino .............................................. 49
Gambar 4.10. Posisi Home Lengan Robot ........................................................................ 50
Gambar 4.11. Penyederhanaan 2D Lengan Robot Tampak Atas ...................................... 50
Gambar 4.12. Penyederhanaa 2D Lengan Robot Tampak Samping ................................. 51
Gambar 4.13. Posisi Titik Acuan ....................................................................................... 53
Gambar 4.14. Hasil Implementasi Titik Acuan Pada Whiteboard..................................... 53
Gambar 4.15. Permasalahan Mekanik Lengan Robot ....................................................... 58
Gambar 4.16. Bentuk dan Posisi Garis Acuan ................................................................... 58
Gambar 4.17. Hasil Implementasi Garis-Garis Acuan ...................................................... 59
Gambar 4.18. End-effector Menabrak Papan Tulis ........................................................... 59
Gambar 4.19. Konfigurasi Bluetooth pada Smartphone .................................................... 61
Gambar 4.20. Tampilan Awal Aplikasi Arduino Bluetooth Terminal............................... 61
Gambar 4.21. Tampilan Aplikasi Arduino Bluetooth Terminal ........................................ 62
Gambar 4.22. Bentuk Huruf A pada Posisi Karakter Pertama .......................................... 62
Gambar 4.23. Bentuk Huruf A pada Setiap Posisi Karakter.............................................. 62
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.24. Ilustrasi Bentuk Huruf yang Terbaca .......................................................... 64
Gambar 4.25. Ilustrasi Bentuk Huruf yang Tidak Terbaca ................................................ 64
Gambar 4.26. Beberapa Huruf yang Membentuk Sebuah Kata ......................................... 64
Gambar 4.27. Listing Program Inisialisasi Lengan Robot Menulis Kata .......................... 65
Gambar 4.28. Listing Program Home ................................................................................ 66
Gambar 4.29. Listing Program Pemilihan Posisi Karakter ................................................ 66
Gambar 4.30. Listing Program Pembacaan Data dari Android ......................................... 67
Gambar 4.31. Data yang Diterima oleh Mikrokontroler.................................................... 67
Gambar 4.32. Listing Program Data Huruf ........................................................................ 68
Gambar 4.33. Listing Sub Program Garis Acuan ............................................................... 69
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Halaman
Tabel 2.1. Keterangan Pin Arduino Mega 2560 ............................................................... 8
Tabel 2.2. Keterangan Tombol Pada Tampilan IDE Arduino .......................................... 10
Tabel 3.1. Tabel Perkiraan Berat Lengan dan Beban yang Diangkat Lengan .................. 32
Tabel 3.2. Tabel Perkiraan Panjang Lengan dan Sudut Maksimal yang Dijangkau ........ 34
Tabel 4.1. Pengujian Koneksi Bluetooth ......................................................................... 49
Tabel 4.2. Data Hasil Perhitungan Kinematika Setiap Titik Acuan ............................... 54
Tabel 4.3. Perbandingan Hasil Perhitungan dengan Hasil Pengukuran .......................... 56
Tabel 4.4. Hasil Pengujian Repeatabilitas Lengan Robot ............................................... 60
Tabel 4.5. Hasil Pengujian Keberhasilan Bentuk Huruf ................................................. 63
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PERSAMAAN Halaman
Persamaan 2.1 ..................................................................................................................... 24
Persamaan 2.2 ..................................................................................................................... 25
Persamaan 2.3 ..................................................................................................................... 25
Persamaan 2.4 ..................................................................................................................... 25
Persamaan 2.5 ..................................................................................................................... 25
Persamaan 2.6 ..................................................................................................................... 25
Persamaan 2.7 ...................................................................................................................... 25
Persamaan 2.8 ..................................................................................................................... 25
Persamaan 2.9 ..................................................................................................................... 25
Persamaan 2.10 ................................................................................................................... 25
Persamaan 2.11 ................................................................................................................... 25
Persamaan 2.12 ....................................................................................................................25
Persamaan 2.13 ....................................................................................................................26
Persamaan 2.14 ....................................................................................................................26
Persamaan 2.15 ....................................................................................................................26
Persamaan 2.16 ....................................................................................................................26
Persamaan 2.17 ....................................................................................................................26
Persamaan 2.18 ....................................................................................................................26
Persamaan 2.19 ....................................................................................................................27
Persamaan 2.20 ....................................................................................................................27
Persamaan 2.21 ....................................................................................................................27
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR LAMPIRAN
Halaman
L1. Tabel Pengujian Koneksi Bluetooth ......................................................................... L1
L2. Tabel Data Hasil Perhitungan Kinematika Setiap Titik Acuan ............................... L2
L4. Tabel Perbandingan Hasil Perhitungan dengan Hasil Pengukuran .......................... L4
L6. Tabel Hasil Pengujian Repeatabilitas Lengan Robot .............................................. L6
L7. Hasil Implementasi Keseluruhan Bentuk Huruf ...................................................... L7
L10. Listing Program Keseluruhan ................................................................................... L10
xix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I
PENDAHULUAN 1.1 Latar Belakang
Dewasa ini teknologi robotika di indonesia berkembang dengan pesat.
Perkembangan ini telah meningkatkan kualitas kehidupan manusia. Teknologi robotika
telah menggantikan peralatan – peralatan manual menjadi otomatis yaitu dengan
penggunaan robot. Salah satu cara meningkatkan tingkat kecerdasan sebuah robot adalah
dengan menambah sensor atau aktuator pada robot tersebut. Di negara-negara maju
perkembangan robot mengalami peningkatan yang tinggi, saat ini robot telah digunakan
sebagai alat bantu dalam pekerjaan manusia. Seiring dengan berkembangnya teknologi,
khususnya teknologi elektronik, peran robot menjadi semakin penting tidak saja dibidang
sains, tapi juga di berbagai bidang lainnya, seperti di bidang industri manufaktur,
kedokteran, pertanian, bahkan militer. Teknologi robotika juga telah menjangkau sisi
hiburan dan pendidikan bagi manusia. Secara sadar atau tidak, saat ini robot telah “masuk”
dalam kehidupan sehari-hari manusia dalam berbagai bentuk dan jenis. Ada jenis robot
sederhana yang dirancang untuk melakukan kegiatan yang sederhana, mudah dan
berulang-ulang, ataupun robot yang diciptakan khusus untuk melakukan sesuatu yang
rumit, sehingga dapat berperilaku sangat kompleks dan secara otomatis dapat mengontrol
dirinya sendiri sampai batas tertentu.
Perkembangan teknologi robotika dan elektronik ini juga diikuti dengan
berkembangnya teknologi dalam bidang telekomunikasi. Yakni, dengan hadirnya
Smartphone. Smartphone merupakan telepon genggam yang mempunyai kemampuan
tingkat tinggi yang bekerja menggunakan seluruh perangkat lunak sistem operasi yang
menyediakan hubungan standar dan mendasar bagi pengembang aplikasi. Salah satu
contoh sistem operasi yang ada adalah Android. Saat ini, Smartphone dengan sistem
operasi android mudah kita jumpai dalam kehidupan sehari-hari karena android sudah
digemari di beberapa negara, khususnya Indonesia.
Berdasarkan paparan diatas maka penulis ingin menciptakan purwarupa lengan
robot dengan 4 Degree Of Freedom (DOF). Peneliti yang sudah pernah membuat adalah
Syarifah Hamidah, Seno D.Panjaitan, dan Dedi Triyanto dalam penelitian yang berjudul “
Sistem Pengendali Robot Lengan Menggunakan Pemogramman Visual Basic”. Pada
penelitian ini, mikrokontroler yang digunakan adalah Atmega16. Lengan robot yang
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
digunakan memiliki 4 Degree Of Freedom (DOF) dan menggunakan Graphical User
Interface (GUI) Visual Basic 2010 sebagai antarmuka antara pengguna dengan sistem
kendali lengan robot [1].
Purwarupa lengan robot dengan 4 Degree Of Freedom (DOF) yang akan dibuat
penulis dapat diaplikasikan untuk menulis kata dengan sistem operasi android sebagai
antarmuka antara pengguna dengan sistem kendali lengan robot. Lengan robot tersebut
dapat dikendalikan oleh penggunanya dari jarak jauh melalui teknologi Bluetooth. Lengan
robot dapat digunakan sebagai alat peraga saat pameran atau model saat perancangan
sistem kontrol otomasi.
Dalam pembuatan lengan robot ini memerlukan beberapa motor servo sebagai
penggerak lengan robot. Untuk menggerakkan motor servo tersebut memerlukan servo
controller yang digunakan untuk mengatur pergerakan lengan robot tersebut sehingga
dapat bergerak secara bersamaan. Penelitian ini memaparkan salah satu sudut teknologi
robotika dengan lengan robot yang memiliki kemampuan menulis pada whiteboard dengan
sebuah ujung yang diberikan spidol. Lengan robot tersebut dirancang agar mampu
bergerak secara seimbang dengan menggerakan motor servo pada setiap sendi robot secara
bersamaan. Robot ini dikendalikan oleh sebuah mikrokontroler Arduino yang
menggunakan sebuah Android sebagai masukannya yang dikirimkan melalui teknologi
Bluetooth sehingga pergerakkan dari robot ini berjalan secara otomatis sesuai dengan
program yang dibuat. Lengan robot ini memiliki pergerakan sebanyak 4 DOF ( Degree Of
Freedom) mulai dari pangkal sampai end-effector. Lengan robot dapat bergerak ke segala
arah dan dirancang agar mampu mengikuti perintah dari android dengan mikrokontroler ke
semua sudut dimensi dengan motor servo.
1.2 Tujuan dan Manfaat Penelitian
Tujuan dari penelitian ini adalah membuat purwarupa lengan robot dengan 4 DOF
yang dapat menulis kata berbasis Arduino yang dapat dikendalikan jarah jauh dengan
aplikasi pada Android. Manfaat yang diharapkan dari penelitian ini adalah untuk
digunakan sebagai dasar penelitian robot humanoid di masa yang akan datang dan dapat
menambah pemahaman tentang robot terutama lengan robot dengan 4 DOF.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1.3 Batasan Masalah
Agar penelitian ini dapat sesuai dengan apa yang menjadi tujuannya dan
menghindari terlalu kompleksnya permasalahan yang muncul, maka perlu adanya batasan-
batasan masalah yang sesuai dengan judul penelitian ini. Adapun batasan masalahnya
adalah :
a. Pembuatan lengan robot ini menggunakan 4 derajat kebebasan (DOF).
b. Penelitian akan dibatasi pada lengan robot menulis dengan maksimal enam
huruf.
c. Penulisan huruf menggunakan huruf kapital dengan jenis huruf seperti fourteen
segment.
d. Robot akan dikendalikan dengan sebuah mikrokontroler yakni Arduino yang
akan dihubungkan dengan sebuah Android sebagai masukannya melalui
teknologi Bluetooth.
e. Menggunakan motor RC-servo sebagai aktuator.
f. Robot dapat bergerak pada sumbu X, Y, dan Z.
g. Menggunakan modul Bluetooth HC-05.
h. Menggunakan aplikasi Arduino Bluetooth Terminal pada android yang
digunakan untuk mengirim data masukan pada arduino.
i. Mengirim data huruf per satu karakter secara bergantian.
1.4 Metodologi Penelitian Berdasarkan pada tujuan yang ingin dicapai maka metode yang digunakan adalah :
1. Studi literatur dan referensi, yaitu dengan cara mendapatkan data dari membaca
buku-buku dan jurnal-jurnal yang terkait dengan mikrokontroler khususnya
Arduino dan juga mengenai modul Bluetooth HC-05.
2. Studi kasus terhadap alat yang telah dibuat sebelumnya. Tahap ini dilakukan
guna memahami prinsip kerja alat sebelumnya.
3. Menguji modul Bluetooth HC-05. Tahap ini dilakukan guna memahami prinsip
kerja dan karakter modul Bluetooth HC-05.
4. Menguji motor servo. Tahap ini dilakukan guna memahami prinsip kerja motor
servo dan bisa mengetahui karakter motor servo.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
5. Menguji Servo Controller. Tahap ini dilakukan guna memahami prinsip kerja
Servo Controller baik secara sekuensial maupun bersamaan dan mengetahui cara
menggunakan antarmuka pada Servo Controller.
6. Menguji rangkaian kendali dengan mikrokontroler Arduino. Tahap ini guna
lebih memahami bahasa yang digunakan mikrokontroler Arduino dan lebih
memahami cara kerja dengan mencoba membuat rangkaian kendali sederhana
terlebih dahulu.
7. Perancangan sistem hardware dan software. Tahap ini bertujuan untuk mencari
dan menentukan komponen-komponen suatu sistem yang akan dibuat dengan
mempertimbangkan faktor-faktor permasalahan dan kebutuhan yang telah
ditentukan.
8. Pembuatan sistem hardware dan software. Berdasarkan gambar 1.1,
mikrokontroler sebagai kontrol utama pada purwarupa lengan robot ini.
Mikrokontroler akan memproses masukan dari Android yang dikirim melalui
modul Bluetooth sebagai masukan untuk motor bekerja yang akan membuat
lengan robot bergerak membentuk huruf.
Gambar 1.1. Blok Diagram Prototipe Lengan Robot Menulis Kata
9. Proses pengujian dan pengambilan data. Teknik pengambilan data dilakukan
dengan cara menguji keseluruhan sistem dengan menggabungkan antara
rangkaian kendali dengan rangkaian aktuator. Pengujian dilakukan dengan
mengkomunikasikan Android dengan Arduino.
10. Analisa dan kesimpulan hasil perancangan. Analisa data dilakukan dengan
mengecek apakah alat sudah bekerja sesuai dengan perancangan awal dan bisa
sesuai dengan kondisi yang diinginkan, meliputi kemampuan Arduino mampu
menerima dan mengidentifikasi data dari Android. Berdasarkan hasil analisa data
akan diperoleh kesimpulan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II
DASAR TEORI 2.1. Mikrokontroler
Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan
keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus.
Sederhananya, cara kerja mikrokontroler sebenarnya hanya membaca dan menulis data.
Sekedar contoh, bayangkan diri anda saat mulai belajar membaca dan menulis, ketika
Anda sudah bisa melakukan hal itu anda mulai bisa membaca tulisan apapun baik itu
tulisan buku, cerpen, artikel dan sebagainya, dan anda pun mulai bisa menulis hal-hal
sebaliknya. Begitu pula jika anda sudah mahir membaca dan menulis data pada
mikrokontroler maka anda dapat membuat program untuk membuat suatu sistem
pengaturan menggunakan mikrokontroler sesuai dengan keinginan anda. Mikrokontroler
merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik,
yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut
"pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan
komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil
dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini. Dengan penggunaan
mikrokontroler ini maka :
1. Sistem elektronik akan menjadi lebih ringkas
2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari
sistem adalah perangkat lunak yang mudah dimodifikasi
3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak
Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC
TTL dan CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau
sekedar menambah jumlah saluran masukan dan keluaran (I/O). Dengan kata lain,
mikrokontroler adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler
sudah mengandung beberapa periferal yang langsung bisa dimanfaatkan, misalnya port
paralel, port serial, komparator, konversi digital ke analog (DAC), konversi analog ke
digital dan sebagainya hanya menggunakan sistem minimum yang tidak rumit atau
kompleks [2].
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
2.1.1. Mikrokontroler Arduino Mega 2560 Arduino adalah sebuah platform elektronik yang open source. Nama Arduino tidak
hanya digunakan untuk menamai board rangkaiannya saja, tetapi juga untuk menamai
bahasa dan software pemrogramannya, serta lingkungan pemrogramannya atau yang
dikenal dengan sebutan Integrated Development Environment (IDE). Arduino memiliki
beberapa keunggulan dibandingkan dengan platform elektronik lainnya [3]. Beberapa
keunggulan tersebut antara lain:
1. Modul Arduino adalah sebuah platform elektronik yang open source yang berbasis
pada kemudahan dan fleksibilitas penggunaan hardware dan software. Artinya
pembaca dapat mengunduh software dan gambar rangkaian Arduino tanpa harus
membayar kepada pembuat Arduino.
2. IDE Arduino merupakan multiplatform yang dapat dijalankan di berbagai sistem
operasi seperti Windows, Macintosh, dan Linux.
3. Modul Arduino mudah digunakan sebagai sebuah platform komputasi fisik yang
sederhana serta menerapkan bahasa pemrograman processing.
4. Modul Arduino merupakan platform interaktif karena dapat mengambil masukan
dari berbagai tombol atau sensor, mampu mengendalikan berbagai lampu, motor,
dan output fisik lainnya.
5. Modul Arduino dapat berdiri sendiri, atau dapat melakukan komunikasi dengan
software yang berjalan di komputer seperti Flash, Processing, dan MaxMSP.
6. Pemrograman Arduino menggunakan kabel yang terhubung dengan port Universal
Serial Bus (USB), bukan port serial. Fitur ini sangat berguna karena banyak
komputer sekarang ini tidak memiliki port serial.
7. Biaya yang dibutuhkan untuk membeli modul Arduino cukup murah, sehingga
tidak terlalu menakutkan untuk membuat kesalahan.
8. Proyek Arduino ini dikembangkan dalam dunia pendidikan, sehingga bagi pemula
akan lebih cepat dan mudah untuk mempelajarinya.
9. Memiliki begitu banyak pengguna dan komunitas di internet yang dapat membantu
setiap kesulitan yang dihadapi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Arduino sudah memproduksi begitu banyak minimum sistem. Beberapa diantaranya
adalah Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Mega 2560, Arduino
Mega ADK, Arduino Mikro, Arduino Duemilanove, Arduino Nano. Dalam penelitian yang
dikerjakan oleh penulis, akan digunakan salah satu produk Arduino yang dikenal dengan
nama Arduino Mega 2560. Gambar 2.1. merupakan tampilan Arduino Mega 2560.
Gambar 2.1. Bentuk fisik Arduino Mega 2560 [4]
Arduino Mega 2560 adalah sebuah board mikrokontroler yang berbasis pada IC
ATmega 2560. Arduino Mega 2560 memiliki 54 buah pin digital yang dapat digunakan
sebagai input ataupun output. Dari 54 buah pin tersebut, 15 pin diantaranya dapat
digunakan sebagai output Pulse Width Modulation (PWM), memiliki 16 buah pin analog
input, 4 buah pin UART yang berfungsi sebagai port serial hardware, sebuah osilator
kristal 16 MHz, sebuah jack female untuk koneksi USB, jack female adaptor, dan sebuah
tombol reset [4].
Gambar 2.2. Alokasi Penempatan Pin Arduino Mega 2560
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
Tabel 2.1. Keterangan Pin Arduino Mega 2560 [4]
No. Parameter Keterangan
1 ATmega 2560 IC mikrokontroler yang digunakan pada Arduino Mega 2560.
2 Jack USB Untuk komunikasi mikrokontroler dengan PC
3 Jack Adaptor Masukan power eksternal bila Arduino bekerja mandiri (tanpa
komunikasi dengan PC melalui kabel serial USB).
4 Tombol Reset Tombol reset internal yang digunakan untuk mereset modul
Arduino.
5 Pin Analog Menerima input dari perangkat analog lainnya.
6 Pin Power
• Vin = Masukan tegangan input bagi Arduino ketika
menggunakan dumber daya eksternal.
• 5 V = Sumber tegangan yang dihasilkan regulator internal
board Arduino.
• 3,3 V = Sumber tegangan yang dihasilkan regulator internal
board Arduino. Arus maksimal pada pin ini adalah 50 mA.
• GND = Pin ground dari regulator tegangan board Arduino.
• IOREF = Tegangan Referensi.
• AREF = Tegangan Referensi untuk input analog.
7 Light-Emitting
Diode (LED)
Pin digital 13 merupakan pin yang terkoneksi dengan LED
internal Arduino.
8 Pin PWM Arduino Mega menyediakan 8 bit output PWM. Gunakan
fungsi analogWrite() untuk mengaktifkan pin PWM ini.
9 Pin Serial
Digunakan untuk menerima dan mengirimkan data serial TTL
(Receiver (Rx), Transmitter (Tx)). Pin 0 dan 1 sudah terhubung
kepada pin serial USB to TTL sesuai dengan pin ATmega.
10 Pin Two Wire
Interface (TWI)
Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock
(SCL).
11 Pin Digital Pin yang digunakan untuk menerima input digital dan memberi
output berbentuk digital (0 dan 1 atau low dan high).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Tabel 2.1. (Lanjutan) Keterangan Pin Arduino Mega 2560 [4]
12
Pin Serial
Peripheral
Interface (SPI)
Terdiri dari 4 buah Pin :
1. Master In Slave Out (MISO)
Jalur slave untuk mengirimkan data ke Master.
2. Master Out Slave In (MOSI)
Jalur master untuk mengirimkan data ke peralatan.
3. Serial Clock (SCK)
Clock yang berfungsi untuk memberikan denyut pulsa ketika
sedang menyinkronkan transmisi data oleh master
4. Slave Select (SS)
Pin untuk memilih jalur slave pada perangkat tertentu.
2.1.2. Perangkat Lunak Arduino Area pemrograman Arduino dikenal dengan Integrated Development Environment
(IDE) [5]. Area pemrograman yang digunakan untuk menulis baris program dan
mengunggahnya ke dalam board Arduino . disamping itu juga dibuat lebih mudah dan
dapat berjalan pada beberapa sistem operasi seperti Windows, Macintosh, dan Linux [6].
Gambar 2.3. dan Tabel 2.2. merupakan area pemrograman Arduino dan keterangan
beberapa tombol utama.
Gambar 2.3. Tampilan IDE Arduino
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Tabel 2.2. Keterangan Tombol Pada Tampilan IDE Arduino
No. Tombol Nama Fungsi
1
Verify
Menguji apakah ada kesalahan pada program atau sketch. Apabila sketch sudah benar, maka sketch tersebut akan dikompilasi. Kompilasi adalah proses mengubah kode program ke dalam kode mesin.
2 Upload Mengirimkan kode mesin hasil kompilasi ke board Arduino
3
New Membuat sketch yang baru
4
Open Membuka sketch yang sudah ada
5 Save Menyimpan sketch
6
Serial Monitor
Menampilkan data yang dikirim dan diterima melalui komunikasi serial.
IDE Arduino membutuhkan beberapa pengaturan yang digunakan untuk
mendeteksi board Arduino yang sudah dihubungkan ke komputer. Beberapa pengaturan
tersebut adalah mengatur jenis board yang digunakan sesuai dengan board yang terpasang
dan mengatur jalur komunikasi data melalui perintah Serial Port. Kedua pengaturan
tersebut dapat ditemukan pada pull down menu Tools.
2.2. Motor Servo
Motor servo adalah sebuah motor DC yang dilengkapi rangkaian kendali dengan
sistem closed feedback yang terintegrasi dalam motor tersebut. Pada motor servo posisi
putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang
ada di dalam motor servo. Gambar 2.4 merupakan bentuk fisik dari motor servo.
Gambar 2.4. Bentuk Fisik Motor Servo [7]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Gambar 2.5 merupakan konstruksi dari motor servo yang disusun oleh sebuah
motor DC, gearbox, variabel resistor (VR) atau potensiometer dan rangkaian kontrol.
Potensiometer berfungsi untuk menentukan batas maksimum putaran sumbu (axis) motor
servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang pada
pin kontrol motor servo.
Gambar 2.5. Konstruksi Motor Servo [7]
Motor servo adalah motor yang mampu bekerja dua arah (CW dan CCW) dimana
arah dan sudut pergerakan rotornya dapat dikendalikan dengan memberikan variasi lebar
pulsa (duty cycle) sinyal PWM pada bagian pin kontrolnya.
Jenis-jenis Motor Servo:
1. Motor Servo Standar
Motor servo jenis ini hanya mampu bergerak dua arah (CW dan CCW)
dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut
dari kanan – tengah – kiri adalah 180°.
2. Motor Servo Continuous
Motor servo jenis ini mampu bergerak dua arah (CW dan CCW) tanpa
batasan defleksi sudut putar (dapat berputar secara kontinyu).
Pulsa Kontrol Motor Servo
Operasional motor servo dikendalikan oleh sebuah pulsa dengan jarak ± 20 ms,
dimana lebar pulsa antara 0.5 ms dan 2 ms menyatakan akhir dari range sudut maksimum.
Apabila motor servo diberikan pulsa dengan besar 1.5 ms mencapai gerakan 90°, maka bila
kita berikan pulsa kurang dari 1.5 ms maka posisi mendekati 0° dan bila kita berikan pulsa
lebih dari 1.5 ms maka posisi mendekati 180° seperti yang ditunjukkan pada gambar 2.6.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Gambar 2.6. Kendali Pulsa Motor Servo [7]
Motor Servo akan bekerja secara baik jika pada bagian pin kontrolnya diberikan
sinyal PWM dengan frekuensi 50 Hz. Dimana pada saat sinyal dengan frekuensi 50 Hz
tersebut dicapai pada kondisi Ton duty cycle 1.5 ms, maka rotor dari motor akan berhenti
tepat di tengah-tengah (sudut 0°/ netral).
Pada saat Ton duty cycle dari sinyal yang diberikan kurang dari 1.5 ms, maka rotor
akan berputar ke berlawanan arah jarum jam (Counter Clock wise, CCW) dengan
membentuk sudut yang besarnya linier terhadap besarnya Ton duty cycle, dan akan
bertahan diposisi tersebut. Dan sebaliknya, jika Ton duty cycle dari sinyal yang diberikan
lebih dari 1.5 ms, maka rotor akan berputar searah jarum jam (Clock Wise, CW) dengan
membentuk sudut yang linier pula terhadap besarnya Ton duty cycle, dan bertahan diposisi
tersebut [7].
2.3 . Adafruit Servo Shield 16 Channel PWM Adafruit Servo Shield 16 Channel PWM merupakan sebuah pengendali servo atau
servo controller yang mampu digunakan untuk mengendalikan 16 buah motor servo secara
serentak maupun sekuensial dengan output PWM. Modul ini dilengkapi dengan jalur
komunikasi I2C. Modul ini juga memiliki jalur I2C yang dapat berbagi dengan perangkat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
I2C lainnya serta sensor untuk pin SDA dan SCL selama alamat mereka tidak konflik.
Gambar 2.7. merupakan bentuk fisik dari Adafruit Servo Shield 16 Channel PWM[8].
Gambar 2.7. Adafruit Servo Shield 16 Channel PWM [8]
Spesifikasi dari Adafruit Servo Shield 16 Channel PWM :
1. Dapat digunakan untuk mengendalikan hingga 16 motor servo secara serentak
maupun sekuensial.
2. Mendukung motor servo tipe standar dan kontinus.
3. Dilengkapi kemampuan untuk membaca pulsa kontrol (posisi) servo, Enable dan
Disable servo, kemampuan menyimpan dan menjalankan hingga 32 sekuen
gerakan, serta kemampuan menyimpan dan kembali ke posisi home (default).
4. Menggunakan komunikasi I2C, hanya dengan menggunakan 2 pin papan PWM
controller akan mengendalikan semua 16 channel atau pin sekaligus tanpa
tambahan pengeluaran untuk menambahkan arduino.
5. Dapat menumpuk hingga 62 Adafruit Servo Shield 16 Channel PWM dalam 1
arduino sehingga dapat mengendalikan hingga 992 motor servo hanya dengan 2
pin(SDA/SCL).
6. Pengaturan alamat I2C secara hardware melalui pin A5 untuk SCL dan pin A4
untuk SDA pada arduino.
7. Dilengkapi dengan library yang bisa di download untuk dimasukkan ke dalam
arduino.
8. Menggunakan 2 catudaya. Catudaya modul terpisah dengan catudaya motor servo
dan dilengkapi dengan LED indikator catudaya.
9. Catudaya modul menggunakan catudaya dari arduino yaitu sebesar 5V yang
digunakan untuk daya chip PWM, menentukan level logic I2C, dan level logic
sinyal PWM.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
10. Hampir semua servo di desain untuk bekerja aktif kira-kira di tegangan 5V atau 6V.
Logikanya jika ingin mengendalikan banyak servo maka dibutuhkan arus yang
tidak sedikit agar semua servo dapat bekerja secara serentak sehingga terdapat
beberapa pilihan power dibawah ini yang direkomendasikan untuk catudaya motor
servo:
a. 5v 2A switching power supply (dapat mengendalikan hingga 4 motor
servo).
b. 5V 10A switching power supply (dapat mengendalikan hingga 16 motor
servo)
c. Jika menggunakan battery dapat menggunakan 4x AA battery dengan
tegangan 6v atau 4,8v (6v dengan cell battery Alkaline dan 4,8v dengan cell
battery yang dapat dicas).
2.3.1. Komunikasi I2C Bus adalah sistem pengantar yang dilengkapi dengan komponen pengendali untuk
melayani pertukaran data antara komponen hardware satu dengan komponen hardware
lainnya. Pada sistem mikrokontroler terdapat bus Data, bus Alamat, dan beberapa
pengantar pengendali. Semakin tinggi frekuensi clock prosesor, maka semakin lebih cermat
pengembang untuk memperhatikan timing dari seluruh komponen yang terlibat, agar tidak
terjadi kesalahan dalam transaksi data.
Bus yang cukup sering digunakan adalah bus bersifat paralel. Transaksi data
dilakukan secara paralel sehingga transaksi data lebih cepat. Akan tetapi disisi lain Mahal.
Jika sistem relatif tidak membutuhkan transaksi yang cepat, maka penggunaan Serial Bus
menjadi pilihan. Salah satu pilihan sistem data bus yang sering digunakan adalah I2C (Inter
Integrated Circuit). Sistem Bus I2C pertamakali diperkenalkan oleh Firma Philips pada
tahun 1979.
Karakter I2C :
1. Serial Bus Data dikirim serial secara per-bit.
2. Menggunakan dua Penghantar Koneksi dengan ground bersama I2C terdiri dari dua
penghantar:
a. SCL (Serial Clock Line) untuk menghantarkan sinyal clock.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
b. SDA (Serial Data) untuk mentransaksikan data
3. Jumlah Peserta Bus maximal 127 peserta dialamatkan melalui 7-bit-alamat. Alamat
ditetapkan kebanyakan secara hardware dan hanya sebagian kecil dapat dirubah.
4. Pengirim dan Penerima setiap transaksi data terjadi antara pengirim (Transmitter)
dan penerima (Receiver). Pengirim dan penerima adalah peserta bus.
5. Master and Slave Device yang mengendalikan operasi transfer disebut Master,
sementara device yang di kendalikan oleh master di sebut Slave.
Aturan Komunikasi I2C :
1. I2C adalah protokol transfer data serial. Device atau komponen yang mengirim data
disebut transmitter, sedangkan device yang menerimanya disebut receiver.
2. Device yang mengendalikan operasi transfer data disebut master, sedangkan device
lainnya yang dikendalikan oleh master disebut slave.
3. Master device harus menghasilkan serial clock melalui pin SCL, mengendalikan
akses ke BUS serial dan menghasilkan sinyal kendali START dan STOP.
4. I2C adalah protokol transfer data serial. Device atau komponen yang mengirim data
disebut transmitter, sedangkan device yang menerimanya disebut receiver.
5. Device yang mengendalikan operasi transfer data disebut master, sedangkan device
lainnya yang dikendalikan oleh master disebut slave.
6. Master device harus menghasilkan serial clock melalui pin SCL, mengendalikan
akses ke BUS serial dan menghasilkan sinyal kendali START dan STOP.
Definisi-definisi Kondisi Bus :
1. Bus not busy:
Pada saat ini Bus tidak sibuk, SCL dan SDA dua-duanya dalam keadaan HIGH.
2. Start data transfer:
Ditandai dengan perubahan kondisi SDA dari HIGH ke LOW ketika SCL HIGH.
3. Stop data transfer:
Ditandai dengan perubahan kondisi SDA dari LOW ke HIGH ketika SCL HIGH.
4. Data valid:
Data yang dikirim bit demi bit dianggap valid jika setelah START, kondisi
SDA tidak berubah selama SCL HIGH, baik SDA HIGH maupun SDA LOW
tergantung dari bit yang ingin ditransfer. Setiap siklus HIGH SCL baru
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
menandakan pengiriman bit baru. Duty cycle untuk SCL tidak mesti 50%, tetapi
frekuensi kemunculannya hanya ada 2 macam, yaitu mode standar 100kHz dan fast
mode atau mode cepat 400kHz. Setelah SCL mengirimkan sinyal HIGH yang
kedelapan, arah transfer SDA berubah, sinyal kesembilan pada SDA ini dianggap
sebagai acknowledge dari receiver ke transmitter.
5. Acknowledge:
Setiap receiver wajib mengirimkan sinyal acknowledge atau sinyal balasan
setiap selesai pengiriman 1-byte atau 8-bit data. Master harus memberikan ekstra
clock pada SCL, yaitu clock kesembilan untuk memberikan kesempatan receiver
mengirimkan sinyal acknowledge ke transmitter berupa keadaan LOW pada SDA
selama SCL HIGH. Meskipun master berperan sebagai receiver, ia tetap sebagai
penentu sinyal STOP. Pada bit-akhir penerimaan byte terakhir, master tidak
mengirimkan sinyal acknowledge, SDA dibiarkan HIGH oleh receiver dalam hal
ini master, kemudian master mengubah SDA dari LOW menjadi HIGH yang berarti
sinyal STOP.
2.4. Bluetooth Bluetooth adalah spesifikasi industri untuk jaringan kawasan pribadi (personal area
networks atau PAN) tanpa kabel. Bluetooth menghubungkan dan dapat dipakai untuk
melakukan tukar-menukar informasi di antara peralatan-peralatan. Spesifiksi dari peralatan
Bluetooth ini dikembangkan dan didistribusikan oleh kelompok Bluetooth Special Interest
Group.
Awal mula dari Bluetooth adalah sebagai teknologi komunikasi wireless (tanpa
kabel) yang beroperasi dalam pita frekuensi 2,4 GHz unlicensed ISM (Industrial, Scientific
and Medical) dengan menggunakan sebuah frequency hopping tranceiver yang mampu
menyediakan layanan komunikasi data dan suara secara real-time antara host-host
Bluetooth dengan jarak jangkauan layanan yang terbatas (sekitar 10 meter). Bluetooth
berupa card yang menggunakan frekuensi radio standar IEEE 802.11 dengan jarak layanan
yang terbatas dan kemampuan data transfer lebih rendah dari card untuk Wireless Local
Area Network (WLAN).
Protokol Bluetooth menggunakan sebuah kombinasi antara circuit switching dan
packet switching. Bluetooth dapat mendukung sebuah kanal data asinkron, tiga kanal suara
sinkron simultan atau sebuah kanal dimana secara bersamaan mendukung layanan data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
asinkron dan suara sinkron. Setiap kanal suara mendukung sebuah kanal suara sinkron 64
kb/s. Kanal asinkron dapat mendukung kecepatan maksimal 723,2 kb/s asimetris, dimana
untuk arah sebaliknya dapat mendukung sampai dengan kecepatan 57,6 kb/s. Sedangkan
untuk mode simetris dapat mendukung sampai dengan kecepatan 433,9 kb/s. Sebuah
perangkat yang memiliki teknologi Wireless Bluetooth akan mempunyai kemampuan
untuk melakukan pertukaran informasi dengan jarak jangkauan sampai dengan 10 meter
(~30 feet). Sistem Bluetooth menyediakan layanan komunikasi point to point maupun
komunikasi point to multipoint.
Produk Bluetooth dapat berupa PC card atau USB adapter yang dimasukkan ke
dalam perangkat. Perangkat-perangkat yang dapat diintegerasikan dengan teknologi
Bluetooth antara lain : mobile PC, mobile phone, PDA (Personal Digital Assistant),
headset, kamera, printer, router dan sebagainya. Aplikasi-aplikasi yang dapat disediakan
oleh layanan Bluetooth ini antara lain : PC to PC file transfer, PC to PC file synch (
notebook to desktop), PC to mobile phone, PC to PDA, wireless headset, LAN connection
via ethernet access point dan sebagainya[9].
2.4.1. Modul Bluetooth HC-05
Modul Bluetooth seri HC memiliki banyak jenis atau varian, yang secara garis
besar terbagi menjadi dua yaitu jenis industrial series yaitu HC-03 dan HC-04 serta civil
series yaitu HC-05 dan HC-06. Modul Bluetooth serial, yang selanjutnya disebut dengan
modul BT saja digunakan untuk mengirimkan data serial TTL via Bluetooth. Modul BT ini
terdiri dari dua jenis yaitu Master dan Slave.
Gambar 2.8. Bentuk Fisik Modul Bluetooth Seri HC-05 [10]
Seri modul BT HC bisa dikenali dari nomor serinya, jika nomer serinya genap
maka modul BT tersebut sudah diset oleh pabrik, bekerja sebagai slave atau master dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
tidak dapat diubah mode kerjanya, contoh adalah HC-06-S. Modul BT ini akan bekerja
sebagai BT Slave dan tidak bisa diubah menjadi Master, demikian juga sebaliknya
misalnya HC-04M. Default mode kerja untuk modul BT HC dengan seri genap adalah
sebagai Slave.
Sedangkan modul BT HC dengan nomer seri ganjil, misalkan HC-05, kondisi
default biasanya diset sebagai Slave mode, tetapi pengguna bisa mengubahnya menjadi
mode Master dengan AT Command tertentu. Penggunaan utama dari modul BT ini adalah
menggantikan komunikasi serial via kabel, sebagai contoh:
1. Jika akan menghubungkan dua sistem mikrokontroler agar bisa berkomunikasi via
serial port maka dipasang sebuah modul BT Master pada satu sistem dan modul BT
Slave pada sistem lainnya. Komunikasi dapat langsung dilakukan setelah kedua
modul melakukan pairing. Koneksi via Bluetooth ini menyerupai komunikasi serial
biasa, yaitu adanya pin TXD dan RXD.
2. Jika sistem mikrokontroler dipasangi modul BT Slave maka ia dapat berkomunikasi
dengan perangkat lain semisal PC yang dilengkapi adapter BT ataupun dengan
perangkat ponsel, Smartphone dan lain-lain
3. Saat ini banyak perangkat seperti printer, GPS modul dan lain-lain yang bekerja
menggunakan media Bluetooth, tentunya sistem mikrokontroler yang dilengkapi
dengan BT Master dapat bekerja mengakses device-device tersebut
Pemakaian module BT pada sistem komunikasi baik antar dua sistem mikrokontrol
maupun antara suatu sistem ke device lain tidak perlu menggunakan driver, tetapi
komunikasi dapat terjadi dengan dua syarat yaitu :
1. Komunikasi terjadi antara modul BT Master dan BT Slave, komunikasi tidak akan
pernah terjadi jika kedua modul sama-sama Master atau sama-sama Slave, karena
tidak akan pernah pairing diantara keduanya
2. Password yang dimasukkan cocok
Modul BT yang banyak beredar di sini adalah modul HC-06 atau sejenisnya dan
modul HC-05 dan sejenisnya. Perbedaan utama adalah modul HC-06 tidak bisa mengganti
mode karena sudah diset oleh pabrik, selain itu tidak banyak AT Command dan fungsi
yang bisa dilakukan pada modul tersebut. Diantaranya hanya bisa mengganti nama, baud
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
rate dan password saja. Sedangkan untuk modul HC-05 memiliki kemampuan lebih yaitu
bisa diubah mode kerjanya menjadi Master atau Slave serta diakses dengan lebih banyak
AT Command, modul ini sangat direkomendasikan, terutama dengan flexibilitasnya dalam
pemilihan mode kerjanya. Dalam penelitian ini penulis akan menggunakan modul
Bluetooth seri HC-05[10].
2.4.2. Pengaturan HC-05 dengan AT-COMMAND
Pengaturan modul Bluetooth HC-05 dapat dilakukan dengan pengiriman AT-
Command. AT-Command adalah antarmuka perangkat lunak utama untuk modul nirkabel.
AT-Command menyediakan antarmuka untuk berinteraksi dengan modul untuk melakukan
berbagai tugas seperti mendapatkan informasi tentang modul Bluetooth, Menganti nama
devais modul, menganti kecepatan transmisi data dll Beberapa AT-Command yang
ditetapkan dalam spesifikasi adalah opsional. Dalam hal ini, pengiriman AT-Command
dilakukan melalui Arduino Uno. Untuk melakukan pengiriman AT-Command mode kerja
modul Bluetooth HC-05 perlu diubah dari mode transmisi data menjadi mode konfigurasi
dengan cara memberikan masukan high pada pin KEY pada modul Bluetooth HC-05.
Selain itu juga diperlukan beberapa wiring dan sedikit program pada Arduino Uno melalui
Arduino IDE. Pengiriman AT-Command dilakukan melalui serial monitor pada Arduino
IDE seperti yang terlihat pada Gambar 2.9.
Gambar 2.9. Pengaturan modul Bluetooth dengan AT-Command Melalui Arduino
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
2.5. Pemodelan Kinematika Dalam Sistem Robotik
Kinematika robot adalah studi analitis pergerakan lengan robot terhadap sistem
kerangka koordinat acuan yang diam/bergerak tanpa memperhatikan gaya yang
menyebabkan pergerakan tersebut. Model kinematika merepresentasikan hubungan end-
effector dalam ruang tiga dimensi dengan variabel sendi dalam ruang sendi. Persamaan
kinematika maju mendeskripsikan posisi dan orientasi end-effector yang dinyatakan dalam
posisi sendi. Sedangkan persamaan kinematika balik mendeskripsikan konfigurasi posisi
sendi untuk menghasilkan posisi dan orientasi end-effector tertentu.
Secara garis besar sistem robotik terdiri dari sistem kontroler, elektronik dan
mekanik. Dalam bentuk diagram blok dapat dinyatakan seperti dalam Gambar 2.10 berikut
ini.
Gambar 2.10. Diagram Sistem Robotik [11]
G(s) adalah fungsi alih pengendali, sedangkan H(s) adalah fungsi alih elemen
umpan balik untuk sistem robot secara fisik termasuk aktuator dan sistem elektroniknya.
Komponen ri adalah masukan acuan yang dalam penerapannya dapat berupa posisi,
kecepatan, dan percepatan. Dalam fungsi waktu, nilai masukan ini dapat bervariasi dan
kontinyu yang membentuk suatu konfigurasi trayektori. Komponen e adalah nilai galat
antara keluaran dan masukan acuan, sedangkan u adalah keluaran dari pengendali dan y
adalah fungsi gerak robot yang diharapkan selalu sama dengan acuan yang didefinisikan
pada masukan ri.
Jika masukan merupakan fungsi dari suatu koordinat vektor posisi dan orientasi
P(x,y,z) dan keluarannya adalah θ(θ1, θ2,…, θn) dimana n adalah jumlah sendi atau DOF,
maka Gambar 2.10 dapat digambar ulang seperti yang terlihat pada Gambar 2.11 berikut
ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Gambar 2.11. Diagram Sistem Kontrol Robotik [11]
Dalam Gambar 2.11 di atas, keluaran yang diukur dari gerakan robot adalah dalam
domain sudut dari sendi-sendi, baik sendi pada sistem tangan/kaki atau sudut dari
perputaran roda jika robot tersebut adalah mobile robot. Sedangkan yang diperlukan oleh
pengguna dalam pemrograman atau dalam pemetaan ruang kerja robot adalah posisi (ujung
tangan atau titik tertentu pada bagian robot) yang dinyatakan sebagai koordinat 2D
(kartesian) atau 3D. Dengan demikian perlu dilakukan transformasi koordinat antara ruang
kartesian dengan ruang sendi/sudut ini. Pada Gambar 2.12 dinyatakan sebagai kinematika
balik dan kinematika maju. Kombinasi antara transformasi koordinat P ke θ dengan
pengendali G(s) disebut sebagai pengendali kinematika. Masukannya berupa sinyal galat
P, ep, sedangkan keluarannya adalah sinyal kemudi u untuk aktuator. Dalam konteks
praktis, u adalah sinyal sinyal analog dari DAC untuk seluruh aktuator robot.
2.5.1. Konsep Kinematika
Dari Gambar 2.11, pengendali dinyatakan sebagai pengendali kinematik karena
mengandung komponen transformasi ruang kartesian ke ruang sendi. Dengan demikian
diperoleh keluaran pengendali u yang bekerja dalam ruang sendi, u(θ1, θ2,…, θn).
Sebaliknya, pengendali memerlukan umpan balik dalam bentuk koordinat karena acuan
diberikan dalam bentuk koordinat. Penjelasan ini dapat diilustrasikan dalam Gambar 2.12
berikut ini.
Gambar 2.12. Transformasi Kinematik Maju dan Kinematik Balik [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Dari Gambar 2.12 dapat diperoleh dua pernyataan mendasar, yaitu:
• Jika jari-jari r dan θ dari suatu struktur robot n-DOF diketahui, maka posisi P(x,y,z)
dapat dihitung. Jika θ merupakan sebuah fungsi berdasarkan waktu θ(t), maka posisi
dan orientasi P(t) dapat dihitung juga secara pasti. Transformasi koordinat ini dikenal
sebagai kinematika maju.
• Jika posisi dan orientasi P(t) diketahui maka, θ(t) tidak langsung dapat dihitung tanpa
mendefinisikan berapa DOF struktur robot itu. Jumlah sendi n dari n-DOF yang
dapat dibuat untuk melaksanakan tugas sesuai dengan posisi dan orientasi P(t) itu
dapat bernilai n=(m,m+1, m+2,…,m+p) dimana m adalah jumlah sendi minimum
dan p adalah jumlah sendi yang dapat ditambahkan. Robot berstruktur m-DOF
disebut dengan robot nonredundant, sedang bila (m+p)-DOF maka disebut sebagai
robot redundant. Transformasi ini dikenal sebagai kinematika balik (Invers
Kinematics).
Dari pernyataan di atas nampak bahwa analisis kinematika maju adalah relatif
sederhana dan mudah diimplementasikan. Di sisi lain, karena variabel-variabel bebas pada
robot yang diperlukan dalam akusisi kendali adalah berupa variabel-variabel sendi
(aktuator), sedang tugas yang didefinisikan hampir selalu dalam acuan koordinat kartesian,
maka analisis kinematika balik lebih sering digunakan dan dikaji secara mendalam dalam
dunia robotik. Jadi, kinematik dalam robotik adalah suatu bentuk pernyataan yang berisi
tentang deskripsi matematik geometri dari suatu struktur robot. Dari persamaan kinematik
dapat diperoleh hubungan antara konsep geometri ruang sendi pada robot dengan konsep
koordinat yang biasa dipakai untuk menentukan kedudukan dari suatu obyek.
Model kinematik robot dapat dibedakan dalam dua kelompok model pergerakan, yaitu :
1. Holonomic
2. Nonholonomic
Gerakan holonomic dapat diumpamakan seperti sedang menulis dengan
menggunakan pensil atau pulpen (ballpoint) di atas kertas. Ujung pensil atau pulpen dapat
bergerak kesegala arah dipermukaan kertas sesuai keinginan. Gerak ujung pensil atau
pulpen tersebut disebut sebagai gerak holonomic. Dalam robotik dapat diambil contoh
misalnya robot manipulator.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Gambar 2.13. Gerakan Holonomic [11]
Berbeda dengan gerak nonholonomic. Ujung atau suatu titik yang memiliki sifat
nonholonomic mempunyai keterbatasan dalam arah gerakan. Gerak nonholonomic dapat
diilustrasikan seperti menggoreskan ujung pisau atau cutter ke atas permukaan kayu. Arah
gerak nonholonomic ini dibatasi oleh efek sentuhan ujung pipih yang menempel pada
permukaan kayu, sehingga tidak dapat bergerak dengan bebas ke kiri atau ke kanan tanpa
mengikuti arah sisi yang tajam. Jika diinginkan gerakan melengkung ataupun sudut tajam
terlebih dahulu harus mengarahkan sisi pisau yang tajam ke arah yang segaris dengan arah
gerak yang diinginkan. Contoh klasik kinematik dalam robotik yang memiliki sifat
nonholonomic adalah sistem penggerak dua roda kanan kiri pada mobile robot dengan satu
atau lebih roda bebas ( castor ) untuk menjaga keseimbangan.
Gambar 2.14. Gerakan Nonholonomic [11]
Gambar 2.15. Gerakan Holonomic dan Nonholonomic [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
2.5.2. Penggunaan Persamaan Trigonometri
Analisis persamaan kinematik dapat diselesaikan dengan cara paling dasar yaitu
menggunakan persamaan trigonometri. Setiap komponen dalam koordinat (x, y, z)
dinyatakan sebagai transformasi dari tiap-tiap komponen ruang sendi(r, θ). Jari-jari r dalam
persamaan sering dituliskan sebagai panjang lengan atau link l. Untuk koordinat 2D
komponen z tidak dapat dituliskan. Pada robot manipulator dapat dianalisis mulai dari satu
sendi hingga tiga sendi.
Analisis kinematik lengan robot dengan satu sendi, yaitu
Gambar 2.16. Konfigurasi Lengan Robot Satu Sendi [11]
Kedudukan ujung lengan 𝑃𝑃(𝑥𝑥,𝑦𝑦) dapat diperoleh dengan cara kinematik balik atau
invers kinematics sebagai berikut,
𝜃𝜃 = tan−1(yx) (2.1)
Analisis kinematik lengan robot dengan dua sendi, yaitu
Gambar 2.17. Konfigurasi Lengan Robot Dua Sendi [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Kedudukan ujung lengan dinyatakan sebagai 𝑃𝑃(𝑥𝑥,𝑦𝑦) sebagai berikut,
𝑃𝑃(𝑥𝑥,𝑦𝑦) = 𝑓𝑓( 𝜃𝜃1,𝜃𝜃2 ) ( 2.2 )
Jika P diasumsikan sebagai vektor penjumlahan yang terdiri dari vektor r1 lengan-1 dan r2 lengan r2, yaitu :
𝑟𝑟1 = [𝑙𝑙1 cos 𝜃𝜃1 , 𝑙𝑙1 sin 𝜃𝜃1] ( 2.3 )
𝑟𝑟2 = [𝑙𝑙2 cos(𝜃𝜃1 + 𝜃𝜃2) , 𝑙𝑙2 sin(𝜃𝜃1 + 𝜃𝜃2)] ( 2.4 )
Maka,
𝑥𝑥 = 𝑙𝑙1 cos 𝜃𝜃1 + 𝑙𝑙2 cos(𝜃𝜃1 + 𝜃𝜃2) ( 2.5 )
𝑦𝑦 = 𝑙𝑙1 sin 𝜃𝜃1 + 𝑙𝑙2 sin(𝜃𝜃1 + 𝜃𝜃2) ( 2.6 )
Kinematika balik lengan robot dapat dijabarkan sebagai berikut. Dengan
menggunakan hukum identitas trigonometri,
cos (𝑎𝑎 + 𝑏𝑏) = cos(𝑎𝑎) cos(𝑏𝑏) − sin(𝑎𝑎) sin(𝑏𝑏) (2.7)
sin (𝑎𝑎 + 𝑏𝑏) = sin(𝑎𝑎) cos(𝑏𝑏) + sin(𝑏𝑏) cos(𝑎𝑎) (2.8)
Persamaan (2.5) dan (2.6) dapat ditulis kembali,
𝑥𝑥 = 𝑙𝑙1 cos𝜃𝜃1 + 𝑙𝑙2 cos𝜃𝜃1 cos 𝜃𝜃2 − 𝑙𝑙2 sin𝜃𝜃1 sin 𝜃𝜃2 (2.9)
𝑦𝑦 = 𝑙𝑙1 𝑠𝑠𝑠𝑠𝑠𝑠 𝜃𝜃1 + 𝑙𝑙2 sin𝜃𝜃1 cos 𝜃𝜃2 + 𝑙𝑙2 cos 𝜃𝜃1 sin 𝜃𝜃2 (2.10)
Dari dua persamaan terakhir ini kita dapat mencari 𝜃𝜃2 terlebih dahulu dengan
mengeluarkan cos 𝜃𝜃2 dari kedua persamaan. Dengan operasi pangkat dua pada kedua nya,
dan dikombinasikan diperoleh,
𝑐𝑐𝑐𝑐𝑠𝑠 𝜃𝜃2 = 𝑥𝑥2+𝑦𝑦2−𝑙𝑙12−𝑙𝑙22
2𝑙𝑙1𝑙𝑙2 (2.11)
Sehingga,
𝜃𝜃2 = arccos(𝑥𝑥2+𝑦𝑦2−𝑙𝑙12−𝑙𝑙22
2𝑙𝑙1𝑙𝑙2) (2.12)
Perhatikan kembali Gambar 2.17. Sudut 𝜃𝜃1 dapat dicari melalui,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
tan𝛼𝛼 = 𝑙𝑙2 sin 𝜃𝜃2𝑙𝑙2 cos 𝜃𝜃2+𝑙𝑙1
dan (2.13)
tan𝛽𝛽 = 𝑦𝑦𝑥𝑥
(2.14)
Sedangkan,
𝜃𝜃1 = 𝛽𝛽 − 𝛼𝛼 (2.15)
Dengan menggunakan hukum identitas trigonometri,
tan(𝑎𝑎 − 𝑏𝑏) = tan (𝑎𝑎)− tan(𝑏𝑏)1+tan (𝑎𝑎) tan (𝑏𝑏)
(2.16)
Didapat
tan 𝜃𝜃1 = (y(𝑙𝑙1+𝑙𝑙2 cos θ2) – x .𝑙𝑙2 sinθ2x(𝑙𝑙1+𝑙𝑙2 cosθ2) + y .𝑙𝑙2 sinθ2
) (2.17)
Sehingga 𝜃𝜃1 dapat dihitung,
𝜃𝜃1 = arctan(y(𝑙𝑙1+𝑙𝑙2 cos θ2) – x .𝑙𝑙2 sin θ2x(𝑙𝑙1+𝑙𝑙2 cos θ2) + y .𝑙𝑙2 sin θ2
) (2.18)
Alhasil, Persamaan (2.12) dan (2.18) adalah persamaan kinematika balik bagi lengan robot
dua sendi.
Analisis kinematik lengan robot dengan tiga sendi, yaitu
Gambar 2.18. Konfigurasi Lengan Robot Tiga Sendi [11]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Dengan cara analisis kinematik balik yang sama seperti pada persamaan (2.3)
hingga (2.8) koordinat 𝑃𝑃(𝑥𝑥𝑇𝑇 ,𝑦𝑦𝑇𝑇) dapat diperoleh,
𝑥𝑥𝑇𝑇 = 𝑙𝑙1 cos 𝜃𝜃1 + 𝑙𝑙2 cos(𝜃𝜃1 + 𝜃𝜃2) + 𝑙𝑙3 cos(𝜃𝜃1 + 𝜃𝜃2 + 𝜃𝜃3) (2.19)
𝑦𝑦𝑇𝑇 = 𝑙𝑙1 sin𝜃𝜃1 + 𝑙𝑙2 sin(𝜃𝜃1 + 𝜃𝜃2) + 𝑙𝑙3 sin(𝜃𝜃1 + 𝜃𝜃2 + 𝜃𝜃3) (2.20)
Dengan
𝛹𝛹 = (𝜃𝜃1 + 𝜃𝜃2 + 𝜃𝜃3) (2.21)
Dimana, 𝛹𝛹 adalah sudut arah hadap lengan-3 terhadap sumbu X. Sehingga, jika
(𝑥𝑥𝑇𝑇 ,𝑦𝑦𝑇𝑇) dan (𝑥𝑥,𝑦𝑦) diketahui maka 𝜃𝜃2 dan 𝜃𝜃1 dapat dicari dengan menggunakan
Persamaan (2.12) dan (2.18). Dari (𝑥𝑥𝑇𝑇 , 𝑦𝑦𝑇𝑇) dan (𝑥𝑥, 𝑦𝑦), 𝛹𝛹 juga dapat dicari, sehingga 𝜃𝜃3
dapat ditentukan[11].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III
PERANCANGAN SISTEM Bab ini menjelaskan mengenai perancangan purwarupa lengan robot dengan 4 Degree
Of Freedom (DOF) yang dikontrol dari Android berbasis Arduino. Perancangan sistem yang
akan dibahas pada bab ini terdiri dari dua bagian, yaitu perangkat keras (hardware) dan
perangkat lunak (software). Perancangan sistem yang dibahas dalam bab ini terbagi dalam
tiga bagian besar, yaitu:
a. Proses Kerja Sistem.
b. Perancangan perangkat keras
- Perancangan lengan robot.
- Rangkaian pengendali utama dan motor servo.
c. Perancangan perangkat lunak
- Diagram Alir Utama.
- Perangkat lunak pengendali utama dengan Arduino IDE.
- Perangkat lunak antarmuka dengan Android.
3.1. Proses Kerja Sistem Gambar 3.1. merupakan blok diagram sistem. Pada blok diagram tersebut,
perangkat keras yang akan dibuat terdiri dari lima bagian, yaitu sistem dari sistem operasi
Android, Modul Bluetooth HC-05, Arduino Mega 2560, Servo Controller, dan Motor RC
Servo. Rangkaian kontroler Arduino Mega 2560 pada prinsipnya akan menerima data yang
dikirimkan dari sistem operasi Android melalui Bluetooth yang akan diolah oleh modul
Bluetooth HC-05 yang terhubung secara serial dengan Arduino Mega 2560.
Data yang diterima oleh kontroler Arduino Mega 2560 tersebut akan diolah.
Selanjutnya rangkaian kontroler Arduino Mega 2560 memberikan instruksi pada Motor RC
Servo yang dikendalikan oleh Servo Controller.
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Modul Bluetooth
HC-05
Arduino Mega 2560
RC-Servo(Sendi 1)
RC-Servo(Sendi 2)
RC-Servo(Sendi 3)
RC-Servo(Sendi 4)
SO AndroidBT
Servo Controller
Gambar 3.1. Blok Diagram Sistem
3.2. Perancangan Perangkat Keras ( Hardware )
3.2.1. Desain Lengan Robot Gambar 3.2. merupakan gambar keseluruhan design 3D lengan robot menulis kata
berbasis mikrokontroler arduino. Lengan robot ini disusun dengan 5 bagian utama sebagai
aktuator yang akan digerakkan dengan motor RC servo. Kelima bagian utama ini disebut
sebagai penghubung atau link, yang meliputi :
1. Base (bagian dasar)
2. Shoulder (bagian bahu)
3. Elbow (bagian siku)
4. Pitch (bagian pergelangan)
5. End-Effector (bagian ujung yang diberi spidol)
Sedangkan bagian yang berperan sebagai penggerak (sendi) berdasarkan gerakkan
motor RC servo disebut sebagai joint.
Gambar 3.2. Tampilan Desain Gambar 3D Lengan Robot Menulis Kata
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Gambar 3.3. merupakan design 3D bagian dasar (base) yang berbentuk lingkaran
berdiameter 25cm. Bagian ini terhubung dengan sebuah as yang memanjang ke bawah dan
mempunyai roda gigi. Roda gigi pada as berhubungan dengan roda gigi pada sebuah motor
RC servo yang digunakan sebagai penggerak. Base bergerak secara rotasi dan dapat
menyebabkan perubahan posisi pada lengan-lengan penghubung yang lain.
Gambar 3.3. Bagian Base dan Penggeraknya
Gambar 3.4. merupakan dimensi dari lengan robot dimana bagian shoulder
memiliki panjang lengan 18cm dan bergerak secara rotasi dengan 2 buah motor RC servo.
Bagian elbow memiliki panjang lengan 12cm dan bergerak secara rotasi dengan sebuah
motor RC servo. Bagian pitch memiliki panjang lengan 5cm dan bergerak secara rotasi
dengan sebuah motor RC servo. Bagian end-effector adalah bagian yang digunakan untuk
mencekam spidol. Panjang end-effector sampai pada ujung spidol memiliki panjang 10cm.
Total keseluruhan panjang lengan robot dari pangkal shoulder sampai pada ujung spidol
adalah 45cm. Besarnya dimensi berupa panjang yang dimiliki oleh keseluruhan
penghubung (link) menentukan kemampuan sebagai jangkauan lengan robot ketika
melakukan gerakkan.
Gambar 3.4. Dimensi Lengan Robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Bagian yang berperan sebagai penggerak adalah sendi (joint) terhubung langsung
dengan motor RC servo. Gerakkan yang terjadi pada joint di setiap bagian pangkal dari
link adalah rotasi. Gerakkan secara rotasi menyebabkan adanya perbedaan besarnya sudut-
sudut yang terjadi pada setiap penghubung (link) dari titik acuan awal yaitu pada bagian
pangkal dari bahu (shoulder).
(a) (b)
Gambar 3.5. (a) Desain 3D End-Effector Lengan Robot. (b) Desain 3D Whiteboard
Gambar 3.5.a adalah desain 3D end-effector dari prototipe lengan robot yang akan
dibuat. Berfungsi sebagai tempat menaruh spidol yang akan digunakan untuk menulis.
Bagian ini akan ditempelkan pada bagian ujung dari lengan 3 pada lengan robot dengan
bantuan 2 buah baut untuk mengunci end-effector dengan lengan 3. Gambar 3.5.b adalah
desain dari whiteboard yang akan digabung dengan meja.
Lengan robot menulis kata ini menggunakan motor RC servo sebanyak 5 buah.
Pemilihan motor RC servo yang digunakan pada setiap joint berdasarkan pada kemampuan
yang harus dimiliki setiap joint untuk mengangkat beban. Beban dapat berupa berat lengan
(link). Kemampuan motor untuk berputar dengan suatu beban merupakan gaya putar yang
disebut torsi (torque). Berikut ini perkiraan berat lengan penghubung (link) pada
perancangan lengan robot:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Tabel 3.1. Tabel Perkiraan Berat Lengan dan Beban yang Diangkat Lengan
NO. Lengan Penghubung (link) Perkiraan Berat setiap lengan
Beban yang diangkat setiap
lengan
1. End-Effector 200gr 200gr
2. Pitch 120gr 320gr
3. Elbow 200gr 520gr
4. Shoulder 500gr 1020gr
5. Base 200gr 200gr
Pada tabel 3.1. untuk perkiraan berat setiap lengan merupakan total berat dari
material lengan dan motor RC servo yang menempel pada lengan. Sedangkan pada kolom
beban yang diangkat setiap lengan merupakan penjumlahan berat dari keseluruhan beban
yang harus diangkat oleh setiap lengan. Perancangan mekanik untuk desain lengan robot
menulis kata menggunakan material aluminium karena ringan dan mudah dikerjakan. Pada
tabel 3.1. bagian base diasumsikan memiliki berat yang ringan walaupun terletak paling
dasar karena bagian base tidak terbebani oleh berat keseluruhan dari prototype lengan
robot karena seluruh lengan robot sudah ditopang oleh empat buah tiang penyangga.Pada
perancangan mekanik motor RC servo yang digunakan hanya untuk memutar bagian base
yang memiliki torsi yang tidak terlalu besar yaitu diperkirakan sebesar 10 kgf.cm.
Pada bagian pitch beban yang harus diangkat adalah 320gram karena bagian pitch
selain mengangkat lengannya sendiri juga harus mengangkat seluruh bagian end-effector.
Bagian pitch memiliki panjang 5 cm dan bagian end-effector sampai ujung spidol memiliki
panjang 10 cm, sehingga panjang lengan yang harus diangkat adalah 15 cm. Berikut adalah
perhitungan untuk merancang torsi pada bagian pitch :
m = 320gram = 0,32 kg
r = 15 cm
F = m x a = 0,32 kg x 10 m/s2 = 3,2 N = 3,2 Kg m/s2
3,2 N x 0,102 = 0,3264 Kg
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
τ = F × r = 0,3264 Kg × 15 cm = 4,896 Kg.cm
Pada bagian elbow beban yang harus diangkat adalah 520 gram, sedangkan panjang
lengan yang harus diangkat motor RC servo adalah 27 cm yang dihitung dari panjang
lengan elbow, panjang lengan pitch dan panjang end-effector. Kebutuhan torsi motor RC
servo pada perancangan lengan robot :
m = 520gram = 0,52 kg
r = 27 cm
F = m x a = 0,52 kg x 10 m/s2 = 5,2 N = 5,2 Kg m/s2
5,2 N x 0,102 = 0,5304 Kg
τ = F × r = 0,5304 Kg × 27 cm = 14,3208 Kg.cm
Pada bagian shoulder beban yang harus diangkat adalah 1020 gram, sedangkan
panjang lengan yang harus diangkat motor RC servo adalah 45 cm yang dihitung dari
panjang lengan shoulder, panjang lengan elbow, panjang lengan pitch dan panjang end-
effector. Kebutuhan torsi motor RC servo pada perancangan lengan robot :
m = 1020 gram = 1,020 kg
r = 45 cm
F = m x a = 1,020 kg x 10 m/s2 = 10,20 N = 10,20 Kg m/s2
10,20 N x 0,102 = 1,0404 Kg
τ = F × r = 1,0404 Kg × 45 cm = 46,818 Kg.cm
Berdasarkan perhitungan kebutuhan torsi pada bagian shoulder memang
menunjukkan torsi yang dibutuhkan sangat besar. Hal tersebut akan membuat kesulitan
tersendiri dalam mencari motor RC servo dengan torsi yang sangat besar. Oleh sebab itu,
pada bagian shoulder perancangan menggunakan 2 buah motor RC servo dengan torsi
lebih besar dari 23,409 Kg.cm (46,818 Kg.cm : 2 = 23,409 Kg.cm) yang akan dipasang
pada shoulder 1 dan shoulder 2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Gambar 3.6. Desain 3D Keseluruhan Prototipe Lengan Robot
Pada gambar 3.6. merupakan tampilan desain 3D lengan robot. Lengan robot
tersebut memiliki 3 buah sumbu koordinat, yaitu X, Y, dan Z. Koordinat tersebut berguna
untuk mengetahui posisi dari end point lengan robot tersebut.
Desain lengan robot ini dikendalikan oleh motor servo yang memiliki gerakan yang
terbatas. Motor servo yang digunakan memiliki batas putar. Batas putar motor servo
tersebut adalah 1800 . Tetapi sudut yang digunakan pada lengan robot tidak digunakan
pada posisi maksimal. Sudut yang digunakan disesuaikan dengan sudut maksimal pada
lengan robot. Sudut maksimal yang dapat di jangkau oleh lengan robot sebagai berikut :
Tabel 3.2. Tabel Perkiraan Panjang Lengan dan Sudut Maksimal yang Dapat Dijangkau
NO. Lengan Penghubung (link) Panjang lengan Sudut maksimal yang
dapat dijangkau
1. Gripper + benda 10cm 1800
2. Pitch 5cm 1800
3. Elbow 12cm 1800
4. Shoulder 18cm 1800
5. Base ( berputar pada poros ) 0cm 900
Pada analisis kinematika lengan robot ( robot manipulator ) secara geometri akan
menggunakan pendekatan trigonometri dan pitagoras segitiga, tetapi hal tersebut hanya
z x
y
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
dapat dilakukan pada bidang 2D. Kinematika lengan robot tersebut dapat dianalisis secara
2D tetapi dilakukan dengan cara melakukan analisis tersebut dari 2 pandangan yang
berbeda. Pandangan yang digunakan adalah pandangan atas dan pandangan samping. Dari
pandangan atas dapat dianalisis koordianat X dan Y. Pada pandangan samping dapat
dianalisis koordianat X dan Z.
Gambar 3.7. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Atas
Gambar 3.8. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Samping
Berdasarkan Gambar 3.7. dan Gambar 3.8. diatas, dapat dilakukan pencarian nilai
dari sudut joint (𝜃𝜃1,𝜃𝜃2,𝜃𝜃3,𝑑𝑑𝑑𝑑𝑑𝑑 𝜃𝜃4) satu per satu. Langkah pertama yang akan dilakukan
adalah mencari nilai sudut 𝜃𝜃1. Untuk mempermudah perhitungan, maka lengan robot
digambarkan sumbu X, Y, dan Z. Berdasarkan wilayah pergerakannya, sudut 𝜃𝜃1 bergerak
di wilayah horisontal atau berada pada sumbu X dan Y, sedangkan sumbu Z tidak
Y
X
Z
X
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
berpengaruh pada pergerakan sudut 𝜃𝜃1. Hal ini dikarenakan rotasi sudut 𝜃𝜃1 searah dengan
sumbu Z. Maka dari itu, saat lengan robot tersebut dipandang dari atas, dapat dianalogikan
seperti lengan robot satu sendi, sehingga nilai sudut 𝜃𝜃1 dapat dicari dengan persamaan 2.2.
Apabila dilihat dengan sudut pandang 2D, maka:
Gambar 3.9. Desain 2D Sederhana Lengan Robot Tampak Atas
Dari Gambar 3.9. diperoleh nilai Px dan Py. Dari kedua nilai tersebut dapat
diperoleh nilai sudut 𝜃𝜃1 dengan menerapkan persamaan 2.2. Berdasarkan persamaan 2.2
maka nilai sudut 𝜃𝜃1 sebagai berikut :
Diketahui :
Px = 30 cm
Py = 15 cm
Berdasarkan persamaan 2.2 maka diperoleh sudut 𝜃𝜃1 sebagai berikut :
𝜃𝜃1 = arctan(3015
)
𝜃𝜃1 = 63,43° Setelah mendapatkan nilai sudut 𝜃𝜃1, maka langkah selanjutnya adalah mencari nilai
sudut 𝜃𝜃2, nilai sudut 𝜃𝜃3, serta nilai sudut 𝜃𝜃4. Berdasarkan Gambar 3.10. sudut 𝜃𝜃2, sudut 𝜃𝜃3,
serta sudut 𝜃𝜃4 berada di wilayah pergerakan yang sama, yaitu wilayah vertical. Sehingga
ketiga sudut tersebut akan saling mempengaruhi. Hal ini mengakibatkan pentingnya
menentukan nilai sudut mana yang akan dihitung terlebih dahulu. Pada awal perancangan
sudah ditetapkan bahwa lengan 3 dan end-effector akan selalu tegak lurus terhadap bidang
horisontal atau XY. Oleh karena itu, untuk mempermudah perhitungan maka nilai sudut 𝜃𝜃4
𝜃𝜃1
𝑙𝑙
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
akan ditetapkan sebelumnya dan untuk mencari nilai sudut yang lainnya akan dimulai dari
sudut yang berada lebih dekat dengan end-effector. Yakni, sudut 𝜃𝜃3 kemudian sudut 𝜃𝜃2.
Gambar 3.10. Desain 2D Sederhana Lengan Robot Tampak Samping
Dari Gambar 3.10. diperoleh nilai x dan z serta panjang lengan 1, lengan 2, dan
lengan 3 yang sebelumnya telah ditentukan. Dari komponen-komponen tersebut dapat
diperoleh nilai sudut 𝜃𝜃3, serta sudut 𝜃𝜃2 dengan menerapkan persamaan 2.13 dan persamaan
2.19. Berdasarkan persamaan 2.13 maka nilai sudut 𝜃𝜃3 sebagai berikut :
Diketahui :
x = 20 cm
z = 6 cm
𝑙𝑙1 = 18 cm
𝑙𝑙2 = 12 cm
Mencari nilai sudut 𝜃𝜃3 berdasarkan persamaan 2.13 maka diperoleh sebagai berikut:
𝜃𝜃3 = arccos(202+62−182−122
2𝑥𝑥18𝑥𝑥12)
𝜃𝜃3 = 94,24°
Dikarenakan posisi lengan 2 berada dibawah garis perpanjangan lengan 1 yang
berada pada sudut 0°, maka nilai sudut dari 𝜃𝜃3 menjadi negatif.sehingga nilai sudut 𝜃𝜃3
menjadi -94,240.
Berdasarkan persamaan 2.19 maka nilai sudut 𝜃𝜃2 sebagai berikut :
Diketahui :
x = 20 cm
z = 6 cm
𝑙𝑙1 = 18 cm
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
𝑙𝑙2 = 12 cm
Mencari nilai sudut 𝜃𝜃2 berdasarkan persamaan 2.19 maka diperoleh sebagai berikut:
𝜃𝜃2 = arctan(6(18+12 cos θ3) – 20 x 12 sin θ320(18+12 cos θ3) + 6 x 12 sin θ3
)
𝜃𝜃2 = 51,66° Berdasarkan persamaan 2.22 maka nilai sudut 𝜃𝜃4 sebagai berikut :
Diketahui :
𝜃𝜃2 = 51,66°
𝜃𝜃3 = −94,24°
𝜓𝜓 = 180°
Mencari nilai sudut 𝜃𝜃4 berdasarkan persamaan 2.22 maka diperoleh sebagai berikut:
𝜃𝜃4 = −94,24° − 51,66° + 180°
𝜃𝜃4 = 34,1°
Sebuah kata terdiri dari beberapa huruf, maka dari itu dalam menulis sebuah kata
lengan robot akan menulis satu per satu huruf. Dalam penelitian ini huruf yang digunakan
adalah huruf kapital dengan jenis huruf seperti fourteen-segment. Dimana dalam setiap
huruf tersebut terdiri dari beberapa titik acuan. Gambar 3.11. merupakan contoh beberapa
titik acuan di tiap huruf dan ukuran huruf dalam menulis kata dengan jarak spasi 1cm.
Gambar 3.12. merupakan bentuk keseluruhan huruf beserta titik acuannya. Titik acuan ini
yang akan dituju oleh end-effector dari lengan robot tersebut dan antar titik acuan akan
saling terhubung dengan bantuan spidol yang berada pada end-effector dan menempel di
whiteboard yang sekaligus akan membentuk garis antar titik acuan. Kemudian, kumpulan
garis-garis antar titik acuan ini akan membentuk sebuah huruf. Dalam mencapai satu titik
acuan dibutuhkan nilai-nilai sudut dari setiap sendi pada lengan robot tersebut. Maka dari
itu, dalam mencari nilai-nilai sudut tersebut dapat dilakukan dengan cara seperti diatas
yang berdasarkan persamaan-persamaan analisa kinematika balik sebelumnya.
Gambar 3.11. Contoh Beberapa Titik Acuan di tiap Huruf serta Dimensi Huruf
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 3.12. Bentuk Keseluruhan Huruf Beserta Titik Acuannya.
3.2.2. Perancangan Pengendali Utama Rangkaian pengendali utama berfungsi untuk mengontrol gerakan lengan robot.
Pengendali tersebut terdiri dari Arduino Mega 2560, Modul Bluetooth HC-05 dan Servo
Controller. Seperti Gambar 3.13. Arduino Mega 2560 dan modul Bluetooth HC-05
dihubungkan dengan cara komunikasi serial. Pin Tx pada modul Bluetooth HC-05
dihubungkan pada pin nomor 10 pada Arduino Mega 2560, kemudian pin Rx pada modul
Bluetooth HC-05 dihubungan pada pin nomor 11 di Arduino Mega 2560 dimana pin nomor
10 dan 11 pada Arduino sudah diatur sebagai komunikasi serial pada software. Selain itu
Arduino Mega 2560 dikomunikasikan dengan Servo Controller. Komunikasi tersebut
menggunakan komunikasi I2C, komunikasi tersebut memanfaatkan pin SDA dan SCL pada
Arduino Mega 2560 dan pada Servo Controller. Komunikasi I2C dipilih agar pengiriman
data lebih cepat.
Servo Controller tersebut dapat menggerakkan 16 servo secara bersamaan atau
sekuensial. Servo controller tersebut menggunakan sumber tegangan yang terpisah dengan
Arduino.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Gambar 3.13. Rangkaian Keseluruhan Sistem
3.2.3. Perancangan Rangkaian Motor Servo Aktuator yang digunakan adalah motor servo. Motor servo yang digunakan
berjumlah 5 buah terdiri dari 1 buah untuk menggerakkan base, 2 buah untuk
menggerakkan lengan 1, 1 buah untuk menggerakkan lengan 2 dan 1 buah untuk
menggerakkan lengan 3.
Gambar 3.14. Gambar Rangkaian Servo Controller
Rangkaian Motor servo tersebut akan dihubungkan secara langsung dengan Servo
Controller seperti terlihat di Gambar 3.14. Motor servo tersebut digerakkan dengan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
menggunakan Servo Controller yang dihubungkan dengan Arduino Mega 2560. Servo
Controller dengan Arduino Mega 2560 yang dihubungkan dengan komunikasi I2C melalui
port SDA dan SCL. Port tersebut digunakan untuk transfer data serial antara Servo
Controller dengan Arduino Mega 2560. Sehingga pada saat Arduino Mega 2560
memberikan perintah tertentu pada Servo Controller. Maka Servo Controller akan
langsung melakukan perintah yang diberikan untuk menggerakkan moto servo tersebut.
3.3. Perancangan Perangkat Lunak ( Software )
3.3.1. Diagram Alir Android Mulai
Aktifkan Bluetooth pada Android
Selesai
Hubungkan dengan Bluetooth
HC-05
Pairing dan Paired
Buka Aplikasi Arduino Bluetooth
Terminal
Hubungkan dengan Bluetooth
HC-05
Terhubung
Sudah terhubung?
Ya
Tidak
Gambar 3.15. Diagram Alir Android
Gambar 3.15. merupakan diagram alir untuk sistem pada android. Dimana
Bluetooth pada Android dihubungkan dengan modul Bluetooth HC-05. Setelah Bluetooth
dari Android terhubung dengan modul Bluetooth HC-05, kemudian hubungkan aplikasi
Android Bluetooth Terminal dengan modul Bluetooth HC-05.Setelah proses ini android
telah siap untuk mengirimkan data ke mikrokontroler.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
3.3.2. Diagram Alir Robot Menulis Kata Mulai
Inisialisasi Port
Robot bergerak ke posisi home
Karakter 1? Karakter 6?
Masukkan karakter ke
berapa?
Data diterima oleh mikro
Input huruf
Input huruf
Apakah huruf A.....Z?
Apakah huruf A.....Z?
Ambil data huruf
Kirim data dari mikro ke servo
controller
Servo Bergerak
Ambil data huruf
Kirim data dari mikro ke servo
controller
Servo Bergerak
Robot bergerak ke posisi home
Selesai
Ya Ya
Tidak Tidak
Ya Ya
Tidak
Tidak
Gambar 3.16. Diagram Alir Program Menulis Kata
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Gambar 3.16. merupakan diagram alir lengan robot dalam menulis huruf yang
digabungkan menjadi sebuah kata. Data yang diterima oleh mikrokontroler dari Android
akan diolah untuk mengetahui karakter ke berapa dan huruf yang diinginkan. Kemudian
apabila huruf yang dikirimkan telah diketahui, maka mikrokontroler akan mencari data
huruf tersebut. Dimana data huruf tersebut berisikan pergerakan motor servo dalam
menulis satu huruf yang telah tersimpan di program. Setelah data huruf itu ditemukan,
mikrokontroler akan melanjutkan data tersebut ke Servo Controller untuk dieksekusi.
Setelah satu huruf terpenuhi, maka lengan robot akan kembali menuju posisi aman dan
menunggu masukkan selanjutnya.Kemudian, apabila sudah selesai dan tidak ingin
melanjutkan robot akan kembali ke posisi home.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV
HASIL DAN PEMBAHASAN
Pada bab ini hasil implementasi alat beserta pembahasan dibagi menjadi dua bagian
yaitu hasil perancangan pada perangkat keras (Hardware) dan hasil perancangan pada
perangkat lunak (Software). Hasil implementasi lengan robot menulis kata yang
dikendalikan oleh aplikasi pada android ini secara keseluruhan sudah sesuai dengan
perancangan pada BAB III.
4.1. Hasil Perancangan Perangkat Keras Hasil perancangan perangkat keras pada lengan robot menulis kata yang
dikendalikan oleh aplikasi pada android ini terdiri atas tiga bagian, diantaranya adalah
papan untuk menulis, mekanik lengan robot dan rangkaian pengendali pada lengan robot.
Gambar 4.1. merupakan bentuk keseluruhan lengan robot menulis kata yang dikendalikan
oleh aplikasi pada android.
Gambar 4.1. Keseluruhan Bentuk Lengan Robot Menulis Kata
1
2
3
4
5
6
Keterangan :
1. Bagian Papan untuk menulis
2. Bagian Pitch dan End Effector
3. Bagian Elbow 4. Bagian Shoulder 5. Bagian Base 6. Rangkaian pengendali
lengan robot
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 4.2. merupakan motor servo yang digunakan untuk menggerakkan bagian
shoulder, elbow, dan pitch yang disambung dengan end effector. Bagian shoulder
menggunakan dua buah servo Hitec HS-805MG Mega Giant Scale yang mempunyai torsi
19,8 - 24,7 kg/cm pada kondisi tegangan 4,8 - 6 volt dan menggunakan metal gear. Bagian
elbow menggunakan sebuah servo FeeTech FT5316M yang mempunyai torsi 14,4 - 15,5
kg/cm pada kondisi tegangan 4,8 - 6 volt dan menggunakan metal gear. Pada bagian pitch
menggunakan sebuah servo Hitech HS-645MG Ultra Torque yang mempunyai torsi 8 – 10
kg/cm pada kondisi tegangan 4,8 – 6 volt dan menggunakan metal gear.
Gambar 4.2. Motor Servo Sebagai Penggerak Lengan Robot
Selain itu, motor servo juga digunakan untuk menggerakkan bagian base. Motor
servo tersebut telah disambung dengan transmisi roda gigi dengan rasio 1:1 sehingga
putaran bagian base sama dengan putaran motor servo seperti yang terlihat pada gambar
4.3. Bagian ini menggunakkan servo FeeTech FT5316M yang mempunyai torsi 14,3 – 15,5
kg/cm pada kondisi tegangan 4,8 – 6 volt dan menggunakan metal gear.
Gambar 4.3. Motor Bagian Base yang Dihubungkan dengan Transmisi Gear
Keterangan :
1. Motor untuk bagian pitch
2. Motor untuk bagian elbow
3. Motor untuk bagian shoulder
1
2
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Hasil perancangan rangkaian pengendali pada lengan robot terdiri dari konektor
motor servo, mikrokontroler Arduino Mega 2560, servo controller dan modul bluetooth
HC-05. Gambar 4.4 merupakan konektor motor servo yang digunakan untuk
menghubungkan motor servo dengan servo controller. Gambar 4.5 merupakan
perancangan rangkaian pengendali yang dihubungkan secara stackable.
Gambar 4.4. Konektor Motor Servo
Gambar 4.5. Rangkaian Pengendali Lengan Robot Menulis Kata
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
4.2. Hasil Pengujian
4.2.1 Pengujian Koneksi Bluetooth
Pengujian koneksi bluetooth dilakukan untuk mengetahui jarak transmisi antara
bluetooth pada smartphone Android dengan bluetooth HC-05 yang telah terintegrasi
dengan mikrokontroler Arduino Mega 2560. Pengujian koneksi bluetooth ini dilakukan
dengan cara melakukan transmisi data antara modul bluetooth HC-05 pada mikrokontroler
Arduino Mega 2560 dengan bluetooth pada smartphone Android melalui aplikasi Arduino
Bluetooth Terminal dan IDE Arduino seperti yang terlihat pada Gambar 4.6. Aplikasi
Arduino Bluetooth Terminal dapat diperoleh melalui aplikasi google playstore pada
Android.
Gambar 4.6. Ilustrasi Pengujian Koneksi Bluetooth
Gambar 4.7 merupakan listing program pengujian koneksi bluetooth. Pengujian
dilakukan dengan cara melakukan transmisi data antar bluetooth dengan jarak tertentu.
Gambar 4.8 merupakan interface dari aplikasi Arduino Bluetooth Terminal ketika
melakukan transmisi data. Data yang akan dikirim ke mikrokontroler dimasukkan pada
kolom insert command lalu kirimkan dengan menekan tombol Send. Kemudian, data yang
diterima oleh Android akan ditampilkan pada kolom bagian bawah. Gambar 4.9
merupakan tampilan serial monitor pada IDE Arduino ketika menerima data dari Android.
Data yang diterima oleh mikrokontroler melalui IDE Arduino adalah data kode desimal
dari masukkan yang dikirimkan oleh Android.
IDE Arduino
Modul bluetooth HC-05
Arduino Bluetooth Terminal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Gambar 4.7. Listing Program Pengujian Koneksi Bluetooth
Gambar 4.8. Tampilan Interface Arduino Bluetooth Terminal
Inisialisasi
Pembacaan data dari Android
Pengiriman data ke Android dan serial monitor IDE Arduino
Input data
Data dari mikrokontroler.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Gambar 4.9. Tampilan Serial Monitor pada IDE Arduino
Tabel 4.1 merupakan hasil dari pengujian koneksi bluetooth pada smartphone
Android dengan bluetooth HC-05 yang telah terintegrasi dengan mikrokontroler. Dari hasil
pengujian tersebut diperoleh bahwa jarak maksimal transmisi data dengan bluetooth HC-05
adalah 15 meter.
Tabel 4.1 Pengujian Koneksi bluetooth
Jarak (Meter) Keterangan
1 Koneksi lancar (Data diterima) 2 Koneksi lancar (Data diterima) 3 Koneksi lancar (Data diterima) 4 Koneksi lancar (Data diterima) 5 Koneksi lancar (Data diterima) 6 Koneksi lancar (Data diterima) 7 Koneksi lancar (Data diterima) 8 Koneksi lancar (Data diterima) 9 Koneksi lancar (Data diterima) 10 Koneksi lancar (Data diterima) 11 Koneksi lancar (Data diterima) 12 Koneksi lancar (Data diterima) 13 Koneksi lancar (Data diterima) 14 Koneksi lancar (Data diterima) 15 Koneksi lancar (Data diterima) 16 Koneksi tidak lancar (Data diterima) 17 Koneksi tidak lancar (Data diterima) 18 Koneksi terputus (Data tidak diterima)
Data yang diterima oleh
mikrokontroler.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
4.2.2. Pengujian Kinematika Lengan Robot
Berdasarkan pembahasan di BAB III, maka perhitungan kinematika lengan robot
akan menggunakan pendekatan trigonometri dan pitagoras segitiga. Gambar 4.10
merupakan posisi home lengan robot menulis kata. Gambar 4.11 dan 4.12 merupakan
desain 2D dari posisi home lengan robot dari dua pandangan yang berbeda yakni
pandangan atas dan pandangan samping. Hal ini dilakukan untuk mempermudah proses
perhitungan sudut setiap joint dari lengan robot, karena pendekatan trigonometri dan
pitagoras segitiga hanya dapat dilakukan pada bidang 2D. Berdasarkan gambar tersebut
dapat dilakukan pencarian nilai dari sudut joint (𝜃𝜃1,𝜃𝜃2,𝜃𝜃3,𝑑𝑑𝑑𝑑𝑑𝑑 𝜃𝜃4) dengan menggunakan
persamaan 2.1, 2.12, dan 2.18.
Gambar 4.10. Posisi Home Lengan Robot
Gambar 4.11. Penyederhanaan 2D Lengan Robot Tampak Atas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Gambar 4.12. Penyederhanaan 2D Lengan Robot Tampak Samping
Dari Gambar 4.11 diperoleh nilai Px dan Py. Dari kedua nilai tersebut dapat
diperoleh sudut 𝜃𝜃1′ dengan menerapkan persamaan 2.1 maka, nilai sudut 𝜃𝜃1′ dapat
diperoleh sebagai berikut :
Diketahui :
Px = 10,5 cm
Py = 5 cm
Berdasarkan persamaan 2.1 maka diperoleh sudut 𝜃𝜃1′ sebagai berikut :
𝜃𝜃1′ = arctan( 510,5
)
𝜃𝜃1′ = 25,46°
Dikarenakan arah putaran motor dimulai dari sumbu Y sehingga nilai sudut yang
digunakan adalah nilai sudut 𝜃𝜃1. Nilai sudut 𝜃𝜃1 dapat diperoleh sebagai berikut :
𝜃𝜃1 = 90° − θ1′
𝜃𝜃1 = 64,54°
Setelah mendapatkan nilai sudut 𝜃𝜃1, maka selanjutnya adalah mencari nilai sudut
𝜃𝜃2, nilai sudut 𝜃𝜃3, serta nilai sudut 𝜃𝜃4. Berdasarkan Gambar 4.12 dapat diperoleh nilai x
dan z serta panjang lengan 1, lengan 2, dan lengan 3 yang telah ditentukan sebelumnya.
Dari komponen – komponen tersebut dapat diperoleh nilai sudut 𝜃𝜃3, serta sudut 𝜃𝜃2 dengan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
menerapkan persamaan 2.12 dan persamaan 2.18. Berdasarkan persamaan 2.12 maka nilai
sudut 𝜃𝜃3 sebagai berikut :
Diketahui :
OE = x = -1,91 cm
EB = z = 28 cm
𝑙𝑙1 = 18 cm
𝑙𝑙2 = 12 cm
Mencari nilai sudut 𝜃𝜃3 berdasarkan persamaan 2.13 maka diperoleh sebagai berikut:
𝜃𝜃3 = arccos((−1,91)2+282−182−122
2𝑥𝑥18𝑥𝑥12)
𝜃𝜃3 = 42,27°
Dikarenakan posisi lengan 2 berada dibawah garis perpanjangan lengan 1 yang
berada pada sudut 0°, maka nilai sudut dari 𝜃𝜃3 menjadi negatif.sehingga nilai sudut 𝜃𝜃3
menjadi -42,270.
Berdasarkan persamaan 2.18 maka nilai sudut 𝜃𝜃2 sebagai berikut :
Diketahui :
OE = x = -1,91 cm
EB = z = 28 cm
𝑙𝑙1 = 18 cm
𝑙𝑙2 = 12 cm
Mencari nilai sudut 𝜃𝜃2 berdasarkan persamaan 2.18 maka diperoleh sebagai berikut:
𝜃𝜃2 = arctan(28(18+12 cos θ3) –(−1,91) x 12 sin θ3(−1,91)(18+12 cos θ3) + 28 x 12 sin θ3
)
𝜃𝜃2 = 69,32°
Dikarenakan posisi lengan 1 berada kuadran 2 yang berada pada lebih dari sudut
90°, maka nilai sudut 𝜃𝜃2 menjadi 180° − 𝜃𝜃2. Sehingga nilai sudut 𝜃𝜃2 menjadi 110,680.
𝛹𝛹 adalah sudut arah hadap lengan-3 terhadap sumbu X. Sehingga, nilai 𝛹𝛹 dapat
diperoleh berdasarkan persamaan 2.1. Berdasarkan persamaan 2.1 maka nilai sudut 𝛹𝛹
sebagai berikut :
Diketahui :
GH = 11,068 cm
GI = -4,6 cm
Mencari nilai sudut 𝛹𝛹 berdasarkan persamaan 2.1 maka diperoleh sebagai berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
𝛹𝛹 = arctan( −4,611,068)
𝛹𝛹 = −23° Berdasarkan persamaan 2.21 maka nilai sudut 𝜃𝜃4 sebagai berikut :
Diketahui :
𝜃𝜃2 = 110,68°
𝜃𝜃3 = −42,27°
𝜓𝜓 = −23°
Mencari nilai sudut 𝜃𝜃4 berdasarkan persamaan 2.22 maka diperoleh sebagai berikut:
𝜃𝜃4 = −23° − 110,68° + 42,27°
𝜃𝜃4 = −91,41°
Seperti yang telah dijelaskan di BAB III, bahwa lengan robot akan menulis kata
dengan cara menulis huruf satu per satu. Setiap bentuk huruf telah memiliki beberapa titik
acuan. Gambar 4.13 merupakan posisi dari titik acuan dalam satu posisi karakter. Titik
acuan inilah yang akan dituju oleh lengan robot dengan menggunakan perhitungan
kinematika yang telah dijabarkan diatas.
Gambar 4.13. Posisi Titik Acuan
Gambar 4.14. Hasil Implementasi Titik Acuan pada Whiteboard
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Gambar 4.14 merupakan hasil implementasi titik acuan pada posisi karakter
pertama. Titik acuan tersebut akan digunakan lengan robot untuk membuat garis acuan
yang akan membentuk sebuah huruf. Tabel 4.2 merupakan data hasil perhitungan
kinematika setiap titik acuan per posisi karakter.
Tabel 4.2. Data Hasil Perhitungan Kinematika Setiap Titik Acuan
L1 = 18cm L2=12cm L3=13cm Posisi Px
(cm) Py
(cm) OE (cm)
EB (cm) θ1 ( o ) θ2 ( o ) θ3 ( o ) θ4 ( o ) ψ (o)
Home 18 0 -2 28 90 111 42 91 -23 Posisi Karakter 1
Titik 1 18 -14 10 27 52 83 33 34 16 Titik 2 18 -14 10 27 52 83 33 45 5 Titik 3 18 -14 10 27 52 83 33 51 -1 Titik 4 18 -13,5 9,5 27 53 85 36 48 1 Titik 5 18 -13,5 9,5 27 53 85 36 47 2 Titik 6 18 -13,5 9,5 27 53 85 36 52 -3 Titik 7 18 -11 9 27 59 87 40 38 9 Titik 8 18 -11 9 27 59 87 40 47 0 Titik 9 18 -11 9 27 59 87 40 56 -9
Posisi Karakter 2 Titik 1 18 -10 8 27 61 90 42 36 13 Titik 2 18 -10 8 27 61 90 42 46 3 Titik 3 18 -10 8 27 61 90 42 55 -6 Titik 4 18 -9,5 7,5 27 62 91 43 38 11 Titik 5 18 -9,5 7,5 27 62 91 43 46 3 Titik 6 18 -9,5 7,5 27 62 91 43 54 -5 Titik 7 18 -7 7,5 27 69 91 43 39 9 Titik 8 18 -7 7,5 27 69 91 43 47 2 Titik 9 18 -7 7,5 27 69 91 43 55 -7
Posisi Karakter 3 Titik 1 18 -5 6,8 27 74 94 45 42 7 Titik 2 18 -5 6,8 27 74 94 45 51 -3 Titik 3 18 -5 6,8 27 74 94 45 62 -13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Tabel 4.2.(Lanjutan) Data Hasil Perhitungan Kinematika Setiap Titik Acuan
Posisi Px (cm)
Py (cm)
OE (cm)
EB (cm) θ1 ( o ) θ2 ( o ) θ3 ( o ) θ4 ( o ) ψ (o)
Titik 4 18 -4,5 6,5 27 76 94 45 42 7 Titik 5 18 -4,5 6,5 27 76 94 45 51 -2 Titik 6 18 -4,5 6,5 27 76 94 45 60 -11 Titik 7 18 -2 6,5 27 84 94 45 42 7 Titik 8 18 -2 6,5 27 84 94 45 51 -2 Titik 9 18 -2 6,5 27 84 94 45 61 -12
Posisi Karakter 4 Titik 1 18 0 6,6 27 90 94 45 42 7 Titik 2 18 0 6,6 27 90 94 45 52 -3 Titik 3 18 0 6,6 27 90 94 45 60 -11 Titik 4 18 1,5 6,5 27 95 94 45 42 7 Titik 5 18 1,5 6,5 27 95 94 45 50 -1 Titik 6 18 1,5 6,5 27 95 94 45 60 -11 Titik 7 18 3 6,6 27 99 94 45 42 7 Titik 8 18 3 6,6 27 99 94 45 50 -1 Titik 9 18 3 6,6 27 99 94 45 60 -11
Posisi Karakter 5 Titik 1 18 5 7 27 106 93 44 42 7 Titik 2 18 5 7 27 106 93 44 51 -2 Titik 3 18 5 7 27 106 93 44 59 -10 Titik 4 18 6,5 7,2 27 110 92 44 42 7 Titik 5 18 6,5 7,2 27 110 92 44 49 -1 Titik 6 18 6,5 7,2 27 110 92 44 59 -10 Titik 7 18 8 8 27 114 90 41 40 9 Titik 8 18 8 8 27 114 90 41 48 1 Titik 9 18 8 8 27 114 90 41 56 -7
Dari Tabel 4.2 dapat diperoleh nilai sudut setiap joint (𝜃𝜃1,𝜃𝜃2,𝜃𝜃3,𝑑𝑑𝑑𝑑𝑑𝑑 𝜃𝜃4) yang
diperlukan lengan robot untuk menuju titik-titik acuan tersebut. Akan tetapi, dari hasil
pengukuran diperoleh hasil berbeda dari hasil perhitungan kinematika. Dari perbedaan
tersebut diperoleh persentase error dari hasil perhitungan dengan hasil pengukuran. Seperti
yang terlihat pada Tabel 4.3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Tabel 4.3. Perbandingan Hasil Perhitungan dengan Hasil Pengukuran
Posisi Perhitungan ( o ) Pengukuran ( o ) Error (%)
θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 Home 90 111 42 91 90 110 40 90 0% 1% 5% 1%
Posisi Karakter 1 Titik 1 52 83 33 34 60 84 35 35 15% 1% 6% 3% Titik 2 52 83 33 45 60 84 35 44 15% 1% 6% 2% Titik 3 52 83 33 51 60 84 35 50 15% 1% 6% 2% Titik 4 53 85 36 48 64 85 35 35 21% 0% 3% 27% Titik 5 53 85 36 47 64 85 35 45 21% 0% 3% 4% Titik 6 53 85 36 52 64 85 35 51 21% 0% 3% 2% Titik 7 59 87 40 38 70 87 35 39 19% 0% 13% 3% Titik 8 59 87 40 47 70 87 35 47 19% 0% 13% 0% Titik 9 59 87 40 56 70 87 35 56 19% 0% 13% 0%
Posisi Karakter 2 Titik 1 61 90 42 36 72 91 40 37 18% 1% 5% 3% Titik 2 61 90 42 46 72 90 40 47 18% 0% 5% 2% Titik 3 61 90 42 55 72 90 40 55 18% 0% 5% 0% Titik 4 62 91 43 38 77 91 40 39 24% 0% 7% 3% Titik 5 62 91 43 46 77 91 40 47 24% 0% 7% 2% Titik 6 62 91 43 54 77 91 40 55 24% 0% 7% 2% Titik 7 69 91 43 39 82 91 40 40 19% 0% 7% 3% Titik 8 69 91 43 47 82 91 40 48 19% 0% 7% 2% Titik 9 69 91 43 55 82 91 40 56 19% 0% 7% 2%
Posisi Karakter 3 Titik 1 74 94 45 42 98 93 40 42 32% 1% 11% 0% Titik 2 74 94 45 51 98 93 40 52 32% 1% 11% 2% Titik 3 74 94 45 62 98 93 40 60 32% 1% 11% 3% Titik 4 76 94 45 42 104 94 40 43 37% 0% 11% 2% Titik 5 76 94 45 51 104 94 40 52 37% 0% 11% 2% Titik 6 76 94 45 60 104 94 40 60 37% 0% 11% 0% Titik 7 84 94 45 42 108 94 40 43 29% 0% 11% 2% Titik 8 84 94 45 51 108 94 40 52 29% 0% 11% 2% Titik 9 84 94 45 61 108 94 40 61 29% 0% 11% 0%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Tabel 4.3.(Lanjutan) Perbandingan Hasil Perhitungan dengan Hasil Pengukuran
Posisi Perhitungan ( o ) Pengukuran ( o ) Error (%) θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4
Posisi Karakter 4 Titik 1 90 94 45 42 114 93 40 43 27% 1% 11% 2% Titik 2 90 94 45 52 115 93 40 52 28% 1% 11% 0% Titik 3 90 94 45 60 115 93 40 61 28% 1% 11% 2% Titik 4 95 94 45 42 120 94 40 43 26% 0% 11% 2% Titik 5 95 94 45 50 120 94 40 51 26% 0% 11% 2% Titik 6 95 94 45 60 120 94 40 61 26% 0% 11% 2% Titik 7 99 94 45 42 125 93 40 43 26% 1% 11% 2% Titik 8 99 94 45 50 125 93 40 51 26% 1% 11% 2% Titik 9 99 94 45 60 125 93 40 60 26% 1% 11% 0%
Posisi Karakter 5 Titik 1 106 93 44 42 130 92 40 43 23% 1% 9% 2% Titik 2 106 93 44 51 130 92 40 52 23% 1% 9% 2% Titik 3 106 93 44 59 130 92 40 60 23% 1% 9% 2% Titik 4 110 92 44 42 134 91 40 42 22% 1% 9% 0% Titik 5 110 92 44 49 134 91 40 50 22% 1% 9% 2% Titik 6 110 92 44 59 134 91 40 59 22% 1% 9% 0% Titik 7 114 90 41 40 140 90 40 40 23% 0% 2% 0% Titik 8 114 90 41 48 140 90 40 48 23% 0% 2% 0% Titik 9 114 90 41 56 140 90 40 57 23% 0% 2% 2%
Rata-rata Error (%) 24% 0% 8% 2%
Dari tabel 4.3 diperoleh bahwa persentase error yang bernilai paling tinggi adalah
bagian base (𝜃𝜃1) yakni 24%. Hal ini dikarenakan mekanik lengan robot mengalami
masalah, yakni bagian end-effector yang tidak simetris dengan poros bagian base seperti
yang terlihat pada Gambar 4.15 serta transmisi gear yang bermasalah yang mengakibatkan
terjadinya speleng. Kedua permasalahan tersebut memberikan pengaruh terhadap nilai
sudut 𝜃𝜃1 yang mengakibatkan perubahan pada posisi titik acuan. Sedangkan untuk
persentase error pada bagian yang lain tidak terlalu tinggi, yakni bagian shoulder dengan
rata-rata error 0%, bagian elbow dengan rata-rata error 8%, dan bagian pitch dengan rata-
rata error 2%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Gambar 4.15. Permasalahan Mekanik Lengan Robot
Dari pengujian kinematika lengan robot diatas diperoleh nilai sudut–sudut yang
diperlukan oleh lengan robot dalam menuju titik acuan. Titik-titik acuan inilah yang akan
digunakan lengan robot untuk membentuk beberapa garis acuan. Gambar 4.16 merupakan
bentuk dan posisi dari garis-garis acuan yang akan dibentuk oleh lengan robot. Garis-garis
acuan inilah yang akan digunakan lengan robot untuk membentuk huruf yang tersusun
menjadi sebuah kata.
Gambar 4.16. Bentuk dan Posisi Garis Acuan
Kondisi yang terjadi (tidak simetris)
Poros
Kondisi seharusnya (simetris)
End-effector
Posisi ke-n Garis ke-n
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Gambar 4.17. Hasil Implementasi Garis-Garis Acuan
Gambar 4.17 merupakan hasil implementasi dari garis-garis acuan. Garis acuan
inilah yang akan digunakan untuk membentuk huruf. Dari gambar tersebut terlihat garis
diagonal belum dapat terbentuk, hal ini dikarenakan penulis belum menemukan algoritma
pemogramman untuk membentuk garis diagonal. Dalam bab perancangan, lengan robot
dirancang agar dapat menulis dengan maksimal enam posisi karakter. Akan tetapi, dari
Gambar 4.17 terlihat garis-garis acuan pada posisi karakter ke-6 tidak terbentuk. Hal ini
dikarenakan end-effector dari lengan robot telah menabrak papan tulis, sehingga tidak
memungkinkan lengan robot untuk membentuk garis-garis acuan di posisi karakter ke-6
seperti yang terlihat pada Gambar 4.18. Dengan kata lain, area kerja lengan robot terbatas,
yakni hanya maksimal 5 posisi karakter.
Gambar 4.18. End-effector Menabrak Papan Tulis
Posisi garis diagonal yang belum terbentuk
1 2 3 4 5
End-effector menabrak papan tulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
4.2.3. Pengujian repeatabilitas lengan robot
Pengujian repeatabilitas lengan robot dilakukan untuk mengetahui ketepatan
lengan robot dalam menuju satu titik apabila dilakukan secara berulang. Hal ini penting
dilakukan untuk mengetahui ketepatan lengan robot dalam menuju titik acuan yang akan
membentuk garis acuan untuk menulis sebuah kata yang akan dilakukan terus menerus
yang akan berpengaruh pada bentuk huruf yang akan ditulis. Pengujian dilakukan dengan
cara memberikan perintah kepada lengan robot untuk bergerak menuju sebuah titik acuan
lalu kembali pada posisi home lalu bergerak kembali menuju titik acuan. Hal ini dilakukan
dengan melakukan 10 kali percobaan. Dari 10 kali percobaan diperoleh data bahwa lengan
robot mulai mengalami error yang tinggi pada percobaan ke 8 dengan rata-rata error 2%
seperti yang terlihat pada Tabel 4.4.
Tabel 4.4. Hasil Pengujian Repeatabilitas Lengan Robot
Percobaan Koordinat titik
acuan (cm) Koordinat terukur
(cm) Error (%)
X Y Z X Y Z X Y Z 1 18 -4,5 30 18 -4,5 30 0% 0% 0% 2 18 -4,5 30 18 -4,5 30,2 0% 0% 1% 3 18 -4,5 30 17,9 -4,4 30,1 1% 2% 0% 4 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 5 18 -4,5 30 17,9 -4,4 30,2 1% 2% 1% 6 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 7 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 8 18 -4,5 30 17,8 -4,4 31 1% 2% 3% 9 18 -4,5 30 17,8 -4,4 31 1% 2% 3%
10 18 -4,5 30 17,9 -4,4 30,5 1% 2% 2%
4.2.4. Pengujian keseluruhan sistem
Lengan robot akan mulai menulis huruf apabila sudah memperoleh masukkan dari
aplikasi pada Android. Hal pertama yang dilakukan adalah menghubungkan bluetooth
smartphone Android dengan bluetooth HC-05 yang telah terintegrasi dengan
mikrokontroler seperti yang terlihat pada Gambar 4.19. Setelah kedua bluetooth terhubung,
user akan membuka aplikasi Arduino Bluetooth Terminal pada smartphone Android,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
kemudian menghubungkan aplikasi Arduino Bluetooth Terminal dengan bluetooth HC-05
yang telah terintegrasi dengan mikrokontroler seperti yang terlihat pada Gambar 4.20
.
Gambar 4.19 Konfigurasi Bluetooth pada Smartphone
Gambar 4.20. Tampilan Awal Aplikasi Arduino Bluetooth Terminal
Bluetooth pada smartphone Android
Bluetooth pada mikrokontroler
Nama bluetooth yang terintegrasi dengan mikrokontroler
Memulai koneksi antar bluetooth
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Gambar 4.21. Tampilan Aplikasi Arduino Bluetooth Terminal
Gambar 4.21 merupakan tampilan antarmuka dari aplikasi Arduino Bluetooth
Terminal pada smartphone Android. Seperti yang telah dijelaskan di bab perancangan pada
diagram alir Android dan program menulis, bagian ini meliputi masukkan untuk pemilihan
posisi karakter dan masukkan untuk data huruf yang akan ditulis oleh lengan robot.
Gambar 4.22 merupakan hasil implementasi bentuk huruf A pada posisi karakter pertama
yang terdiri dari tujuh garis acuan.
Gambar 4.22. Bentuk Huruf A pada Posisi Karakter Pertama
Gambar 4.23. Bentuk Huruf A pada Setiap Posisi Karakter
Data huruf yang akan dikirim (input)
Tombol untuk mengirim data
Data dari mikrokontroler
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Gambar 4.23 merupakan hasil implementasi dari bentuk huruf A pada setiap posisi
karakter. Lengan robot menulis kata ini dapat menulis hingga 26 karakter huruf di setiap
posisi karakternya yakni huruf A hingga huruf Z. Hasil dari keseluruhan huruf yang dapat
ditulis oleh lengan robot dapat dilihat pada bagian lampiran. Tabel 4.5 merupakan hasil
pengujian keberhasilan dari penulisan bentuk huruf oleh lengan robot dengan persentase
keberhasilan mencapai 62%.
Tabel 4.5. Hasil Pengujian Keberhasilan Bentuk Huruf
Huruf Posisi Karakter 1 2 3 4 5
A 1 1 1 1 1 B 1 1 1 1 1 C 1 1 1 1 1 D 1 1 1 1 1 E 1 1 1 1 1 F 1 1 1 1 1 G 1 1 1 1 1 H 1 1 1 1 1 I 1 1 1 1 1 J 1 1 1 1 1 K 0 0 0 0 0 L 1 1 1 1 1 M 0 0 0 0 0 N 0 0 0 0 0 O 1 1 1 1 1 P 1 1 1 1 1 Q 0 0 0 0 0 R 0 0 0 0 0 S 1 1 1 1 1 T 1 1 1 1 1 U 1 1 1 1 1 V 0 0 0 0 0 W 0 0 0 0 0 X 0 0 0 0 0 Y 0 0 0 0 0 Z 0 0 0 0 0
Total huruf 130 Huruf yang terbaca 80
Huruf yang tidak terbaca 50 Presentase Keberhasilan huruf yang terbaca 62%
0 = Tidak terbaca, 1 = terbaca
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Tolak ukur huruf yang terbaca dan tidak terbaca dilihat dari pembentukan garis
acuan yang terjadi. Huruf dikatakan terbaca apabila pembentukan garis acuan terjadi
dengan sempurna seperti yang terlihat pada Gambar 4.24. Sebagai contoh huruf P, huruf P
terdiri dari 5 garis acuan dan lengan robot berhasil menulis kelima garis acuan tersebut
hingga membentuk huruf P. Gambar 4.25 merupakan bentuk dari huruf N, huruf N
seharusnya terdiri dari 6 garis acuan akan tetapi lengan robot hanya dapat menulis 4 garis
acuan sehingga tidak dapat membentuk huruf N yang seharusnya. Hal inilah yang
dimaksud huruf yang tidak terbaca.
Gambar 4.24. Ilustrasi Bentuk Huruf yang Terbaca
Gambar 4.25. Ilustrasi Bentuk Huruf yang Tidak Terbaca
Gambar 4.26. Beberapa Huruf yang Membentuk Sebuah Kata
Gambar 4.26 merupakan hasil implementasi dari keseluruhan sistem lengan robot
menulis kata. Dimana, user dapat memilih jumlah karakter dan posisi karakter dengan cara
memberi masukan dari aplikasi pada android dan mengirimkan data huruf satu per satu.
Garis acuan yang tidak terbentuk
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
4.3. Pembahasan Perangkat Lunak
4.3.1. Inisialisasi
Inisialisasi pada lengan robot menulis kata ini berisi tentang pendefinisian dari
fungsi library dan variabel yang digunakan dalam proses pengoperasian data. Seperti pada
bab perancangan pada diagram alir program, bagian dari inisialisasi meliputi input dan
output yang digunakan serta setup untuk komunikasi serial dan I2C serta setup motor servo
pada servo controller. Listing program inisialisasi dari lengan robot menulis kata ini dapat
dilihat seperti pada gambar 4.27.
Gambar 4.27. Listing Program Inisialisasi Lengan Robot Menulis Kata
4.3.2. Program Home
Listing program home dapat dilihat pada Gambar 4.28. Posisi home merupakan
kondisi aman lengan robot sebelum dan sesudah menulis. Lengan robot akan menulis
dengan cara menggabungkan garis-garis acuan. Setiap huruf terdiri dari beberapa garis
acuan, dimana setelah menulis garis acuan robot akan bergerak ke posisi aman dan
kemudian melanjutkan menulis garis acuan yang berikutnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Gambar 4.28. Listing Program Home
4.3.3. Program Pemilihan Posisi Karakter
Listing program pemilihan posisi karakter dapat dilihat pada Gambar 4.29.
Pemilihan posisi karakter digunakan untuk memilih posisi huruf yang akan ditulis oleh
lengan robot. Lengan robot ini hanya dapat menulis hingga maksimal lima karakter.
Gambar 4.29 Listing Program Pemilihan Posisi Karakter
4.3.4. Pembacaan Data dari Android
Listing program pembacaan data dari android dapat dilihat pada Gambar 4.30.
Pembacaan data huruf dari android menggunakan komunikasi bluetooth secara serial
memanfaatkan Tx dan Rx mikrokontroler serta Tx dan Rx dari modul bluetooth. Dengan
menggunakan library software serial sehingga dapat menggunakan pin 10 dan pin 11
sebagai port serial. Komunikasi serial tersebut menggunakan bautrate 9600 sebagai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
kecepatan pengiriman data serial. Dimana, data huruf yang diterima oleh mikrokontroler
adalah kode desimal seperti yang terlihat pada Gambar 4.31.
Gambar 4.30. Listing Program Pembacaan Data dari Android
Gambar 4.31. Data yang Diterima oleh Mikrokontroler
4.3.5. Program Data Huruf
Listing program data huruf dapat dilihat pada Gambar 4.32. Program ini berisi
tentang kumpulan sub program garis acuan yang akan membentuk menjadi sebuah huruf.
Program garis ini berisi tentang pergerakan motor servo yang akan membentuk garis-garis
kecil pada whiteboard.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Gambar 4.32 Listing Program Data Huruf.
4.3.6. Program Garis Acuan
Listing program garis acuan dapat dilihat pada Gambar 4.33. program garis acuan
ini berisi tentang pergerakan motor servo dalam menuju titik acuan dan kemudian akan
merubah sudut di salah satu joint untuk membentuk garis acuan. Apabila ingin membentuk
garis acuan secara vertikal maka bagian yang perlu diubah adalah bagian pitch. Sedangkan,
apabila ingin membentuk garis acuan secara horisontal maka bagian yang perlu diubah
adalah bagian base.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Gambar 4.33. Listing Sub Program Garis Acuan
Perbandingan sudut awal dengan sudut yang dituju
Membentuk garis horisontal dengan menggerakkan motor bagian base
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan Setelah melakukan perancangan dan pengujian pada lengan robot menulis kata
yang dikendalikan oleh aplikasi pada android, peneliti dapat menarik kesimpulan sebagai
berikut :
1. Lengan robot dapat bergerak pada sumbu X, Y dan Z dengan 4 derajat
kebebasan.
2. Lengan robot dapat dikendalikan jarak jauh dengan maksimal jarak 15 meter
melalui sistem komunikasi serial menggunakan bluetooth.
3. Lengan robot telah berhasil menulis dengan presentase keberhasilan 62%.
5.2. Saran
Berdasarkan hasil implementasi yang diperoleh, untuk pengembangan lebih lanjut
ada beberapa saran agar alat ini dapat bekerja lebih baik, yaitu :
1. Perancangan ulang pada kontruksi lengan robot agar lebih stabil, simetris dan
kokoh.
2. Pengembangan sistem kendali jarak jauh dengan menggunakan Wi-Fi.
3. Penelitian lebih lanjut untuk mencari algoritma pemogramman dalam
membentuk garis acuan diagonal untuk meningkatkan presentase keberhasilan
lengan robot menulis kata ini.
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
[1] Syarifah Hamidah ,Seno D. Panjaitan, Dedi Triyanto 2013, Sistem Pengendalian
Robot Lengan Menggunakan Pemograman Visual Basic,
http://jurnal.untan.ac.id/index.php/jcskommipa/article/view/2332 , diakses tanggal 30
Maret 2014
[2] -----, -----, Pengertian Mikrokontroler http://www.kelas-mikrokontrol.com/, diakses
tanggal 08 november 2013
[3] Artanto, Dian, 2012, Interaksi Arduino dan LabVIEW, 1st, PT Elex Media
Komputindo, Jakarta.
[4] -----, -----, Products, http://arduino.cc/en/Main/Products, diakses tanggal 25 Februari
2013.
[5] -----, -----, Arduino Introduction, http://arduino.cc/en/Guide/Introduction, diakses
tanggal 23 Februari 2013.
[6] -----, -----, Arduino Software, http://arduino.cc/en/Main/Software , diakses tanggal 23
Februari 2013.
[7] -----, -----, Motor Servo http://elektronika-dasar.web.id/teori-elektronika , diakses
tanggal 08 november 2013.
[8] -----, ------, Adafruit 16-Channel 12-bit PWM,
http://www.adafruit.com/product/1411 , diakses tanggal 08 April 2014.
[9] -----, ------, Pengertian dan Fungsi Bluetooth,
http://www.sisilain.net/2010/10/pengertian-dan-fungsi-bluetooth.html?m=0 , diakses
tanggal 08 April 2014.
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
[10] -----, ------, Mengenal Seri Bluetooth HC, http://diytech.net/2013/10/09/mengenal-
bluetooth-modul-hc-05-1/, diakses tanggal 08 April 2014.
[11] Pitowarno, Endra, 2006, Robotika Disain, Kontrol, dan Kecerdasan Buatan, Penerbit
Andi, Yogyakarta.
[12] -----, ------, HS-645 Ultra Torque, https://www.servocity.com/html/hs-
645mg_ultra_torque.html#.U0zNAvlSioQ, diakses tanggal 10 April 2014.
[13] -----, ------, GWS S04 BBM Large Servo,
http://www.robotsinsearch.com/products/gws-s04-bbm-large-servo , diakses tanggal 10
April 2014.
[14] ----, ------, Hitec HS-805BB Mega ¼ Scale Servo, https://www.hobbyking.com/hobbyking/store/__9810__Hitec_HS_805BB_Mega_1_4_Scale_servo_19_8kg_152g_0_19sec.html , diakses tanggal 10 April 2014.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L1
Lampiran Tabel Tabel L1. Pengujian Koneksi Bluetooth
Jarak (Meter) Keterangan
1 Koneksi lancar (Data diterima) 2 Koneksi lancar (Data diterima) 3 Koneksi lancar (Data diterima) 4 Koneksi lancar (Data diterima) 5 Koneksi lancar (Data diterima) 6 Koneksi lancar (Data diterima) 7 Koneksi lancar (Data diterima) 8 Koneksi lancar (Data diterima) 9 Koneksi lancar (Data diterima) 10 Koneksi lancar (Data diterima) 11 Koneksi lancar (Data diterima) 12 Koneksi lancar (Data diterima) 13 Koneksi lancar (Data diterima) 14 Koneksi lancar (Data diterima) 15 Koneksi lancar (Data diterima) 16 Koneksi tidak lancar (Data diterima) 17 Koneksi tidak lancar (Data diterima) 18 Koneksi terputus (Data tidak diterima)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L2
Tabel L2. Data Hasil Perhitungan Kinematika Setiap Titik Acuan
L1 = 18cm L2=12cm L3=13cm
Posisi Px (cm)
Py (cm)
OE (cm) EB (cm) θ1 ( o
) θ2 ( o ) θ3 ( o ) θ4 ( o ) ψ (o)
Home 18 0 -2 28 90 111 42 91 -23 Posisi Karakter 1
Titik 1 18 -14 10 27 52 83 33 34 16 Titik 2 18 -14 10 27 52 83 33 45 5 Titik 3 18 -14 10 27 52 83 33 51 -1 Titik 4 18 -13,5 9,5 27 53 85 36 48 1 Titik 5 18 -13,5 9,5 27 53 85 36 47 2 Titik 6 18 -13,5 9,5 27 53 85 36 52 -3 Titik 7 18 -11 9 27 59 87 40 38 9 Titik 8 18 -11 9 27 59 87 40 47 0 Titik 9 18 -11 9 27 59 87 40 56 -9
Posisi Karakter 2 Titik 1 18 -10 8 27 61 90 42 36 13 Titik 2 18 -10 8 27 61 90 42 46 3 Titik 3 18 -10 8 27 61 90 42 55 -6 Titik 4 18 -9,5 7,5 27 62 91 43 38 11 Titik 5 18 -9,5 7,5 27 62 91 43 46 3 Titik 6 18 -9,5 7,5 27 62 91 43 54 -5 Titik 7 18 -7 7,5 27 69 91 43 39 9 Titik 8 18 -7 7,5 27 69 91 43 47 2 Titik 9 18 -7 7,5 27 69 91 43 55 -7
Posisi Karakter 3 Titik 1 18 -5 6,8 27 74 94 45 42 7 Titik 2 18 -5 6,8 27 74 94 45 51 -3 Titik 3 18 -5 6,8 27 74 94 45 62 -13 Titik 4 18 -4,5 6,5 27 76 94 45 42 7 Titik 5 18 -4,5 6,5 27 76 94 45 51 -2 Titik 6 18 -4,5 6,5 27 76 94 45 60 -11 Titik 7 18 -2 6,5 27 84 94 45 42 7 Titik 8 18 -2 6,5 27 84 94 45 51 -2 Titik 9 18 -2 6,5 27 84 94 45 61 -12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L3
Tabel L3. (lanjutan)Data Hasil Perhitungan Kinematika Setiap Titik Acuan
Posisi Px (cm)
Py (cm)
OE (cm)
EB (cm) θ1 ( o ) θ2 ( o ) θ3 ( o ) θ4 ( o ) ψ (o)
Posisi Karakter 4 Titik 1 18 0 6,6 27 90 94 45 42 7 Titik 2 18 0 6,6 27 90 94 45 52 -3 Titik 3 18 0 6,6 27 90 94 45 60 -11 Titik 4 18 1,5 6,5 27 95 94 45 42 7 Titik 5 18 1,5 6,5 27 95 94 45 50 -1 Titik 6 18 1,5 6,5 27 95 94 45 60 -11 Titik 7 18 3 6,6 27 99 94 45 42 7 Titik 8 18 3 6,6 27 99 94 45 50 -1 Titik 9 18 3 6,6 27 99 94 45 60 -11
Posisi Karakter 5 Titik 1 18 5 7 27 106 93 44 42 7 Titik 2 18 5 7 27 106 93 44 51 -2 Titik 3 18 5 7 27 106 93 44 59 -10 Titik 4 18 6,5 7,2 27 110 92 44 42 7 Titik 5 18 6,5 7,2 27 110 92 44 49 -1 Titik 6 18 6,5 7,2 27 110 92 44 59 -10 Titik 7 18 8 8 27 114 90 41 40 9 Titik 8 18 8 8 27 114 90 41 48 1 Titik 9 18 8 8 27 114 90 41 56 -7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L4
Tabel L4. Perbandingan Hasil Perhitungan dengan Hasil Pengukuran
Posisi Perhitungan ( o ) Pengukuran ( o ) Error (%)
θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 Home 90 111 42 91 90 110 40 90 0% 1% 5% 1%
Posisi Karakter 1 Titik 1 52 83 33 34 60 84 35 35 15% 1% 6% 3% Titik 2 52 83 33 45 60 84 35 44 15% 1% 6% 2% Titik 3 52 83 33 51 60 84 35 50 15% 1% 6% 2% Titik 4 53 85 36 48 64 85 35 35 21% 0% 3% 27% Titik 5 53 85 36 47 64 85 35 45 21% 0% 3% 4% Titik 6 53 85 36 52 64 85 35 51 21% 0% 3% 2% Titik 7 59 87 40 38 70 87 35 39 19% 0% 13% 3% Titik 8 59 87 40 47 70 87 35 47 19% 0% 13% 0% Titik 9 59 87 40 56 70 87 35 56 19% 0% 13% 0%
Posisi Karakter 2 Titik 1 61 90 42 36 72 91 40 37 18% 1% 5% 3% Titik 2 61 90 42 46 72 90 40 47 18% 0% 5% 2% Titik 3 61 90 42 55 72 90 40 55 18% 0% 5% 0% Titik 4 62 91 43 38 77 91 40 39 24% 0% 7% 3% Titik 5 62 91 43 46 77 91 40 47 24% 0% 7% 2% Titik 6 62 91 43 54 77 91 40 55 24% 0% 7% 2% Titik 7 69 91 43 39 82 91 40 40 19% 0% 7% 3% Titik 8 69 91 43 47 82 91 40 48 19% 0% 7% 2% Titik 9 69 91 43 55 82 91 40 56 19% 0% 7% 2%
Posisi Karakter 3 Titik 1 74 94 45 42 98 93 40 42 32% 1% 11% 0% Titik 2 74 94 45 51 98 93 40 52 32% 1% 11% 2% Titik 3 74 94 45 62 98 93 40 60 32% 1% 11% 3% Titik 4 76 94 45 42 104 94 40 43 37% 0% 11% 2% Titik 5 76 94 45 51 104 94 40 52 37% 0% 11% 2% Titik 6 76 94 45 60 104 94 40 60 37% 0% 11% 0% Titik 7 84 94 45 42 108 94 40 43 29% 0% 11% 2% Titik 8 84 94 45 51 108 94 40 52 29% 0% 11% 2% Titik 9 84 94 45 61 108 94 40 61 29% 0% 11% 0%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L5
Tabel L5.(lanjutan) Perbandingan Hasil Perhitungan dengan Hasil Pengukuran
Posisi Perhitungan ( o ) Pengukuran ( o ) Error (%)
θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 θ1 θ2 θ3 θ4 Posisi Karakter 4
Titik 1 90 94 45 42 114 93 40 43 27% 1% 11% 2% Titik 2 90 94 45 52 115 93 40 52 28% 1% 11% 0% Titik 3 90 94 45 60 115 93 40 61 28% 1% 11% 2% Titik 4 95 94 45 42 120 94 40 43 26% 0% 11% 2% Titik 5 95 94 45 50 120 94 40 51 26% 0% 11% 2% Titik 6 95 94 45 60 120 94 40 61 26% 0% 11% 2% Titik 7 99 94 45 42 125 93 40 43 26% 1% 11% 2% Titik 8 99 94 45 50 125 93 40 51 26% 1% 11% 2% Titik 9 99 94 45 60 125 93 40 60 26% 1% 11% 0%
Posisi Karakter 5 Titik 1 106 93 44 42 130 92 40 43 23% 1% 9% 2% Titik 2 106 93 44 51 130 92 40 52 23% 1% 9% 2% Titik 3 106 93 44 59 130 92 40 60 23% 1% 9% 2% Titik 4 110 92 44 42 134 91 40 42 22% 1% 9% 0% Titik 5 110 92 44 49 134 91 40 50 22% 1% 9% 2% Titik 6 110 92 44 59 134 91 40 59 22% 1% 9% 0% Titik 7 114 90 41 40 140 90 40 40 23% 0% 2% 0% Titik 8 114 90 41 48 140 90 40 48 23% 0% 2% 0% Titik 9 114 90 41 56 140 90 40 57 23% 0% 2% 2%
Rata-rata Error (%) 24% 0% 8% 2%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L6
Tabel L6. Hasil Pengujian Repeatabilitas Lengan Robot
Percobaan Koordinat titik
acuan (cm) Koordinat terukur
(cm) Error (%)
X Y Z X Y Z X Y Z 1 18 -4,5 30 18 -4,5 30 0% 0% 0% 2 18 -4,5 30 18 -4,5 30,2 0% 0% 1% 3 18 -4,5 30 17,9 -4,4 30,1 1% 2% 0% 4 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 5 18 -4,5 30 17,9 -4,4 30,2 1% 2% 1% 6 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 7 18 -4,5 30 17,9 -4,5 30,2 1% 0% 1% 8 18 -4,5 30 17,8 -4,4 31 1% 2% 3% 9 18 -4,5 30 17,8 -4,4 31 1% 2% 3%
10 18 -4,5 30 17,9 -4,4 30,5 1% 2% 2%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L7
L7. Hasil Implementasi Keseluruhan Bentuk Huruf
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L10
LISTING PROGRAM
L10. Listing Program Keseluruhan //////////Inisialisasi///////////////// #include <Wire.h> #include <Adafruit_PWMServoDriver.h> #include <SoftwareSerial.h> #define SERVOMIN1 135 // base #define SERVOMAX1 600 #define SERVOMIN2 220 // shoulder #define SERVOMAX2 645 #define SERVOMIN3 0 // Elbow #define SERVOMAX3 450 #define SERVOMIN4 105 // Pitch #define SERVOMAX4 415 SoftwareSerial Bluetooth(10, 11); // TX, RX Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); int BluetoothData; int sudut1; int sudut2; int sudut3; int sudut4; int sudut11; int sudut21; int sudut12; int sudut121; int sudut13; int sudut14; int sudut24; void setup() { pwm.begin(); Serial.begin(9600); Bluetooth.begin(9600); Bluetooth.println("Ready"); Bluetooth.println("Posisi Karakter?"); pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates sudut2 = map(110, 0, 180, SERVOMIN2, SERVOMAX2); pwm.setPWM(2,0, sudut2);//shoulder1 pwm.setPWM(4,0, sudut2);//shoulder2 sudut4 = map(90, 120, 0, SERVOMIN4, SERVOMAX4); pwm.setPWM(12,0, sudut4);//pitch sudut3 = map(40, 180, 0, SERVOMIN3, SERVOMAX3); pwm.setPWM(6,0, sudut3);//elbow delay(800); sudut1 = map(90, 0, 180, SERVOMIN1, SERVOMAX1); pwm.setPWM(0,0, sudut1);//base } void loop () { if (Bluetooth.available()) { BluetoothData=Bluetooth.read(); } if(BluetoothData=='1'){ Serial.println(BluetoothData); karakter1(); } if(BluetoothData=='2'){ Serial.println(BluetoothData); karakter2(); } if(BluetoothData=='3'){ Serial.println(BluetoothData); karakter3(); } if(BluetoothData=='4'){ Serial.println(BluetoothData); karakter4(); } if(BluetoothData=='5'){ Serial.println(BluetoothData); karakter5(); } delay(100);// prepare for next data .. } void awal() { delay(1000);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L11
sudut2 = map(110, 0, 180, SERVOMIN2, SERVOMAX2); pwm.setPWM(2,0, sudut2);//shoulder1 pwm.setPWM(4,0, sudut2);//shoulder2 sudut4 = map(92, 60, 180, SERVOMIN4, SERVOMAX4); pwm.setPWM(12,0, sudut4);//pitch sudut3 = map(140, 0, 180, SERVOMIN3, SERVOMAX3); pwm.setPWM(6,0, sudut3);//elbow delay(800); sudut1 = map(90, 0, 180, SERVOMIN1, SERVOMAX1); pwm.setPWM(0,0, sudut1);//base delay(1000); } void karakter1() { Bluetooth.println("Karakter1"); Bluetooth.println("Kirim huruf yang akan ditulis"); delay(3000); while(Bluetooth.available()) { BluetoothData=Bluetooth.read(); if (BluetoothData=='a') {Bluetooth.println("Menulis huruf A"); garis11(); awal(); garis12(); awal(); garis13(); awal(); garis16(); awal(); garis15(); awal(); garis110(); awal(); garis18(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='b') {Bluetooth.println("Menulis huruf B"); garis11(); awal(); garis12(); awal(); garis13(); awal(); garis14(); awal(); garis17(); awal(); garis19(); awal(); garis18(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='c') {Bluetooth.println("Proses C"); garis11(); awal(); garis16(); awal(); garis15(); awal(); garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='d') {Bluetooth.println("Proses D"); garis11(); awal(); garis12(); awal(); garis13();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L12
awal(); garis14(); awal(); garis17(); awal(); garis19(); awal(); Bluetooth.println("Selesai"); delay(100); if (BluetoothData=='e') {Bluetooth.println("Proses E"); garis11(); awal(); garis16(); awal(); garis15(); awal(); garis14(); awal(); garis110(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='f') {Bluetooth.println("Proses F"); garis11(); awal(); garis16(); awal(); garis15(); awal(); garis110(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='g') {Bluetooth.println("Proses G"); garis11(); awal(); garis16(); awal(); garis15(); awal(); garis14(); awal(); garis13(); awal(); garis18(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='h') {Bluetooth.println("Proses H"); garis16(); awal(); garis15(); awal(); garis110(); awal(); garis18(); awal(); garis12(); awal(); garis13(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='i') {Bluetooth.println("Proses I"); garis11(); awal(); garis17(); awal(); garis19();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L13
awal(); garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='j') {Bluetooth.println("Proses J"); garis12(); awal(); garis13(); awal(); garis14(); awal(); garis15(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='k') {Bluetooth.println("Proses K"); garis16(); awal(); garis15(); awal(); garis110(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='l') {Bluetooth.println("Proses L"); garis16(); awal(); garis15(); awal(); garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='m') {Bluetooth.println("Menulis M"); garis16(); awal(); garis15(); awal(); garis12(); awal(); garis13(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='n') {Bluetooth.println("Menulis N"); garis16(); awal(); garis15(); awal(); garis12(); awal(); garis13(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='o') {Bluetooth.println("Menulis O"); garis11(); awal(); garis12(); awal(); garis13(); awal(); garis16(); awal(); garis15(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L14
garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='p') {Bluetooth.println("Menulis P"); garis16(); awal(); garis15(); awal(); garis11(); awal(); garis12(); awal(); garis110(); awal(); garis18(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='q') {Bluetooth.println("Menulis Q"); garis11(); awal(); garis12(); awal(); garis13(); awal(); garis16(); awal(); garis15(); awal(); garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='r') {Bluetooth.println("Menulis R"); garis16(); awal(); garis15(); awal(); garis11(); awal(); garis12(); awal(); garis110(); awal(); garis18(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='s') {Bluetooth.println("Menulis S"); garis11(); awal(); garis16(); awal(); garis110(); awal(); garis18(); awal(); garis13(); awal(); garis14(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='t') {Bluetooth.println("Menulis T"); garis11(); awal(); garis17(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L15
garis19(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='u') {Bluetooth.println("Menulis U"); garis16(); awal(); garis15(); awal(); garis14(); awal(); garis12(); awal(); garis13(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='v') {Bluetooth.println("Menulis V"); garis16(); awal(); garis15(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='w') {Bluetooth.println("Menulis W"); garis16(); awal(); garis15(); awal(); garis12(); awal(); garis13(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='x') {Bluetooth.println("Menulis X"); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='y') {Bluetooth.println("Menulis Y"); garis19(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='Z') {Bluetooth.println("Menulis Z"); garis11(); awal(); garis14(); awal(); Bluetooth.println("selesai");} }} void karakter2() { Bluetooth.println("Karakter2"); Bluetooth.println("Kirim huruf yang akan ditulis"); delay(3000); while(Bluetooth.available()) { BluetoothData=Bluetooth.read(); if (BluetoothData=='a') {Bluetooth.println("Proses A"); garis21(); awal(); garis22(); awal(); garis23(); awal(); garis26(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L16
garis25(); awal(); garis210(); awal(); garis28(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='b') {Bluetooth.println("Proses B"); garis21(); awal(); garis22(); awal(); garis23(); awal(); garis24(); awal(); garis27(); awal(); garis29(); awal(); garis28(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='c') {Bluetooth.println("Proses C"); garis21(); awal(); garis26(); awal(); garis25(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='d') {Bluetooth.println("Proses D"); garis21(); awal(); garis22(); awal(); garis23(); awal(); garis24(); awal(); garis27(); awal(); garis29(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='e') {Bluetooth.println("Proses E"); garis21(); awal(); garis26(); awal(); garis25(); awal(); garis24(); awal(); garis210(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='f') {Bluetooth.println("Proses F"); garis21(); awal(); garis26();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L17
awal(); garis25(); awal(); garis210(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='g') {Bluetooth.println("Proses G"); garis21(); awal(); garis26(); awal(); garis25(); awal(); garis24(); awal(); garis23(); awal(); garis28(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='h') {Bluetooth.println("Proses H"); garis26(); awal(); garis25(); awal(); garis210(); awal(); garis28(); awal(); garis22(); awal(); garis23(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='i') {Bluetooth.println("Proses I"); garis21(); awal(); garis27(); awal(); garis29(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='j') {Bluetooth.println("Proses J"); garis22(); awal(); garis23(); awal(); garis24(); awal(); garis25(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='k') {Bluetooth.println("Proses K"); garis26(); awal(); garis25(); awal(); garis210(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='l')
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L18
{Bluetooth.println("Proses L"); garis26(); awal(); garis25(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='m') {Bluetooth.println("Menulis M"); garis26(); awal(); garis25(); awal(); garis22(); awal(); garis23(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='n') {Bluetooth.println("Menulis N"); garis26(); awal(); garis25(); awal(); garis22(); awal(); garis23(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='o') {Bluetooth.println("Menulis O"); garis21(); awal(); garis22(); awal(); garis23(); awal(); garis26(); awal(); garis25(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='p') {Bluetooth.println("Menulis P"); garis26(); awal(); garis25(); awal(); garis21(); awal(); garis22(); awal(); garis210(); awal(); garis28(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='q') {Bluetooth.println("Menulis Q"); garis21(); awal(); garis22(); awal(); garis23(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L19
garis26(); awal(); garis25(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='r') {Bluetooth.println("Menulis R"); garis26(); awal(); garis25(); awal(); garis21(); awal(); garis22(); awal(); garis210(); awal(); garis28(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='s') {Bluetooth.println("Menulis S"); garis21(); awal(); garis26(); awal(); garis210(); awal(); garis28(); awal(); garis23(); awal(); garis24(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='t') {Bluetooth.println("Menulis T"); garis21(); awal(); garis27(); awal(); garis29(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='u') {Bluetooth.println("Menulis U"); garis26(); awal(); garis25(); awal(); garis24(); awal(); garis22(); awal(); garis23(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='v') {Bluetooth.println("Menulis V"); garis26(); awal(); garis25(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='w') {Bluetooth.println("Menulis W");
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L20
garis26(); awal(); garis25(); awal(); garis22(); awal(); garis23(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='x') {Bluetooth.println("Menulis X"); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='y') {Bluetooth.println("Menulis Y"); garis29(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='Z') {Bluetooth.println("Menulis Z"); garis21(); awal(); garis24(); awal(); Bluetooth.println("selesai");} }} void karakter3() { Bluetooth.println("Karakter3"); Bluetooth.println("Kirim huruf yang akan ditulis"); delay(3000); while(Bluetooth.available()) { BluetoothData=Bluetooth.read(); if (BluetoothData=='a') {Bluetooth.println("Proses A"); garis31(); awal(); garis32(); awal(); garis33(); awal(); garis36(); awal(); garis35(); awal(); garis310(); awal(); garis38(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='b') {Bluetooth.println("Proses B"); garis31(); awal(); garis32(); awal(); garis33(); awal(); garis34(); awal(); garis37(); awal(); garis39(); awal(); garis38(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='c') {Bluetooth.println("Proses C"); garis31();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L21
awal(); garis36(); awal(); garis35(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='d') {Bluetooth.println("Proses D"); garis31(); awal(); garis32(); awal(); garis33(); awal(); garis34(); awal(); garis37(); awal(); garis39(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='e') {Bluetooth.println("Proses E"); garis31(); awal(); garis36(); awal(); garis35(); awal(); garis34(); awal(); garis310(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='f') {Bluetooth.println("Proses F"); garis31(); awal(); garis36(); awal(); garis35(); awal(); garis310(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='g') {Bluetooth.println("Proses G"); garis31(); awal(); garis36(); awal(); garis35(); awal(); garis34(); awal(); garis33(); awal(); garis38(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='h') {Bluetooth.println("Proses H"); garis36(); awal(); garis35(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L22
garis310(); awal(); garis38(); awal(); garis32(); awal(); garis33(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='i') {Bluetooth.println("Proses I"); garis31(); awal(); garis37(); awal(); garis39(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='j') {Bluetooth.println("Proses J"); garis32(); awal(); garis33(); awal(); garis34(); awal(); garis35(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='k') {Bluetooth.println("Proses K"); garis36(); awal(); garis35(); awal(); garis310(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='l') {Bluetooth.println("Proses L"); garis36(); awal(); garis35(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='m') {Bluetooth.println("Menulis M"); garis36(); awal(); garis35(); awal(); garis32(); awal(); garis33(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='n') {Bluetooth.println("Menulis N"); garis36(); awal(); garis35(); awal(); garis32(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L23
garis33(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='o') {Bluetooth.println("Menulis O"); garis31(); awal(); garis32(); awal(); garis33(); awal(); garis36(); awal(); garis35(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='p') {Bluetooth.println("Menulis P"); garis36(); awal(); garis35(); awal(); garis31(); awal(); garis32(); awal(); garis310(); awal(); garis38(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='q') {Bluetooth.println("Menulis Q"); garis31(); awal(); garis32(); awal(); garis33(); awal(); garis36(); awal(); garis35(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='r') {Bluetooth.println("Menulis R"); garis36(); awal(); garis35(); awal(); garis31(); awal(); garis32(); awal(); garis310(); awal(); garis38(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='s') {Bluetooth.println("Menulis S"); garis31(); awal(); garis36(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L24
garis310(); awal(); garis38(); awal(); garis33(); awal(); garis34(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='t') {Bluetooth.println("Menulis T"); garis31(); awal(); garis37(); awal(); garis39(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='u') {Bluetooth.println("Menulis U"); garis36(); awal(); garis35(); awal(); garis34(); awal(); garis32(); awal(); garis33(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='v') {Bluetooth.println("Menulis V"); garis36(); awal(); garis35(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='w') {Bluetooth.println("Menulis W"); garis36(); awal(); garis35(); awal(); garis32(); awal(); garis33(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='x') {Bluetooth.println("Menulis X"); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='y') {Bluetooth.println("Menulis Y"); garis39(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='Z') {Bluetooth.println("Menulis Z"); garis31(); awal(); garis34(); awal(); Bluetooth.println("selesai");} }} void karakter4()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L25
{ Bluetooth.println("Karakter4"); Bluetooth.println("Kirim huruf yang akan ditulis"); delay(3000); while(Bluetooth.available()) { BluetoothData=Bluetooth.read(); if (BluetoothData=='a') {Bluetooth.println("Proses A"); garis41(); awal(); garis42(); awal(); garis43(); awal(); garis46(); awal(); garis45(); awal(); garis410(); awal(); garis48(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='b') {Bluetooth.println("Proses B"); garis41(); awal(); garis42(); awal(); garis43(); awal(); garis44(); awal(); garis47(); awal(); garis49(); awal(); garis48(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='c') {Bluetooth.println("Proses C"); garis41(); awal(); garis46(); awal(); garis45(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='d') {Bluetooth.println("Proses D"); garis41(); awal(); garis42(); awal(); garis43(); awal(); garis44(); awal(); garis47(); awal(); garis49(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='e') {Bluetooth.println("Proses E"); garis41(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L26
garis46(); awal(); garis45(); awal(); garis44(); awal(); garis410(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='f') {Bluetooth.println("Proses F"); garis41(); awal(); garis46(); awal(); garis45(); awal(); garis410(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='g') {Bluetooth.println("Proses G"); garis41(); awal(); garis46(); awal(); garis45(); awal(); garis44(); awal(); garis43(); awal(); garis48(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='h') {Bluetooth.println("Proses H"); garis46(); awal(); garis45(); awal(); garis410(); awal(); garis48(); awal(); garis42(); awal(); garis43(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='i') {Bluetooth.println("Proses I"); garis41(); awal(); garis47(); awal(); garis49(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='j') {Bluetooth.println("Proses J"); garis42(); awal(); garis43(); awal(); garis44(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L27
garis45(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='k') {Bluetooth.println("Proses K"); garis46(); awal(); garis45(); awal(); garis410(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='l') {Bluetooth.println("Proses L"); garis46(); awal(); garis45(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='m') {Bluetooth.println("Menulis M"); garis46(); awal(); garis45(); awal(); garis42(); awal(); garis43(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='n') {Bluetooth.println("Menulis N"); garis46(); awal(); garis45(); awal(); garis42(); awal(); garis43(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='o') {Bluetooth.println("Menulis O"); garis41(); awal(); garis42(); awal(); garis43(); awal(); garis46(); awal(); garis45(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='p') {Bluetooth.println("Menulis P"); garis46(); awal(); garis45(); awal(); garis41(); awal(); garis42();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L28
awal(); garis410(); awal(); garis48(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='q') {Bluetooth.println("Menulis Q"); garis41(); awal(); garis42(); awal(); garis43(); awal(); garis46(); awal(); garis45(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='r') {Bluetooth.println("Menulis R"); garis46(); awal(); garis45(); awal(); garis41(); awal(); garis42(); awal(); garis410(); awal(); garis48(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='s') {Bluetooth.println("Menulis S"); garis41(); awal(); garis46(); awal(); garis410(); awal(); garis48(); awal(); garis43(); awal(); garis44(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='t') {Bluetooth.println("Menulis T"); garis41(); awal(); garis47(); awal(); garis49(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='u') {Bluetooth.println("Menulis U"); garis46(); awal(); garis45(); awal(); garis44(); awal();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L29
garis42(); awal(); garis43(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='v') {Bluetooth.println("Menulis V"); garis46(); awal(); garis45(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='w') {Bluetooth.println("Menulis W"); garis46(); awal(); garis45(); awal(); garis42(); awal(); garis43(); awal(); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='x') {Bluetooth.println("Menulis X"); Bluetooth.println("selesai");} delay(100); if (BluetoothData=='y') {Bluetooth.println("Menulis Y"); garis49(); awal(); Bluetooth.println("Selesai");} delay(100); if (BluetoothData=='Z') {Bluetooth.println("Menulis Z"); garis41(); awal(); garis44(); awal(); Bluetooth.println("selesai");} }} void garis51 () //Karakter 5 garis 1 { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(40,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L30
pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i-=2){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i+=2){ pwm.setPWM(0, 0, i); delay (20);} } void garis52 () { sudut11 = map(138,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(40,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L31
for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(49,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis53() sudut11 = map(138,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(49,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(57,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L32
pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis54() { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(57,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}} delay(1000); sudut21 = map(107,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis55() { sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L33
else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(92,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis56() { sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L34
pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(92,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(53,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis57() { sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L35
for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis58() { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(48,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L36
else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis59() { sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(59,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L37
for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis510() { // karakter 5 garis 10 sudut11 = map(135,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis11 () //Karakter 1 garis 1 { sudut11 = map(60,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L38
for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(35,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(84,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(89,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis12 () { sudut11 = map(70,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L39
delay (20);}} sudut14 = map(39,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(86,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(47,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis13() { sudut11 = map(70,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(47,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L40
pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(87,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(56,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis14() { sudut11 = map(60,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(84,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L41
for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}} delay(1000); sudut21 = map(89,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i);//BASE delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i);//BASE delay (20);}} } void garis15() { sudut11 = map(60,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(84,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(50,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L42
pwm.setPWM(12, 0, i); delay (20);}} } void garis16() { sudut11 = map(60,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(36,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(84,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis17() { sudut11 = map(65,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L43
delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(35,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(85,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(45,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis18() { sudut11 = map(65,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(45,120,0, SERVOMIN4,SERVOMAX4); //Pitch
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L44
if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);} sudut121 = map(85,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(88,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i-=2){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i+=2){ pwm.setPWM(0, 0, i); delay (20);}} } void garis19() { sudut11 = map(64,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(45,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L45
delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(85,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis110() { // karakter 1 garis 10 sudut11 = map(60,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(44,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(35,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(85,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L46
pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(86,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);} void garis21 () //Karakter 2 garis 1 { sudut11 = map(72,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(37,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L47
delay (20);}} } void garis22 () { sudut11 = map(82,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(40,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(49,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis23() { sudut11 = map(82,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L48
sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(48,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(56,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis24() { sudut11 = map(72,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(55,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L49
for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}} delay(1000); sudut21 = map(100,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis25() { sudut11 = map(72,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(47,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L50
else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(55,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis26() { sudut11 = map(72,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(38,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L51
pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(47,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis27() { sudut11 = map(77,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(39,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(48,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L52
} void garis28() { sudut11 = map(77,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(47,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(99,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis29() { sudut11 = map(77,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L53
if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(47,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(55,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis210() { // karakter 2 garis 10 sudut11 = map(72,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(47,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L54
pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(93,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis31 () //Karakter 3 garis 1 { sudut11 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L55
else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(109,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis32 () { sudut11 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L56
pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(53,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis33() { sudut11 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(61,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L57
void garis34() { sudut11 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(60,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}} delay(1000); sudut21 = map(110,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis35() { sudut11 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L58
for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis36() { sudut11 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L59
delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis37() { sudut11 = map(104,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L60
pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis38() { sudut11 = map(104,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L61
delay(1000); sudut21 = map(110,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis39() { sudut11 = map(104,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis310() { // karakter 3 garis 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L62
sudut11 = map(98,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(106,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis41 () //Karakter 4 garis 1 { sudut11 = map(114,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L63
for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(124,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i-=2){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i+=2){ pwm.setPWM(0, 0, i); delay (20);}} } void garis42 () { sudut11 = map(125,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L64
delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis43() { sudut11 = map(125,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L65
delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis44() { sudut11 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(61,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L66
delay(1000); sudut21 = map(126,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis45() { sudut11 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(61,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis46() { sudut11 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //BASE
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L67
if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(53,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis47() { sudut11 = map(120,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L68
pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis48() { sudut11 = map(120,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L69
for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(125,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis49() { sudut11 = map(120,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L70
sudut121 = map(94,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(61,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis410() { // karakter 4 garis 10 sudut11 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(93,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L71
sudut21 = map(121,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} void garis51 () //Karakter 5 garis 1 { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(40,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i-=2){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i+=2){ pwm.setPWM(0, 0, i); delay (20);}} } void garis52 () { sudut11 = map(138,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L72
for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(40,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(49,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis53() { sudut11 = map(138,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 mundur if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L73
delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(49,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(89,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(57,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis54() { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(57,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L74
pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}} delay(1000); sudut21 = map(107,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis55() { sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(92,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L75
if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis56() { sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(92,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(53,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L76
for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis57() { sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis58() { sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L77
pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(48,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} } void garis59() { sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L78
else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut24 = map(59,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){ for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i); delay (20);}} } void garis510() { // karakter 5 garis 10 sudut11 = map(135,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){ for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i); delay (20);}} sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){ for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){ for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{ for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L79
delay (20);}} sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){ for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{ for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i); delay (20);}} sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){ for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{ for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} delay(1000); sudut21 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){ for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{ for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i); delay (20);}} }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI