Combinepdf 2
Combinepdf 2
ROBOTIKA
DISUSUN OLEH :
NAMA : Alvin Arrazy
NIM : 21120118130055
KELOMPOK : 05
Mengetahui,
Koordinator Praktikum Robotika 2021
Penyusun
i
Daftar Isi
Daftar Isi...................................................................................................................2
2.2.1 Tinkercad............................................................................................7
2.3.2 Tinkercad..........................................................................................11
ii
2.4.1 Percobaan 1 ......................................................................................12
3.2.1 Tinkercad..........................................................................................24
3.3.3 Interupsi............................................................................................28
3.3.4 Tinkercad..........................................................................................28
iii
3.5.2 Percobaan 2 ......................................................................................38
4.2.1 Tinkercad..........................................................................................47
4.2.5 Resistor.............................................................................................49
iv
5.1 Tujuan ......................................................................................................65
5.2.1 Tinkercad..........................................................................................66
v
6.2 Alat dan Bahan ........................................................................................90
vi
7.2.3 LED ................................................................................................111
vii
8.3.1 Breadboard .....................................................................................134
viii
9.3 Dasar Teori ............................................................................................161
ix
Daftar Gambar
Gambar 2.1 TinkerCad ............................................................................................ 7
Gambar 2.2 Arduino Uno R3 .................................................................................. 7
Gambar 2.3 Breadboard .......................................................................................... 8
Gambar 2.4 LCD 16x2 ............................................................................................ 8
Gambar 2.5 Power Supply ...................................................................................... 9
Gambar 2.6 Potensiometer ...................................................................................... 9
Gambar 2.7 Arduino Uno...................................................................................... 10
Gambar 2.8 TinkerCad .......................................................................................... 11
Gambar 2.9 TinkeCad ........................................................................................... 12
Gambar 2.10 Create New Circuit.......................................................................... 12
Gambar 2.11 Nama Project .................................................................................. 12
Gambar 2.12 Component Basic............................................................................. 12
Gambar 2.13 Komponen yang dibutuhkan ........................................................... 12
Gambar 2.14 Gambar Rangkaian Percobaan 1 ..................................................... 13
Gambar 2.15 TinkerCad ........................................................................................ 14
Gambar 2.16 Create New Circuit.......................................................................... 14
Gambar 2.17 Nama Project .................................................................................. 14
Gambar 2.18 Component Basic............................................................................. 14
Gambar 2.19 komponen yang dibutuhkan ............................................................ 14
Gambar 2.20 hasil percobaan ................................................................................ 15
Gambar 2.21 hasil percobaan 2 ............................................................................. 18
Gambar 2.22 tugas modul 1 .................................................................................. 21
Gambar 3.1 TinkerCad .......................................................................................... 24
Gambar 3.2 Arduino Uno R3 ................................................................................ 24
Gambar 3.3 Breadboard ........................................................................................ 25
Gambar 3.4 LED ................................................................................................... 25
Gambar 3.5 Push Button ....................................................................................... 26
Gambar 3.6 Arduino Uno...................................................................................... 26
Gambar 3.7 TinkerCad .......................................................................................... 29
Gambar 3.8 TinkerCad .......................................................................................... 30
x
Gambar 3.9 Create New Circuit............................................................................ 30
Gambar 3.10 Nama Project .................................................................................. 30
Gambar 3.11 component basic .............................................................................. 30
Gambar 3.12 komponen yang dibutuhkan ............................................................ 31
Gambar 3.13 rangkaian percobaan 1 ..................................................................... 31
Gambar 3.14 TinkerCad ........................................................................................ 32
Gambar 3.15 create new circuit ............................................................................ 32
Gambar 3.16 nama project .................................................................................... 33
Gambar 3.17 component basic .............................................................................. 33
Gambar 3.18 komponen yang dibutuhkan ............................................................ 33
Gambar 3.19 rangkaian percobaan 2 ..................................................................... 33
Gambar 3.20 kondisi LED setelah Push Button ditekan pertama kali .................. 35
Gambar 3.21 Kondisi LED ketika ditekan untuk kedua kali ................................ 35
Gambar 3.22 Kondisi LED ketika ditekan untuk ketiga kali ................................ 35
Gambar 3.23 Kondisi default LED saat program dijalankan ................................ 38
Gambar 3.24 kondisi LED saat push button sebelah kiri ditekan ......................... 38
Gambar 3.25 Hitungan 2 detik .............................................................................. 44
Gambar 3.26 Hitungan ketika di-reset .................................................................. 44
Gambar 4.1 TinkerCad .......................................................................................... 47
Gambar 4.2 Board Arduino uno ............................................................................ 47
Gambar 4.3 Breadboard ........................................................................................ 48
Gambar 4.4 Photoresistor Sensor .......................................................................... 48
Gambar 4.5 Resistor .............................................................................................. 49
Gambar 4.6 Flex Sensor ........................................................................................ 50
Gambar 4.7 LED ................................................................................................... 50
Gambar 4.8 Arduino Uno...................................................................................... 52
Gambar 4.9 Photoresistor sensor .......................................................................... 53
Gambar 4.10 Flex Sensor ...................................................................................... 54
Gambar 4.11 TinkerCad ........................................................................................ 55
Gambar 4.12 create new circuit ............................................................................ 55
Gambar 4.13 nama project .................................................................................... 55
xi
Gambar 4.14 component basic .............................................................................. 55
Gambar 4.15 komponen yang dibutuhkan ............................................................ 55
Gambar 4.16 rangkaian percobaan 1 ..................................................................... 56
Gambar 4.17 tinkercad .......................................................................................... 56
Gambar 4.18 create new circuit ............................................................................ 56
Gambar 4.19 nama project .................................................................................... 57
Gambar 4.20 component basic .............................................................................. 57
Gambar 4.21 komponen yang dibutuhkan ............................................................ 57
Gambar 4.22 rangkaian percobaan 2 ..................................................................... 57
Gambar 4.23 hasil percobaan 1 ............................................................................. 59
Gambar 4.24 hasil percobaan 2 ............................................................................. 60
Gambar 4.25 LED RGB berwarna hijau ............................................................... 62
Gambar 4.26 berwarna merah ............................................................................... 63
Gambar 4.27 berwarna kuning .............................................................................. 63
Gambar 5.1 TinkerCad .......................................................................................... 66
Gambar 5.2 Arduino Uno...................................................................................... 66
Gambar 5.3 Sensor PING ...................................................................................... 67
Gambar 5.4 Sensor HC-SR04 ............................................................................... 68
Gambar 5.5 LED ................................................................................................... 68
Gambar 5.6 Arduino IDE ...................................................................................... 69
Gambar 5.7 Breadboard ........................................................................................ 70
Gambar 5.8 kabel jumper ...................................................................................... 70
Gambar 5.9 arduino uno ........................................................................................ 72
Gambar 5.10 Arduino IDE .................................................................................... 73
Gambar 5.11 Sensor PING .................................................................................... 75
Gambar 5.12 Sensor HC-SR04 ............................................................................. 76
Gambar 5.13 Tinkercad ......................................................................................... 77
Gambar 5.14 create new circuit ............................................................................ 77
Gambar 5.15 nama project .................................................................................... 77
Gambar 5.16 component basic .............................................................................. 78
Gambar 5.17 rangkaian percobaan 1 ..................................................................... 78
xii
Gambar 5.18 Tinkercad ......................................................................................... 79
Gambar 5.19 create new circuit ............................................................................ 79
Gambar 5.20 nama project .................................................................................... 79
Gambar 5.21 component basic .............................................................................. 79
Gambar 5.22 rangkaian percobaan 3 ..................................................................... 80
Gambar 5.23 hasil percobaan 1 ............................................................................. 81
Gambar 5.24 hasil percobaan 3 ............................................................................. 83
Gambar 5.25 hasil percobaan 2 ketika membaca sensor....................................... 83
Gambar 5.26 LED RGB berwarna hijau ............................................................... 86
Gambar 5.27 berwarna biru................................................................................... 87
Gambar 5.28 berwarna merah ............................................................................... 87
Gambar 6.1 Laptop................................................................................................ 90
Gambar 6.2 Tinkercad ........................................................................................... 90
Gambar 6.3 Arduino Uno...................................................................................... 91
Gambar 6.4 Breadboard ........................................................................................ 91
Gambar 6.5 Motor Servo....................................................................................... 92
Gambar 6.6 Potensiometer .................................................................................... 92
Gambar 6.7 kabel jumper ...................................................................................... 93
Gambar 6.8 Tinkercad ........................................................................................... 94
Gambar 6.9 Arduino.............................................................................................. 94
Gambar 6.10 motor servo...................................................................................... 95
Gambar 6.11 tinkercad .......................................................................................... 97
Gambar 6.12 create new circuit ............................................................................ 97
Gambar 6.13 nama proyek .................................................................................... 97
Gambar 6.14 komponen dasar............................................................................... 97
Gambar 6.15 rangkaian percobaan 1 ..................................................................... 98
Gambar 6.16 tinkercad .......................................................................................... 99
Gambar 6.17 membuat sirkuit baru ....................................................................... 99
Gambar 6.18 nama proyek .................................................................................... 99
Gambar 6.19 komponen dasar............................................................................... 99
Gambar 6.20 rangkaian percobaan 2 ................................................................... 100
xiii
Gambar 6.21 hasil rangkaian percobaan 1 .......................................................... 101
Gambar 6.22 hasil rangkaian percobaan 2 .......................................................... 103
Gambar 6.23 rangkaian tugas .............................................................................. 105
Gambar 6.24 uraian alat dan bahan ..................................................................... 105
Gambar 7.1 Proteus ............................................................................................. 110
Gambar 7.2 Arduino Uno.................................................................................... 110
Gambar 7.3 LED ................................................................................................. 111
Gambar 7.4 motor stepper ................................................................................... 112
Gambar 7.5 arduino uno ...................................................................................... 113
Gambar 7.6 motor stepper ................................................................................... 114
Gambar 7.7 extract library .................................................................................. 115
Gambar 7.8 Proteus 8 .......................................................................................... 115
Gambar 7.9 proyek baru ...................................................................................... 115
Gambar 7.10 nama proyek baru .......................................................................... 115
Gambar 7.11 ambil alat ....................................................................................... 115
Gambar 7.12 rangkaian percobaan 1 ................................................................... 116
Gambar 7.13 Arduino IDE .................................................................................. 116
Gambar 7.14 sketch ............................................................................................. 117
Gambar 7.15 edit properti ................................................................................... 117
Gambar 7.16 tambahkan file .hex ....................................................................... 117
Gambar 7.17 run ................................................................................................. 118
Gambar 7.18 ambil alat ....................................................................................... 118
Gambar 7.19 rangkaian percobaan 2 ................................................................... 118
Gambar 7.20 arduino IDE ................................................................................... 118
Gambar 7.21 sketch ............................................................................................. 119
Gambar 7.22 edit properti ................................................................................... 119
Gambar 7.23 tambahkan file .hex ....................................................................... 119
Gambar 7.24 run ................................................................................................. 119
Gambar 7.25 hasil percobaan 1 ........................................................................... 121
Gambar 7.26 rangkaian percobaan 2 ................................................................... 122
Gambar 7.27 rangkaian tugas .............................................................................. 124
xiv
Gambar 8.1 breadboard ....................................................................................... 129
Gambar 8.2 arduino uno ...................................................................................... 129
Gambar 8.3 kabel jumper .................................................................................... 130
Gambar 8.4 motor dc........................................................................................... 131
Gambar 8.5 IC L293D......................................................................................... 131
Gambar 8.6 tinkercad .......................................................................................... 132
Gambar 8.7 potensiometer .................................................................................. 132
Gambar 8.8 multimeter ....................................................................................... 133
Gambar 8.9 breadboard ....................................................................................... 134
Gambar 8.10 arduino uno.................................................................................... 135
Gambar 8.11 kabel jumper .................................................................................. 136
Gambar 8.12 motor dc......................................................................................... 136
Gambar 8.13 IC L293D....................................................................................... 137
Gambar 8.14 tinkercad ........................................................................................ 138
Gambar 8.15 potensiometer ................................................................................ 139
Gambar 8.16 multimeter ..................................................................................... 140
Gambar 8.17 tinkercad ........................................................................................ 142
Gambar 8.18 create new circuit .......................................................................... 142
Gambar 8.19 nama proyek .................................................................................. 142
Gambar 8.20 basic component ............................................................................ 142
Gambar 8.21 komponen yang dibutuhkan .......................................................... 143
Gambar 8.22 rangkaian percobaan 1 ................................................................... 143
Gambar 8.23 tinkercad ........................................................................................ 144
Gambar 8.24 create new circuit .......................................................................... 144
Gambar 8.25 basic component ............................................................................ 145
Gambar 8.26 komponen yang dibutuhkan .......................................................... 145
Gambar 8.27 rangkaian percobaan 2 ................................................................... 145
Gambar 8.28 rangkaian diberikan huruf z........................................................... 147
Gambar 8.29 rangkaian diberi masukan huruf s ................................................. 147
Gambar 8.30 rangkaian diberi huruf x ................................................................ 148
Gambar 8.31 rangkaian diberi masukan huruf c ................................................. 148
xv
Gambar 8.32 keadaan awal rangkaian ................................................................ 149
Gambar 8.33 kondisi pertama ............................................................................. 149
Gambar 8.34 kondisi kedua................................................................................. 150
Gambar 8.35 rangkaian tugas .............................................................................. 151
Gambar 9.1 breadboard ....................................................................................... 155
Gambar 9.2 arduino uno ...................................................................................... 155
Gambar 9.3 kabel jumper .................................................................................... 156
Gambar 9.4 motor dc........................................................................................... 157
Gambar 9.5 sensor hcsr ....................................................................................... 157
Gambar 9.6 sensor IR .......................................................................................... 158
Gambar 9.7 IR Remote ....................................................................................... 158
Gambar 9.8 IC l293D .......................................................................................... 159
Gambar 9.9 tinkercad .......................................................................................... 159
Gambar 9.10 tinkercad ........................................................................................ 164
Gambar 9.11 buat sirkuit baru ............................................................................. 164
Gambar 9.12 komponen yang dibutuhkan .......................................................... 164
Gambar 9.13 Rangkaian percobaan 1 ................................................................. 165
Gambar 9.14 tinkercad ........................................................................................ 166
Gambar 9.15 buat sirkuit baru ............................................................................. 166
Gambar 9.16 komponen yang dibutuhkan .......................................................... 167
Gambar 9.17 rangkaian percobaan 2 ................................................................... 167
Gambar 9.18 tampilan saat tombol 2 ditekan...................................................... 172
Gambar 9.19 saat 4 ditekan ................................................................................. 172
Gambar 9.20 saat 5 ditekan ................................................................................. 173
Gambar 9.21 saat 6 ditekan ................................................................................. 173
Gambar 9.22 saat 8 ditekan ................................................................................. 174
Gambar 9.23 kondisi 1 ........................................................................................ 177
Gambar 9.24 kondisi 2 ........................................................................................ 178
Gambar 9.25 kondisi 3 ........................................................................................ 178
Gambar 9.26 kondisi 4 ........................................................................................ 179
xvi
Daftar Tabel
Tabel 6.1 Tabel kondisi servo ..............................................................................102
Tabel 6.2 Arah gerak servo ..................................................................................104
Tabel 7.1 motor stepper........................................................................................121
Tabel 7.2 motor stepper........................................................................................122
Tabel 8.1 hasil tugas .............................................................................................152
Tabel 9.1 Tombol Remote dan Kondisi yang Dihasilkan ....................................171
Tabel 9.2 data jarak sensor dan kondisi yang dihasilkan .....................................177
xvii
ABSTRAK
Laporan akhir ini membahas tentang tujuan,dasar teori, hasil percobaan,
analisis percobaan, analisis tugas serta kesimpulan dari modul-modul Praktikum
Robotika yang telah dilakukan. Modul yang telah dilakukan praktikumnya
berjumlah 8 modul yaitu Modul 1 (Bab II) adalah Pengantar Robotika, Modul 2
(Bab III) adalah Pemrograman Arduino, Modul 3 (Bab IV) adalah Sensor Cahaya
dan Sensor Tekukan, Modul 4 (Bab V) adalah Sensor Deteksi Objek, Modul 5 (Bab
VI) adalah Aktuator Motor Servo, Modul 6 (Bab VII) adalah Aktuator Motor
Stepper, Modul 7 (Bab VIII) adalah Aktuator Motor DC dan H-Bridge, dan terakhir
Modul 8 (Bab IX) adalah Navigasi Robot Beroda.
xviii
BAB I
PENDAHULUAN
1.1 Latar Belakang
Praktikum berasal dari kata praktik yang artinya pelaksanaan secara nyata apa
yang disebut dalam teori. Sedangkan pratikum adalah bagian dari pengajaran yang
bertujuan agar siswa mendapat kesempatan untuk menguji dan melaksanakan di
keadaan nyata, apa yang diperoleh dari teori dan pelajaran praktik (KBBI,
2001:785).
Melalui praktikum, peserta didik dapat memiliki banyak pengalaman, baik
berupa pengamatan langsung atau bahkan melakukan percobaan sendiri dengan
objek tertentu. Tidak diragukan lagi bahwa melalui pengalaman langsung (first-
hand experiences), peserta didik dapat belajar lebih mudah dibandingkan dengan
belajar melalui sumber sekunder, misalnya buku. Hal tersebut sangat sesuai dengan
pendapat Bruner yang menyatakan bahwa anak belajar dengan pola inactive melalui
perbuatan (learning by doing) akan dapat 12 mentransfer ilmu pengetahuan yang
dimilikinya pada berbagai situasi (Tresna Sastrawijaya, 1998 : 17).
Praktikum Robotika merupakan salah satu mata praktikum yang ada di
program studi S1 Teknik Komputer Fakultas Teknik Universitas Diponegoro. Pada
praktikum ini mempelajari beberapa dasar pemrograman system tertanam yang
wajib diketahui oleh mahasiswa Teknik Komputer yang akan menjadi dasar untuk
memasuki dunia perangkat keras dan digital. Praktikum ini dilaksanakan sebanyak
8 kali pertemuan, pembahasan secara urut dari pertemuan pertama adalah sebagai
berikut Pengantar Robotika, Pemrograman Arduino, Sensor Cahaya dan Sensor
Tekukan, Sensor Deteksi Objek, Aktuator Motor Servo, Aktuator Motor Stepper,
Aktuator Motor DC dan H-Bridge, dan terakhir Navigasi Robot Beroda.Mahasiswa
juga diharuskan untuk membuat laporan praktikum dari tiap-tiap modul setelah
praktikum dijalankan yang kemudian akan dilakukan asistensi dan responsi kepada
asisten praktikum.
1
1.2 Tujuan Praktikum
Tujuan dari dilaksanakannya Praktikum Robotika adalah agar mahasiswa
Teknik Komputer mempunyai pengalaman dalam menyusun serta
mengimplementasikan suatu sistem digital secara langsung yang nantinya akan
menjadi dasar dalam menempuh jenjang S1- Teknik Komputer.
2
1.3 Batasan Masalah
Pembatasan suatu masalah digunakan untuk menghindari adanya
penyimpangan maupun pelebaran pokok masalah agar laporan ini lebih terarah dan
memudahkan dalam pembahasan sehingga tujuan laporan akan tercapai. Beberapa
batasan masalah dalam penelitian ini adalah sebagai berikut:
1. Luas lingkup hanya meliputi informasi seputar Praktikum Robotika pada S1
Teknik Komputer Universitas Diponegoro.
2. Informasi yang disajikan yaitu : tujuan praktikum tiap modul, alat dan bahan
tiap modul, dasar teori tiap modul, hasil percobaan serta analisis tiap modul,
tugas tiap modul, dan kesimpulan dari tiap modul praktikum.
3
1.4 Metode Penulisan
Dalam melakukan penulisan ini ada beberapa metode yang dilakukan yaitu:
1. Teknik Pengumpulan Data
a. Praktikum
Dilakukan dengan mengikuti praktikum yang telah dijadwalkan dan mencatat
data-data yang diperlukan untuk menyusun laporan.
b. Membaca
Penulis membaca modul-modul yang telah disediakan dan juga membaca
referensi lain yang berasal dari internet guna menunjang penyusunan laporan.
2. Data-data yang Dibutuhkan
Jenis data yang dikumpulkan dalam penulisan laporan ini adalah :
a. Data Primer
Berupa data yang diperoleh langsung dari praktikum yaitu keluaran atau hasil
dari rangkaian yang dibuat.
b. Data Sekunder
Berupa data-data pendukung yang dari sumber di luar praktikum yang
menjadi acuan atau dasar teori dalam laporan yang dibuat.
4
1.5 Sistematika Penulisan
Untuk mempermudah penyusunan dan pembahasan penjilidan akhir ini,
penulis akan menguraikan secara garis besarnya dalam beberapa bab dan sub-bab
penulisan dengan rincian sebagai berikut :
BAB I PENDAHULUAN
Pada bab ini penulis membahas latar belakang, tujuan praktikum, batasan masalah,
metode penulisan, dan sistematika penulisan penjilidan akhir ini.
BAB II PENGANTAR ROBOTIKA
Pada bab ini penulis membahas mengenai robotika secara mendasar.
BAB III PEMROGRAMAN ARDUINO
Pada bab ini penulis membahas dasar-dasar untuk melakukan pemrograman pada
Board Arduino Uno.
BAB IV SENSOR CAHAYA DAN SENSOR TEKUKAN
Pada bab ini penulis membahas tentang Sensor Cahaya dan Sensor Tekukan
BAB V SENSOR DETEKSI OBJEK
Pada bab ini penulis membahas tentang Sensor Deteksi Objek.
BAB VI AKTUATOR MOTOR SERVO
Pada bab ini penulis membahas tentang Motor Servo sebagai Aktuator.
BAB VII AKTUATOR MOTOR STEPPER
Pada bab ini penulis membahas Motor Stepper sebagai Aktuator.
BAB VIII AKTUATOR MOTOR DC DAN H-BRIDGE
Pada bab ini penulis membahas Motor DC dan H-Bridge
BAB IX NAVIGASI ROBOT BERODA
Pada bab ini penulis membahas Robot Beroda.
BAB X PENUTUP
Pada bab ini penulis membahas kesimpulan serta saran selama keberlangsungan
praktikum.
5
BAB II
PENGANTAR ROBOTIKA
2.1 Tujuan
1. Praktikan dapat mengerti fungsi board Arduino Uno
2. Praktikan dapat memahami fungsi dari komponen-komponen yang di gunakan
yaitu Arduino Uno , breadboard, LCD, Power Supply, dan Potensiometer.
3. Praktikan dapat memahami rangkaian sederhana dengan board Arduino Uno
4. Praktikan dapat membuat program sederhana yang diimplementasikan pada
rangkaian menggunakan Tinkercad
5. Praktikan dapat mengetahui fungsi/ bagian dari setiap instruksi yang digunakan
dalam membuat program
6
2.2 Alat dan Bahan
2.2.1 Tinkercad
7
atau revR3 adalah pengembangan dari Arduino Uno sejak awal peluncuran hingga
sekarang.
2.2.3 Breadboard
8
2.2.5 Power Supply
9
dari 3 kaki Terminal dengan sebuah shaft atau tuas yang berfungsi sebagai
pengaturnya.
2.3 Dasar Teori
2.3.1 Board Arduino Uno
10
untuk bootloader, Arduino Uno juga memiliki 2 KB untuk SRAM dan 1 KB untuk
EEPROM.
(sumber : https://eprints.akakom.ac.id/4940/3/3_143310018_BAB_II.pdf)
2.3.2 Tinkercad
Tinkercad adalah simulator elektronika berbasis web buatan Autodesk yang
di dalam nya menyediakan komponen Arduino UNO yang dapat diprogram.
Tinkercad tidak hanya dapat membuat project elektronik tetapi juga dapat
digunakan untuk membuat desain grafis lainnya seperti desain grafis 3D. adapun
Tinkercad ini biasa digunakan untuk media belajar untuk membangun suatu desain
elektronik tanpa menggunakan alat fisik.
11
2.4 Langkah Kerja
2.4.1 Percobaan 1
1. Buka Webside Tinkercad
12
Gambar 2.14 Gambar Rangkaian Percobaan 1
6. Masukkan Source Code
#include <LiquidCrystal.h>
void setup()
{
lcd.begin(16, 2);
lcd.clear();
}
void loop ()
{
lcd.setCursor(0,0);
lcd.print("Tegangan");
lcd.setCursor(9, 0);
lcd.print(voltageReading);
lcd.setCursor(14, 0);
lcd.print("V");
lcd.setCursor(0,1);
lcd.print("Arus");
lcd.setCursor(9, 1);
lcd.print(currentReading);
lcd.setCursor(14, 1);
lcd.print("mA");
voltageInput = (analogRead(A0)*5.0)/1023.0;
voltageReading = voltageInput/(RB/(RA + RB));
currentReading = 1000*(voltageReading/(RA+RB));
}
2.4.2 Percobaan 2
1. Buka Webside Tinkercad
13
Gambar 2.15 TinkerCad
void setup()
14
{
Serial.begin(9600);
pinMode(pot,INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
volt=analogRead(A0);
voltage=(5./1023.)*(volt);
analogWrite(8, volt);
Serial.println(voltage);
delay(1000);
15
untuk membaca tegangan dan arus yang dihasilkan oleh power supply, lalu hasilnya
ditampilkan melalui LCD.
void setup()
{
lcd.begin(16, 2);
lcd.clear();
}
void loop ()
{
lcd.setCursor(0,0);
lcd.print("Tegangan");
lcd.setCursor(9, 0);
lcd.print(voltageReading);
lcd.setCursor(14, 0);
lcd.print("V");
lcd.setCursor(0,1);
lcd.print("Arus");
lcd.setCursor(9, 1);
lcd.print(currentReading);
lcd.setCursor(14, 1);
lcd.print("mA");
voltageInput = (analogRead(A0)*5.0)/1023.0;
voltageReading = voltageInput/(RB/(RA + RB));
currentReading = 1000*(voltageReading/(RA+RB));
}
16
ada 2 perintah yakni lcd.begin (16, 2) yang merupakan inisialisasi dari LCD
yang dipakai. Selanjutnya perintah lcd.clear() agar ketika simulasi pertama kali
dijalankan LCD dalam keadaan bersih atau belum ada apapun yang ditampilkan.
Pada baris void loop() berfungsi untuk looping program. Perintah yang
pertama yaitu lcd.setCursor(0,0); untuk men-set cursor pada titik 0,0 atau
bagian pojok kiri atas. Untuk menampilkan teks tegangan perintah yang digunakan
yaitu lcd.print("Tegangan"); z . Selanjutnya set cursor lagi pada titik 9,0 atau
baris 1 kolom ke 10, pada bagian ini juga akan menampilkan hasil dari variabel
voltageReading. Pada titik 14,0 atau baris 1 kolom 15 kita set cursor lagi yang akan
menampilkan teks V ( Volt). Kemudian pada baris kedua akan menampikan nilai
arus dari Power Supply, yang pertama set cursor pada baris 2 kolom 0 ( 0, 1)
kemudian untuk menampilkan teks “Arus” diberikan perintah lcd.print
(“Arus”). Lalu untuk menampilkan hasil dari variabel currentReading
menggunakan perintah lcd.print(currentReading) yang akan ditampilkan
pada kolom ke 10 baris ke 2. Selanjutnya kita tampilkan juga satuan yang digunakan
yaitu mA pada kolom 15, baris ke 2.
Untuk menghasilkan nilai dari voltageReading dan currentReading
perlu dilakukan konversi nilai terlebih dahulu, karena nilai masukkan awalnya
berupa sinyal analog yang berasal dari A0. Rumus yang digunakan yaitu
voltageInput = (analogRead(A0)*5.0)/1023.0; jadi nilai analog yang masuk
17
2.5.2 Percobaan 2
void setup()
{
Serial.begin(9600);
pinMode(pot,INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
volt=analogRead(A0);
voltage=( 5./1023.)*(volt);
analogWrite(8, volt);
Serial.println(voltage);
18
delay(1000);
}
Mula-mula membuat inisialisasi untuk tipe data tiap variabel yang
digunakan, untuk variabel volt menggunakan tipe data Integer, Variabel voltage
menggunakan tipe data float. Kemudian melakukan inisalisasi untuk pin yang
digunakan. Pada bagian void setup ( ) digunakan untuk mendeklarasikan pin
input dan juga ouput yang akan digunakan. Perintah serial.begin (9600) adalah
perintah yang digunakan untuk mendelkarasikan kecepatan transfer data, yaitu
9600 bit per detik. Perintah pinMode (pot, INPUT) adalah perintah untuk
mendeklarasikan bahwa variabel pot yang terhubung ke pin A0 sebagai input.
Selanjutnya perintah pinMode (led, OUTPUT) adalah perintah untuk
mendeklarasikan variabel led yang terhubung ke pin 8 sebagian ouput.
Perintah voltage=( 5./1023.)*(volt); akan mengkonversi nilai dari
input analog tadi, yaitu nilai input analog dikalikan dengan 5 Volt yang merupakan
tegangan acuan kemudian dibagi dengan 1023 yang merupakan nilai resolusi dari
Arduino Uno. Kemudian hasil dari konversi tersbut yang sudah tersimpan pada
variabel voltage, akan di tampilkan dengan media LED yang terhubung ke pin 8
Arduino Uno, perintah yang digunakan yaitu analogWrite(8, volt); . Perintah
Serial.println (voltage) akan menampilkan tegangan pada monitor , lalu
perintah delay (1000) yaitu antara nyala dan padamnya LED berjeda 1000 ms.
19
2.6 Tugas
Pada tugas modul 1 akan dibuat sebuah rangkaian yang terdiri dari Arduino
Uno, potensiometer, resistor, dan LCD. Rangkaian ini bekerja dengan menampilkan
tegangan yang dihasilkan oleh potensiometer dan menghitung kemudian
menampilkan juga arusnya dalam satuan nano ampere. Resistor yang digunakan
memiliki hambatan sebesar 220 Ohm, sehingga untuk menghitung arusnya
menggunakan rumus I(Arus) = V(Tegangan) x R(Hambatan). Berikut di bawah ini
adalah source codenya.
#include <LiquidCrystal.h>
void setup() {
Serial.begin(9600);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
voltAnalog=analogRead(A0);
//menampilkan nilainya
lcd.setCursor(0, 0);
lcd.print("Volt");
lcd.setCursor(5,0);
lcd.print(voltage);
lcd.setCursor(9,0);
lcd.print("V");
lcd.setCursor(0, 1);
lcd.print("nA");
lcd.setCursor(5,1);
lcd.print(nanoAmpere);
delay(1000);
}
Pada kode di atas yang pertama dilakukan adalah menginisialisasi library
yang digunakan serta variabel-variabelnya. Variabel yang digunakan adalah
tegangan dalam analog, tegangan sebenarnya, dan arus sebenarnya dalam satuan
20
nano. Setelah dihitung dengan rumus yang diimplementasikan dalam bentuk kode,
ditampilkan hasilnya pada LCD. Hasilnya seperti gambar di bawah ini.
Pada gambar 2.1 di atas dapat diperhatikan bahwa pada LCD sudah
ditampilkan besar tegangan yang diberikan oleh potensiometer serta arusnya
21
2.7 Kesimpulan
1. Perintah void loop() berfungsi untuk looping program
2. Perintah delay (1000) bermakna jeda selama 1000ms
3. Perintah void setup ( ) digunakan untuk mendeklarasikan pin input dan juga
ouput yang akan digunakan.
4. Perintah serial.begin (9600) adalah perintah yang digunakan untuk
mendelkarasikan kecepatan transfer data, yaitu 9600 bit per detik.
5. Perintah pinMode (pot, INPUT) adalah perintah untuk mendeklarasikan
bahwa variabel pot yang terhubung ke pin A0 sebagai input.
6. Resistansi pada potensiometer akan mempengaruhi kecerahan pada LED.
Semakin tinggi nilai resistansi potensiometer, maka LED akan semakin terang.
Dan sebaliknya apabila nilai resistansi pada potensiometer semakin rendah,
maka LED akan semakin redup.
7. Untuk mengitung arus tegangan yaitu menggunakan rumus I(Arus) =
V(Tegangan) x R(Hambatan)
22
BAB III
PEMROGRAMAN ARDUINO
3.1 Tujuan
1. Praktikan dapat mengerti fungsi dari board Arduino Uno
2. Praktikan mampu memahami pemograman Arduino
3. Praktikan dapat melakukan implementasi pemograman kedalam rangkaian
arduino
4. Praktikan dapat memahami berbagai macam interupsi
5. Praktikan dapat melakukan implementasi interupsi kedalam rangkaian
sederhana yang dibuat
23
3.2 Alat dan Bahan
3.2.1 Tinkercad
24
header ICSP dan tombol reset. Kata “Uno” memiliki makna “Satu” sedangkan R3
atau revR3 adalah pengembangan dari Arduino Uno sejak awal peluncuran hingga
sekarang.
3.2.3 Breadboard
3.2.4 LED
25
semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada
jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan
sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada
Remote Control TV ataupun Remote Control perangkat elektronik lainnya.
26
Arduino Uno adalah board mikrokontroler berbasis ATmega328
(datasheet). Memiliki 14 pin input dari output digital dimana 6 pin input tersebut
dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz osilator
kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Untuk
mendukung mikrokontroler agar dapat digunakan, cukup hanya menghubungkan
Board Arduino Uno ke komputer dengan menggunakan kabel USB atau listrik
dengan AC yang-ke adaptor-DC atau baterai untuk menjalankannya. Setiap 14 pin
digital pada arduino uno dapat digunakan sebagai input dan output, menggunakan
fungsi pinMode(), digitalwrite(), dan digitalRead(). Fungsi fungsi tersebut
beroperasi di tegangan 5 volt, Setiap pin dapat memberikan atau menerima suatu
arus maksimum 40 mA dan mempunyai sebuah resistor pull-up (terputus secara
default) 20-50 kOhm.
Arduino Uno dapat berkomunikasi dengan mikrokontroler lain
menggunakan UART TTL sebagai komunikasi serial yang tersedia pada pin digital
0 (RX) dan 1 (TX). Power supply Arduino Uno menggunakan adaptop DC yang
terhubung melalui jack adaptor pada koneksi port input supply. Arduino Uno
memiliki 32 flash memory4 untuk menyimpan kode dan 2KB yang di gunakan
untuk bootloader, Arduino Uno juga memiliki 2 KB untuk SRAM dan 1 KB untuk
EEPROM.
(sumber : https://eprints.akakom.ac.id/4940/3/3_143310018_BAB_II.pdf)
27
Void setup () merupakan perintah dimana jika terdapat kode program input
dan output didalam nya maka kode tersebut hanya dibaca sekali.
void setup()
{
//statment
}
(sumber : https://www.bluino.com/2019/10/bahasa-pemrograman-arduino.html)
3.3.3 Interupsi
Interupsi adalah suatu perintah yang dimasukan kedalam kode program
untuk memicu program lain secara eksternal maupun internal. Pada Arduino sudah
disediakan fungsi khusus untuk menggunakan interupsi yaitu dengan menggunakan
perintah attachInterrupt. Interupsi ini berguna untuk membuat suatu pekerjaan /
pereintah / task bekerja secara otomatis misalnya untuk membaca data secara terus-
menerus. Arduino Uno memiliki 2 pin interupsi yaitu INT0 pada pin 2 digital dan
INT1 pada pin 3 digital. Ada beberapa mode penggunaan interupsi yaitu:
1. Mode LOW , pada mode ini interupsi akan diaktifkan saat pin INT memiliki
logika low dan akan aktif jika tetap berada di logika low.
2. Mode CHANGE, pada mode ini interupsi akan diaktifkan saat terjadi perubaan
logika baik dari low ke high atau sebaiknya.
3. Mode RISING, pada mode ini pengaktifan interupsi akan terjadi jika pin
mengalami perubahan logika baik dari low ke high. Adapun perbedaan dari
mode CHANGE yaitu ketika dari high ke low interupsi tidak akan aktif
4. Mode FALLING , pada mode ini perubahan logika pada pin INT dari high ke
low akan mengaktifkan fungsi interupsi.
(sumber : http://omelektro.blogspot.com/2019/02/fungsi-interrupt-pada-arduino)
3.3.4 Tinkercad
Tinkercad adalah simulator elektronika berbasis web buatan Autodesk yang
di dalam nya menyediakan komponen Arduino UNO yang dapat diprogram.
Tinkercad tidak hanya dapat membuat project elektronik tetapi juga dapat
digunakan untuk membuat desain grafis lainnya seperti desain grafis 3D. adapun
Tinkercad ini biasa digunakan untuk media belajar untuk membangun suatu desain
elektronik tanpa menggunakan alat fisik.
28
Gambar 3.7 TinkerCad
(sumber: http://raywandaaffandi.blogspot.com)
29
3.4 Langkah Kerja
3.4.1 Percobaan 1
6. Buka Webside Tinkercad
30
Gambar 3.12 komponen yang dibutuhkan
10. Pasang rangkaian percobaan
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(button, INPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
void loop()
{
buttonState = digitalRead(button);
if(buttonState == 1){ //button dah dipencet
delay(50);
buttonState = digitalRead(button); //if it is 0
considered one press
if(buttonState == 0){
31
state = old + 1;
}
}
else{
delay(100);//button not pressed
}
switch (state){
case 1:
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
old = state;
break;
case 2:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
old = state;
break;
case 3:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
old = state;
break;
default:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
old = 0;//reset
break;
}
}
3.4.2 Percobaan 2
1. Buka Webside Tinkercad
32
Gambar 3.16 nama project
4. Masukkan komponen yang dibutuhkan
void setup()
{
33
Serial.begin(9600);
for (int i=6; i<9; i++){
pinMode(i, OUTPUT);
}
//tambahkan kode external interrupt di bawah:
attachInterrupt(digitalPinToInterrupt(2), callint1, FALLING);
attachInterrupt(digitalPinToInterrupt(3), callint2, RISING);
}
void loop()
{
ledoff();
digitalWrite(7, HIGH);
ledoff();
digitalWrite(6, HIGH);
ledoff();
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
ledoff();
}
void ledoff(){
delay(1500);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
void callint2(){
state = 1;
}
void nyala_terus(){
sei();
while (true) {
if (state == 1)
break;
}
state = 0;
1. }
34
3.5 Hasil dan Analisa Percobaan
3.5.1 Percobaan 1
Gambar 3.20 kondisi LED setelah Push Button ditekan pertama kali
35
Percobaan pertama membuat rangkaian menggunakan komponen
breadboard, arduino uno, resistor, push button, LED, serta kabel jumper.
Rangkaian yang dibuat menggunakan konsep interrupt dengan push button sebagai
komponen yang menginterupsi.
void setup()
{
Serial.begin(9600);
for (int i=6; i<9; i++){
pinMode(i, OUTPUT);
}
//tambahkan kode external interrupt di bawah:
attachInterrupt(digitalPinToInterrupt(2), callint1, FALLING);
attachInterrupt(digitalPinToInterrupt(3), callint2, RISING);
}
void loop()
{
ledoff();
digitalWrite(7, HIGH);
ledoff();
digitalWrite(6, HIGH);
ledoff();
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
ledoff();
}
void ledoff(){
delay(1500);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
void callint2(){
state = 1;
}
void nyala_terus(){
36
sei();
while (true) {
if (state == 1)
break;
}
state = 0;
1. }
Pertama kali dideklarasikan pin yang akan digunakan pada rangkaian.
Kemudian inisiasi kondisi state untuk awal dan akhir bernilai 0. Lalu buttonState
yang akan bernilai low sebelum ditekan. Pada void setup(), pertama menginisiasi
perintah pinMode untuk ketiga LED menjadi output, dan perintah pinMode untuk
push button menjadi input. Lalu inisiasi untuk ketiga LED diatur dalam keadaan
mati sebelum input dari push button. Kemudian pada bagian void loop(), dibuat
Switch case yang dengan push button membaca pengkondisian buttonState
apabila push button ditekan maka akan masuk ke buttonState == 1; yang
mempengaruhi nyala LED. Kemudian jika push button ditekan kembali maka nilai
buttonState akan ditambah dengan 1 berdasarkan nilai buttonState terakhir.
Dan apabila sampai di state terakhir yaitu LED terakhir menyala, jika push button
ditekan kembali maka case kembali menjadi default atau semua LED mati.
Cara kerja rangkaiannya yaitu apabila push button pertama kali ditekan,
yang terjadi adalah LED biru akan menyala. Push button ditekan untuk kedua
kalinya maka hanya LED hijau yang menyala. Lalu jika push button ditekan ketiga
kalinya maka hanya LED merah yang menyala. Selanjutnya apabila push button
ditekan untuk keempat kalinya maka semua LED akan mati. Proses ini akan
berulang terus apabila push button kembali ditekan. Kondisi LED, dieksekusi
berdasarkan nilai variabel “state” yang ada di pengkondisian switch case. Setiap
kali push button ditekan, maka akan menambah nilai dari state sebanyak 1, dan
merubah case yang terpilih pada pengkondisian tersebut.
37
3.5.2 Percobaan 2
Gambar 3.24 kondisi LED saat push button sebelah kiri ditekan
38
terjadi adalah kedua LED akan menyala terus menerus. Sedangkan jika push button
2 ditekan, maka kedua LED akan kembali pada kondisi semula.
Berikut source code percobaan 2
int state = 0;
void setup()
{
Serial.begin(9600);
for (int i=6; i<9; i++){
pinMode(i, OUTPUT);
}
//tambahkan kode external interrupt di bawah:
attachInterrupt(digitalPinToInterrupt(2), callint1, FALLING);
attachInterrupt(digitalPinToInterrupt(3), callint2, RISING);
}
void loop()
{
ledoff();
digitalWrite(7, HIGH);
ledoff();
digitalWrite(6, HIGH);
ledoff();
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
ledoff();
}
void ledoff(){
delay(1500);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
void callint2(){
state = 1;
}
void nyala_terus(){
sei();
while (true) {
if (state == 1)
break;
}
state = 0;
1. }
39
Pertama mendeklarasikan state yang bernilai 0. Kemudian inisiasi
serial.begin(9600); yaitu kecepatan transfer data dengan nilai 9600 bit per
detik. Lalu mendeklarasikan perulangan for yang berjalan apabila i bernilai 6 dan
menggunakan increment hingga nilai i kurang dari 9. Lalu mengatur pinMode i agar
digunakan menjadi output. Kemudian terdapat perintah Interrupt, untuk pin 2
diberikan fungsi callint1 dengan tipe FALLING, dan untuk pin3 diberikan fungsi
callint3 dengan tipe RISING. Lalu pada bagian void loop() diatur urutan nyala
LED, yaitu ledoff() untuk mematikan semua LED kemudian perintah
digitalWrite(7,HIGH); yang berarti LED pada pin 7 atau LED sebelah kiri
menyala, kemudian LED tersebut mati dengan kode ledoff() lalu LED pada pin
6 atau LED sebelah kanan menyala karena bernilai high, dan akan menjalankan
perintah ledoff() lagi yang kemudian kedua LED akan menyala bersamaa karena
keduanya bernilai high. Selanjutnya pada bagian void ledoff() untuk mengatur
fungsi mematikan kedua LED karena kedua LED pada pin 6 dan pin 7 bernilai low
dengan delay 1500 ms. Kemudian pada bagian void callint2(),
40
3.6 Tugas
Pada tugas modul 2 akan dibuat rangkaian counter yang dibuat dengan
menggunakan Arduino Uno, 7-segment, dan Push Button. Counter akan
ditampilkan pada 7-segment. Fungsi dari push button adalah untuk me-reset
counter kembali menjadi 0.
int a1 = 0;//A
int b1 = 1;//B
int c1 = 8;//C
int d1 = 3;//D
int e1 = 4;//E
int f1 = 5;//F
int g1 = 6;//G
int buttonState = 0;
int hitungan = 0;
void setup(){
pinMode(a1, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(c1, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(f1, OUTPUT);
pinMode(g1, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2),callinterrupt, RISING);
}
41
digitalWrite(d1, LOW);
digitalWrite(e1, LOW);
digitalWrite(f1, HIGH);
digitalWrite(g1, LOW);
}
else if (digit == 3){
digitalWrite(a1, LOW);
digitalWrite(b1, LOW);
digitalWrite(c1, LOW);
digitalWrite(d1, LOW);
digitalWrite(e1, HIGH);
digitalWrite(f1, HIGH);
digitalWrite(g1, LOW);
}
else if (digit == 4){
digitalWrite(a1, HIGH);
digitalWrite(b1, LOW);
digitalWrite(c1, LOW);
digitalWrite(d1, HIGH);
digitalWrite(e1, HIGH);
digitalWrite(f1, LOW);
digitalWrite(g1, LOW);
}
else if (digit == 5){
digitalWrite(a1, LOW);
digitalWrite(b1, HIGH);
digitalWrite(c1, LOW);
digitalWrite(d1, LOW);
digitalWrite(e1, HIGH);
digitalWrite(f1, LOW);
digitalWrite(g1, LOW);
}
else if (digit == 6){
digitalWrite(a1, LOW);
digitalWrite(b1, HIGH);
digitalWrite(c1, LOW);
digitalWrite(d1, LOW);
digitalWrite(e1, LOW);
digitalWrite(f1, LOW);
digitalWrite(g1, LOW);
}
else if (digit == 7){
digitalWrite(a1, LOW);
digitalWrite(b1, LOW);
digitalWrite(c1, LOW);
digitalWrite(d1, HIGH);
digitalWrite(e1, HIGH);
digitalWrite(f1, HIGH);
digitalWrite(g1, HIGH);
}
else if (digit == 8){
digitalWrite(a1, LOW);
digitalWrite(b1, LOW);
digitalWrite(c1, LOW);
digitalWrite(d1, LOW);
digitalWrite(e1, LOW);
42
digitalWrite(f1, LOW);
digitalWrite(g1, LOW);
}
else if (digit == 9){
digitalWrite(a1, LOW);
digitalWrite(b1, LOW);
digitalWrite(c1, LOW);
digitalWrite(d1, LOW);
digitalWrite(e1, HIGH);
digitalWrite(f1, LOW);
digitalWrite(g1, LOW);
}
}
void loop () {
counting();
}
void counting() {
displayDigit(hitungan);
delay(1000);
hitungan += 1;
displayDigit(hitungan);
if(hitungan == 10){
hitungan = 0;
displayDigit(hitungan);
delay(1000);
}
}
void callinterrupt(){
hitungan = 0;
displayDigit(hitungan);
}
43
Gambar 3.25 Hitungan 2 detik
Pada gambar 3.1 di atas counter sedang pada hitungan 2 sehingga 7-segment
menampilkan angka 2.
44
3.7 Kesimpulan
1. Perintah callinterrupt() berfungsi untuk melakukan reset
2. Untuk melakukan perulangan pada sebuah kondisi atau kode program maka
menggunakan perintah loop()
3. Fungsi displayDigit() pada tugas berfungsi untuk menampilkan hitungan di
7-segment
4. Mode LOW, CHANGE, RISING, FALLING merupakan perintah interupsi.
5. Push button pada modul 2 praktikum Robotika digunakan sebagai input-an
interupsi untuk reset
45
BAB IV
SENSOR CAHAYA DAN SENSOR TEKUKAN
4.1 Tujuan
1. Praktikan dapat memahami fungsi dari sensor cahaya
2. Praktikan dapat memahami prinsip kerja cahaya dan sensor tekukan
3. Praktikan dapat menjelaskan prinsip kerja sensor cahaya pada Praktikum
Robotika modul 3
4. Praktikan dapat mengimplementasikan pengkodean pada rangkaian Arduino
5. Praktikan dapat mengimplementasikan sensor cahaya pada sebuah rangkaian
6. Praktikan dapat mengimplementasikan sensor tekukan pada sebuah rangkaian
46
4.2 Alat dan Bahan
4.2.1 Tinkercad
47
Arduino Uno berbasis IC ATmega328P, memiliki 14 pin I/O digital (6 pin
PWM), 6 input analog, kristal kuarsa 16 MHz, koneksi USB, colokan listrik, header
ICSP dan tombol reset.
Pada praktikum ini, board arduino uno digunakan sebagai komponen utama
peyusun rangkaian elektronika, menerima masukan dan menjalankan program yang
telah diberikan.
4.2.3 Breadboard
48
Light Dependent Resistor atau disingkat dengan LDR adalah jenis Resistor
yang nilai hambatan atau nilai resistansinya tergantung pada intensitas cahaya yang
diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang dan nilai
Hambatannya akan menjadi tinggi jika dalam kondisi gelap.
Naik turunnya nilai Hambatan akan sebanding dengan jumlah cahaya yang
diterimanya. Pada umumnya, Nilai Hambatan LDR akan mencapai 200 Kilo Ohm
(kΩ) pada kondisi gelap dan menurun menjadi 500 Ohm (Ω) pada Kondisi Cahaya
Terang.
Pada praktikum ini, photoresistor digunakan untuk mengubah besar
tegangan keluaran pin digital I/O berdasarkan banyaknya cahaya yang ditangkap
oleh photoresistor.
4.2.5 Resistor
49
4.2.6 Sensor Tekukan (Flex Sensor)
50
tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan
semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada
jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan
sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada
Remote Control TV ataupun Remote Control perangkat elektronik lainnya.
Pada praktikum ini, LED digunakan sebagai indikator, yang menunjukkan
besar arus yang mengalir. Semakin terang LED maka arus yang mengalir semakin
besar, sebaliknya semakin redup LED maka arus yang mengalir semakin kecil.
51
4.3 Dasar Teori
4.3.1 Board Arduino Uno
52
4.3.2 Photoresistor Sensor
53
4.3.3 Sensor Tekukan (Flex Sensor)
54
4.4 Langkah Kerja
4.4.1 Percobaan 1
1. Buka webside Tinkercad
55
Gambar 4.16 rangkaian percobaan 1
6. Masukkan Source Code
const int inPin=A1;
void setup()
{
Serial.begin(9600);
pinMode(inPin, INPUT);
}
void loop()
{
int value=analogRead(inPin);
float volt = value/1023.0 * 5.0;
float persen = map(value, 0, 1023, 0, 100);
Serial.print("analog value: ");
Serial.print(value);
Serial.print("\tVolt: ");
Serial.print(volt);
Serial.print("\tPersen: ");
Serial.println(persen);
delay(1000);
}
4.4.1. Percobaan 2
1. Buka webside Tinkercad
56
Gambar 4.19 nama project
4. Masukkan komponen yang dibutuhkan
5. Rangkaian percobaan 2
57
value = analogRead(flexPin);
nilai = map(value, 59, 256, 0, 255);
analogWrite(ledPin, nilai); Serial.println(value);
delay(1000);
}
58
4.5 Hasil dan Analisa Percobaan
4.5.1 Percobaan 1
59
delay(1000) supaya update keluaran tidak terlalu cepat agar kita bisa melihat
perbandingannya.
4.5.2 Percobaan 2
60
4.6 Tugas
Pada tugas modul 3 akan dibuat sebuah rangkaian dengan alat antara lain,
Sensor Cahaya, Sensor Tekukan, LED RGB, dan Arduino Uno. Rangkaian ini akan
bekerja dengan menghidupkan lampu LED RGB dengan warna merah, hijau, atau
kuning, sesuai dengan kondisi tertentu. Kondisi yang dimaksud adalah ketika
masukan pada Sensor Cahaya atau Sensor Tekukan mencapai nilai tertentu, maka
lampu akan hidup sesuai dengan nilai tersebut. Berikut di bawah ini adalah kode
konfigurasi rangkaian.
const int flexPin = A2;
const int inPin = A1;
const int redPin = 11;
const int bluePin = 9;
const int greenPin = 10;
//Variabel flexsensor
int nilai;
int value;
//Variabel photoresistor
int valueP;
int volt;
void setup()
{
Serial.begin(9600);
pinMode(inPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop()
{
valueP = analogRead(inPin);
value = analogRead(flexPin);
Serial.print("ValueP: ");
Serial.println(valueP);
Serial.print("Value: ");
Serial.println(value);
61
}else if(value<500){
analogWrite(greenPin,0);
}
delay(1000);
}
Pada kode di atas, kondisi dan tanggapan dari lampu LED RGB diuraikan
menjadi seperti di bawah ini,
Jika nilai masukan analog dari sensor cahaya lebih sama dengan 500, maka
warna merah yang akan hidup.
Jika nilai masukan analog dari sensor tekukan lebih sama dengan 500, maka
warna hijau yang akan hidup.
Jika nilai masukan analog dari sensor cahaya dan tekukan lebih sama dengan
500, maka warna kuning yang akan hidup.
62
Gambar 4.26 berwarna merah
Pada gambar 4.26 nilai masukan analog sensor tekukan diubah menjadi 159
dan sensor cahaya menjadi 929, menghasilkan LED menyala warna merah.
63
4.7 Kesimpulan
1. Photoresistor merupakan keluaran yang bekerja sesuai dengan keadaan
cahaya disekitarnya
2. Nilai resistansi photoresistor bergantung pada intensitas cahaya , jika
intensitas cahaya semakin tinggi maka nilai resistansinya semakin kecil,
jika intensitas cahaya semakin rendah maka nilai resistansinya semakin
besar.
3. Variable inPin untuk mendeklarasikan pin A1 yang terhubung pada
terminal 1 pada photoresistor.
4. Variable float persen digunakan untuk maping seberapa besar
presentasi tegangan tergantung dari masukan analog.
5. Serial print digunakan untuk mengecek hasil dari variable yang sudah
dideklarasikan.
6. Flex sensor digunakan sebagai masukan dimana dia akan bekerja sesuai
tekukannya.
7. Cara kerja flex sensor yaitu ketika resistansi flex sensor paling kecil yaitu
di 0o, maka nilai keluarannya maksimal sehingga nyala LED sangat terang
dan jika flex sensor dibengkokkan maka nilai resistansinya akan semakin
besar sehingga nyala LED akan semakin redup sampai pada 180o maka
LED akan mati.
64
BAB V
SENSOR DETEKSI OBJEK
5.1 Tujuan
65
5.2 Alat dan Bahan
5.2.1 Tinkercad
66
Arduino Uno berbasis IC ATmega328P, memiliki 14 pin I/O digital
(6 pin PWM), 6 input analog, kristal kuarsa 16 MHz, koneksi USB, colokan
listrik, header ICSP dan tombol reset.
Pada praktikum ini, board arduino uno digunakan sebagai komponen
utama peyusun rangkaian elektronika, menerima masukan dan menjalankan
program yang telah diberikan.
67
5.2.4 Sensor Jarak PING (HC-SR04)
68
yang sering kita jumpai pada Remote Control TV ataupun Remote Control
perangkat elektronik lainnya.
Pada praktikum ini, LED digunakan sebagai indikator yang
menunjukkan sumber energi panas yang ditangkap oleh PIR sensor.
5.2.6 Arduino IDE
69
5.2.7 Breadboard
70
yang dapat ditancapkan, sedangkan female ditunjukkan oleh ujung berupa
lubang soket.
Pada praktikum ini, kabel jumper digunakan sebagai penghubung
antar komponen pada rangkaian dengan bantuan breadboard.
71
5.3 Dasar Teori
5.3.1 Board Arduino Uno
72
5.3.2 Arduino IDE
73
ikon tombol pintas untuk memverifikasi dan meng-upload program,
membuat, membuka, dan menyimpan sketch, dan membuka monitor serial.
Pada arduino bahasa pemrograman yang digunakan adalah bahasa
C/C++. Program pada Arduino terbagi menjadi tiga bagian utama
yaitu Structure, Values (berisi variable dan konstantata) dan yang
terakhir function. Structure-struktur kode pada arduino yaitu berisi
fungsi setup() dan loop().
a. Setup()
fungsi ini dipanggil pertama kali ketika menjalankan sketch.
digunakan sebagai tempat inisialisai variable, pin mode,
penggunaan library dan lainnya. fungsi ini dijalankan sekali
ketika board dinyalakan atau di reset.
b. loop()
Setelah membuat fungsi setup() sebagai tempat inisialisai variabel
dan menetapkan nilai maka selanjutnya fungsi loop() seperti namanya fungsi
ini akan melakukan perulangan berturu-turut, memungkina program untuk
mengubah dan menanggapi. digunakan untuk mengontrol board Arduino.
c. Values.
Berisi variable atau konstanta sesuai dengan type data yang didukung
oleh Arduino.
d. Function.
Segmentasi kode ke fungsi memungkinkan programmer untuk
membuat potongan-potongan modular kode yang melakukan tugas yang
terdefinisi dan kemudian kembali ke asal kode dari mana fungsi itu
“dipanggil”. Umumnya menggunakan fungsi adalah ketika salah satu
kebutuhan untuk melakukan tindakan yang sama beberapa kali dalam sebuah
program.
(Sumber : http://allgoblog.com/apa-itu-arduino-ide-dan-arduino-sketch/)
74
5.3.3 Sensor PING
Sensor ini dapat mengukur jarak antara 3 cm sampai 300 cm. keluaran
dari sensor ini berupa pulsa yang lebarnya merepresentasikan jarak. Lebar
pulsanya bervariasi dari 115 uS sampai 18,5 mS. Pada dasanya, Ping))) terdiri
dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan
sebuah mikropon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz
menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi
pantulan suaranya.
75
(Sumber : https://fahmizaleeits.wordpress.com/tag/cara-kerja-sensor-ping/)
(Sumber:https://www.nn-digital.com/blog/2019/07/31/cara-kerja-sensor-hc-sr04-dan-contoh-
program-dengan-arduino/)
76
5.4 Langkah Kerja
5.4.1 Percobaan 1
1. Buka webside Tinkercad
77
Gambar 5.16 component basic
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
5.4.2 Percobaan 2
78
1. Buka webside Tinkercad
79
Gambar 5.22 rangkaian percobaan 3
void loop()
{
digitalWrite(6, HIGH);
}
void callint0(){
if (digitalRead(2)){
digitalWrite(4, HIGH);
Serial.println("int0 nyala");
}
else{
digitalWrite(4, LOW);
Serial.println("int0 mati");
}
}
void callint1(){
if (digitalRead(3)){
digitalWrite(5, HIGH); Serial.println("int1 nyala");
}
else{
digitalWrite(5, LOW);
Serial.println("int1 mati");
}
80
}
81
penerimaan gelombang ultrasonik. Dideklarasikan juga variabel distance
dengan tipe data integer yang digunakan untuk menyimpan jarak yang terbaca
antara sensor dengan benda. Lalu pada bagian void setup () mendefinisikan
mode pinnya, yang pertama pinMode(trigPin, OUTPUT) yakni difungsikan
sebagai output, yang kedua pinMode(echoPin, INPUT) yakni difungsikan sebagai
input. Kemudian untuk inisiasi pada serial monitor digunakan perintah
Serial.begin(9600). Selanjutnya pada void loop () yang pertama terdapat
digitalWrite(trigPin, LOW) yang berarti di awal pin trigger dari HCSR
diberikan nilai low, setelah itu diberi delay. Lalu digitalWrite(trigPin, HIGH)
yang berarti diberikan nilai high yaitu pin HCSR akan mengirimkan gelombang
ultrasonik, dan diberi delay lagi. Kemudian di set low lagi. Pada duration =
pulseIn(echoPin, HIGH) yaitu berdasarkan gelombang masukan yang diperoleh
dari pin echo. Lalu diberikan perintah distance= duration*0.034/2 bahwa
distance dihitung dengan rumus pembacaan durasi waktu dikalikan dengan
kecepatan bunyi dikonversikan ke cm/s jadinya hanya tinggal 0,034 cm/s lalu
dibagi 2 karena gelombang bolak balik yakni pengiriman dan penerimaan. Yang
terakhir Serial.print untuk menampilkan pada monitor agar kita bisa mengamati.
82
5.5.2 Percobaan 2
83
maka LED akan menyala warna kuning. Sedangkan apabila kedua sensor PIR
mendeteksi sinar inframerah bersamaan maka LED akan menyala warna
putih, dan jika kedua sensor PIR tidak mendeteksi sinar inframerah maka LED
akan menyala warna hijau.
84
5.6 Tugas
Pada tugas Bab 5 akan dibuat sebuah rangkaian dengan alat antara
lain, Sensor HCSR, LED RGB, dan Arduino Uno. Rangkaian ini akan bekerja
dengan mendeteksi objek sekitar Sensor dan LED RGB akan bertindak sesuai
kondisi dari posisi objek.
// C++ code
//
const int trigPin = 6;
const int echoPin = 5;
const int redPin = 11;
const int bluePin = 10;
const int greenPin = 9;
long duration;
int distance;
void setup()
{
Serial.begin(9600);
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2; //(cm/mikrosekon)
85
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
Pada kode di atas, kondisi dan tanggapan dari lampu LED RGB
diuraikan menjadi seperti di bawah ini,
Jika objek berada kurang dari 50cm dari sensor, maka LED akan menyala
warna merah.
Jika objek berada di antara 50cm sampai 100cm dari sensor, maka LED
akan menyala warna biru.
Jika objek berada lebih dari 100cm sensor, maka LED akan menyala
warna hijau.
86
Gambar 5.27 berwarna biru
Pada gambar 5.27 objek berada di jarak 75cm dari sensor, menghasilkan
LED menyala warna biru.
87
5.7 Kesimpulan
1. Sensor PIR dapat membaca sinar inframerah pasif yang dimiliki oleh
benda hidup maupun mati yang berada di depannya.
88
BAB VI
AKTUATOR MOTOR SERVO
6.1 Tujuan
1. Praktikan dapat memahami dan menjelaskan prinsip kerja motor servo
2. Praktikan dapat membuat rangkaian sederhana menggunakan Arduino
3. Praktikan dapat melakukan implementasi motor servo kedalam rangkaian
4. Praktikan dapat memahami fungsi setiap komponen yang digunakan pada
rangkaian
5. Praktikan dapat memahami dan melakukan pengkodean pada Arduino
6. Praktikan dapat membangkitkan sinyal PWM yang berfungsi untuk mengatur
sudut motor servo
89
6.2 Alat dan Bahan
6.2.1 Laptop/PC
6.2.2 TinkerCad
90
6.2.3 Arduino UNO
6.2.4 Breadboard
91
Breadboard merupakan sebuah papan yang berfungsi untuk merancang
sebuah elektronik sederhana. breadboard digunakan sebagai media untuk membuat
prototype, dan atau uji coba.
Salah satu keuntungan menggunakan breadboard adalah komponen-
komponen yang dirakit tidak akan mengalami kerusakan, sehingga dapat digunakan
lagi pada model rangkaian yang lain.
Pada praktikum ini, breadboard digunakan sebagai media wiring untuk
menghubungkan tiap komponen elektronika.
6.2.5 Motor Servo
6.2.6 Potensiometer
92
tergolong dalam Kategori Variable Resistor. Secara struktur, Potensiometer terdiri
dari 3 kaki Terminal dengan sebuah shaft atau tuas yang berfungsi sebagai
pengaturnya.
93
6.3 Dasar Teori
6.3.1 TinkerCad
94
dengan jenis AVR dari perusahaan Atmel. Mikrokontroler itu sendiri adalah chip
atau IC (integrated circuit) yang bisa diprogram menggunakan komputer. Tujuan
menanamkan program pada mikrokontroler adalah agar rangkaian elektronik dapat
membaca input, memproses input tersebut dan kemudian menghasilkan output
sesuai yang diinginkan. Jadi mikrokontroler bertugas sebagai „otak‟ yang
mengendalikan input, proses dan output sebuah rangkaian elektronik. Salah satu
jenis arduino yang sering digunakan yaitu jenis Arduino Uno. Secara umu m
arduino terdiri dari dua bagian, yaitu:
1. Hardware berupa papan input/output (I/O) yang open source.
2. Software arduino yang juga open source, meliputi software arduino IDE untuk
menulis program dan driver untuk koneksi dengan komputer.
(Sumber: http://repositori.unsil.ac.id)
6.3.3 Motor Servo
95
poros sudah tepat seperti yang di inginkan atau belum, dan jika belum, maka kontrol
input akan mengirim sinyal kendali untuk membuat posisi poros tersebut tepat pada
posisi yang diinginkan. Untuk lebih jelasnya mengenai sistem kontrol loop tertutup,
perhatikan contoh sederhana beberapa aplikasi lain dari sistem kontrol loop
tertutup, seperti penyetelan suhu pada AC, kulkas, setrika dan lain sebagainya.
Ada dua jenis motor servo yaitu servo AC dan DC yang dimana motor servo
AC menangani arus yang tinggi sedangkan motor servo DC digunakan pada
rangkaian dengan tegangan/ arus yang kecil. Motor servo juga di bedakan
berdasarkan rotasi nya , yaitu motor servo rotation 180⁰ dan servo rotation
continuous.
(Sumber : http://trikueni-desain-sistem.blogspot.com)
96
6.4 Langkah Kerja
6.4.1 Percobaan 1
1. Buka webside Tinkercad
5. Rangkaian percobaan 1
97
Gambar 6.15 rangkaian percobaan 1
6.4.2 Percobaan 2
1. Buka webside Tinkercad
98
Gambar 6.16 tinkercad
99
Gambar 6.20 rangkaian percobaan 2
Servo myservo;
int value;
double angle;
const int pin_servo = 13;
const int pin_potensio = A0;
void setup()
{
Serial.begin(9600);
myservo.attach(pin_servo);
}
void loop()
{
value = analogRead(pin_potensio);
Serial.println(value);
angle = map(value, 0, 1023, 0, 180);
Serial.println(angle);
myservo.write(angle);
delay(15);
}
7. Amati hasil
100
6.5 Hasil dan Analisa Percobaan
6.5.1 Percobaan 1
int pos = 0;
Servo myservo;
void setup()
{
Serial.begin(9600);
//servo di pin 9, posisi minimal 500 (0 derajat), posisi max 2500
(180 derajat)
myservo.attach(9, 500, 2500);
}
void loop()
{
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
Serial.println(pos);
delay(15); // Wait for 15 millisecond(s)
}
delay(1000);
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
Serial.println(pos);
delay(15); // Wait for 15 millisecond(s)
101
}
}
Berdasarkan source code diatas mula-mula ditambahkan library #include
<Servo.h> untuk dapat menggunakan motor servo. Selanjutnya dideklarasikan
variabel pos dengan tipe data integer bernilai 0 dan variabel myservo. Pada bagian
void setup() pertama terdapat perintah Serial.begin(9600); yang digunakan
untuk memulai programnya. Kemudian myservo.attach(9, 500, 2500); untuk
mendeklarasikan pin 9 arduino sebagai pin input dengan range 500 sampai 2500
yang berarti 0 derajat sampai 180 derajat. Selanjutnya pada bagian void loop(),
terdapat pengkondisian for sebagai increment nilai pos yang memiliki nilai awal 0
akan di increment hingga 180. Lalu terdapat myservo.write(pos) yang berfungsi
sebagai penggerak motor sesuai nilai pos. Kemudian Serial.println(pos);
untuk mencetak nilai pos pada serial monitor. Untuk memberikan jeda setiap
perubahan nilai sebanyak 15 milisekon digunakan perintah delay(15);.
Terdapat pengkondisian for lagi yang digunakan untuk decrement dari nilai
pos tertinggi yaitu 180 sampai 0. Kemudian akan digerakkan juga dengan perintah
myservo.write(pos);. Setelah itu akan ditampilkan pada serial monitor dan
diberikan delay selama 15 milisekon.
Tabel 6.1 Tabel kondisi servo
No Kondisi Keterangan
1 Nilai pos = 0 Motor servo berada di posisi awal 0°
2 Nilai pos = 180 Motor servo berada pada sudut 180° setelah
berputar berlawanan arah jarum jam dari posisi
awal 0°.
3 Nilai pos = 180 Motor servo berada di posisi awal 180°
4 Nilai pos = 0 Motor servo berada pada sudut 0° setelah berputar
searah jarum jam dari posisi awal 180°.
102
6.5.2 Percobaan 2
Servo myservo;
int value;
double angle;
const int pin_servo = 13;
const int pin_potensio = A0;
void setup()
{
Serial.begin(9600);
myservo.attach(pin_servo);
}
void loop()
{
value = analogRead(pin_potensio);
Serial.println(value);
angle = map(value, 0, 1023, 0, 180);
Serial.println(angle);
103
myservo.write(angle);
delay(15);
}
Berdasarkan source code diatas mula-mula ditambahkan library #include
<Servo.h> untuk dapat menggunakan motor servo. Selanjutnya dideklarasikan
variabel value dengan tipe data integer, variabel angle dengan tipe data double, dan
variabel myservo. const int pin_servo = 13; const int pin_potensio =
A0; lalu dilakukan inisiasi pin 13 dan A0 yang nantinya akan digunakan motor
servo dan potensiometer. Pada bagian void setup() pertama terdapat perintah
Serial.begin(9600); yang digunakan untuk memulai programnya. Kemudian
myservo.attach(pin_servo); untuk mendeklarasikan pin servo. Selanjutnya
pada bagian void loop(), value = analogRead(pin_potensio); untuk
mengatur value supaya bernilai sama dengan pin analog yang terhubung ke
potensiometer. Untuk dapat dimunculkan paa serial monitor digunakan perintah
Serial.println(value); Perintah angle = map(value, 0, 1023, 0, 180);
berfungsi mengubah nilai masukan dari potensiometer dengan range nilai 0-1023
menjadi 0-180. Serial.println(angle); untuk menampilkan nilai angle pada
serial monitor. delay(15); untuk memberikan jeda selama 15 milisekon.
104
6.6 Tugas
Pada tugas Bab 6 akan dibuat sebuah rangkaian seperti pada gambar 6.23 di
bawah ini. Rangkaian tersebut akan dianalisis perilakunya sesuai dengan logika
yang diterapkan pada source code.
int m = 0;
Servo lengan1;
Servo lengan2;
Servo jari1;
Servo jari2;
105
Servo jari3;
void setup()
{
Serial.begin(9600);
lengan1.attach(8, 500, 2500);
lengan2.attach(9, 500, 2500);
jari1.attach(5);
jari2.attach(6);
jari3.attach(7);
attachInterrupt(0, genggamObjek, RISING);
}
void loop()
{
int pot1 = analogRead(A0);
int pot2 = analogRead(A1);
int sudut1 = map(pot1, 0, 1023, 0, 180);
int sudut2 = map(pot2, 0, 1023, 0, 180);
lengan1.write(sudut1);
lengan2.write(sudut2);
Serial.print("Analog1= ");
Serial.println(pot1);
Serial.print("Analog2= ");
Serial.println(pot2);
Serial.print("Sudut1= ");
Serial.println(sudut1);
Serial.print("Sudut2= ");
Serial.println(sudut2);
}
void genggamObjek()
{
if(m) {
jari1.write(90);
jari2.write(90);
jari3.write(90);
m = 0;
}
else{
jari1.write(0);
jari2.write(0);
jari3.write(0);
m = 1;
}
}
Tabel 6.3 Tabel analisis dari microservo
No Servo Nilai Analog Nilai Sudut Arah Gerakan Servo
1 Servo Biru 1 0 0 -
2 Servo Biru 1 246 43 Counter clock-wise
3 Servo Biru 1 655 115 Counter clock-wise
4 Servo Biru 2 0 0 Counter clock-wise
106
5 Servo Biru 2 246 43 Counter clock-wise
6 Servo Biru 2 675 118 Counter clock-wise
Pada tabel 6.3 adalah hasil dari percobaan rangkaian. Kesimpulan yang
didapat dari percobaan tersebut adalah potensiometer 1 dan 2 berfungsi sebagai
pemberi arah untuk servo. Servo bergerak sesuai dengan besar tegangan analog
yang diberikan oleh potensiometer. Semakin besar tegangan analog yang diberikan,
semakin mendekati 180 derajat sudut pada Servo.
107
6.7 Kesimpulan
1. PWM adalah hasil dari pengaruh masukan potensiometer yang digunakan untuk
mengatur rotasi motor servo
2. myservo.write(pos) berfungsi sebagai penggerak motor sesuai nilai pos
3. Perintah Serial.println(pos); untuk mencetak nilai pos pada serial monitor
4. Pada percobaan 1 perintah myservo.attach(9, 500, 2500); untuk
mendeklarasikan pin 9 arduino sebagai pin input dengan range 500 sampai 2500
yang berarti 0 derajat sampai 180 derajat
5. Perintah myservo.write(pos) yang berfungsi sebagai penggerak motor sesuai
nilai pos
6. Pengkondisian for digunakan untuk decrement dari nilai pos tertinggi
7. Pada tugas , positional microservo (Servo yang berwarna hitam) bergerak ketika
tombol ditekan
8. Jika nilai potensiometer besar maka sudut yang dihasilkan juga besar.
108
BAB VII
AKTUATOR MOTOR STEPPER
7.1 Tujuan
1. Praktikan dapat memahami fungsi dari motor stepper
2. Praktikan dapat memahami prinsip kerja motor stepper
3. Praktikan dapat membuat rangkaian sederhana menggunakan Arduino
4. Praktikan dapat mengimplementasikan motor stepper kedalam rangkaian
5. Praktikan dapat melakukan analisa dari rangkaian yang telah di buat
109
7.2 Alat dan Bahan
7.2.1 Proteus
110
pengembangan karena board ini berfungsi sebagai media prototyping sirkuit
mikrokontroler.
Arduino UNO berbasis IC ATmega328P, memiliki 14 pin I/O digital (6 pin
PWM), 6 input analog, kristal kuarsa 16 MHz, koneksi USB, colokan listrik, header
ICSP dan tombol reset.
Pada praktikum ini, board arduino UNO digunakan sebagai komponen
utama peyusun rangkaian elektronika, menerima masukan dan menjalankan
program yang telah diberikan.
7.2.3 LED
111
7.2.4 Motor Stepper
112
7.3 Dasar Teori (Sertakan sumber dan gambar)
7.3.1 Arduino UNO
113
7.3.2 Motor Stepper
(sumber: http://zonaelektro.net)
114
7.4 Langkah Kerja
7.4.1 Percobaan 1
1. Extract library dan copy file ke Proteus 8 Professional\DATA\LIBRARY
115
5. Buatlah rangkaian
void setup() {
pinMode(A,OUTPUT);pinMode(B,OUTPUT);
pinMode(C,OUTPUT);pinMode(D,OUTPUT);
delay(1000);
}
void step_1(){
digitalWrite(A,1);digitalWrite(B,0);
digitalWrite(C,0);digitalWrite(D,0);
delay(1000);
}
void step_2(){
digitalWrite(A,0);digitalWrite(B,1);
digitalWrite(C,0);digitalWrite(D,0);
delay(1000);
}
void step_3(){
digitalWrite(A,0);digitalWrite(B,0);
digitalWrite(C,1);digitalWrite(D,0);
116
delay(1000);
}
void step_4(){
digitalWrite(A,0);digitalWrite(B,0);
digitalWrite(C,0);digitalWrite(D,1);
delay(1000);
}
void CW(){
step_2();
step_3();
step_4();
step_1();
}
void CCW(){
step_4();
step_3();
step_2();
step_1();
}
void loop() {
CW();
CCW();
}
8. Klik menu Sketch, lalu tekan “Export Compiled Binary”
117
11. Run simulation
void loop() {
118
// put your main code here, to run repeatedly:
move_stepper(1,0,0,0);
move_stepper(1,1,0,0);
move_stepper(0,1,0,0);
move_stepper(0,1,1,0);
move_stepper(0,0,1,0);
move_stepper(0,0,1,1);
move_stepper(0,0,0,1);
move_stepper(1,0,0,1);
}
119
120
7.5 Hasil Percobaan dan Analisa
7.5.1 Percobaan 1
121
jarum jam. void loop() memutar sekali searah jarum jam kemudian memutar
berlawanan arah jarum jam.
7.5.2 Percobaan 2
122
Berdasarkan source code pada percobaan 2 pertama pada void
setup()terdapat pengkondisian for untuk memberi masukan pulsa ke motor
stepper. Kemudian pada void loop()terdapat 8 step yang pertama
move_stepper(1,0,0,0) sehingga motor stepper akan berada di sudut 45 derajat.
Step berikutnya akan bertambah sebesar 45 derajat sampai pada step ke 8 motor
stepper berada di sudut 360 derajat.
123
7.6 Tugas
Pada tugas Bab 7 akan dibuat sebuah rangkaian Arduino Uno dengan
menggunakan motor stepper. Cara kerja dari rangkaian ini adalah akan disediakan
2 buah push-button yang dimana tombol pertama akan membuat motor bergerak ke
arah jarum jam dan motor dan tombol kedua akan motor bergerak ke arah
berlawanan jarum jam.
void setup() {
124
pinMode(A,OUTPUT);pinMode(B,OUTPUT);
pinMode(C,OUTPUT);pinMode(D,OUTPUT);
pinMode(buttonA, INPUT);
pinMode(buttonB, INPUT);
delay(1000);
}
void step_1(){
digitalWrite(A,1);digitalWrite(B,0);
digitalWrite(C,0);digitalWrite(D,0);
delay(500);
}
void step_2(){
digitalWrite(A,0);digitalWrite(B,1);
digitalWrite(C,0);digitalWrite(D,0);
delay(500);
}
void step_3(){
digitalWrite(A,0);digitalWrite(B,0);
digitalWrite(C,1);digitalWrite(D,0);
delay(500);
}
void step_4(){
digitalWrite(A,0);digitalWrite(B,0);
digitalWrite(C,0);digitalWrite(D,1);
delay(500);
}
void CW(){
step_1();
step_2();
step_3();
step_4();
}
void CCW(){
step_4();
step_3();
step_2();
step_1();
}
void loop() {
if(digitalRead(buttonA) && digitalRead(buttonB)){
delay(1000);
}else if(digitalRead(buttonA)){
CW();
delay(1000);
}else if(digitalRead(buttonB)){
CCW();
delay(1000);
}
}
Rangkaian di atas dikonfigurasikan menggunakan logika yang terdapat pada
source code. Cara kerja dari kodenya adalah setelah setup dan inisiasi pin
menggunakan variabel, terdapat 4 buah fungsi yang masing-masing akan membuat
125
motor berputar ke arah 0, 90, 180, 270 derajat. Kemudian akan diurutkan sesuai
arah jarum jam pada fungsi “CW()” dan berlawanan jarum jam pada fungsi
“CCW()”. Lalu tinggal ditambahkan pengondisian dimana tombol A akan
mengaktifkan clock wise dan tombol B mengaktifkan counter clock wise.
126
7.7 Kesimpulan
1. Fungsi CW membuat pergerakan searah jarum jam
2. Fungsi CCW membuat pergerakan berlawanan jarum jam
3. Pengkondisian for pada percobaan 2 berfungsi untuk memberi masukan pulsa
ke motor stepper
4. Pada percobaan 1 , void loop() memutar sekali searah jarum jam (CW)
kemudian memutar berlawanan arah jarum jam (CCW) sehingga membuat
lampu menyala secara bergantian berdasarkan urutan pada void CW dan void
CCW dengan rentang waktu / delay 1000ms
5. Pada percobaan 2 membuat rangkaian yang dimana rangkaian tersebut untuk
menunjukan sudut putaran motor stepper dan pin akan menyala pada sudut
tertentu sebagai indikator sudut yang dihasilkan
127
BAB VIII
AKTUATOR MOTOR DC DAN H-BRIDGE
8.1 Tujuan
1. Praktikan memahami fungsi dari akuator motor DC
2. Praktikan memahami prinsip kerja H-Bridge
3. Praktikan dapat membuat rangkaian sederhana menggunakan akuator motor
dc dan menerapkan H-Bridge pada rangkaian
4. Praktikan dapat melakukan analisis rangkaian yang telah dibuat
128
8.2 Alat dan Bahan
8.2.1 Breadboard
129
pengembangan karena board ini berfungsi sebagai media prototyping sirkuit
mikrokontroler.
Arduino Uno berbasis IC ATmega328P, memiliki 14 pin I/O digital (6 pin
PWM), 6 input analog, kristal kuarsa 16 MHz, koneksi USB, colokan listrik, header
ICSP dan tombol reset.
Pada praktikum ini, board arduino uno digunakan sebagai komponen utama
peyusun rangkaian elektronika, menerima masukan dan menjalankan program yang
telah diberikan.
130
8.2.4 Motor DC
8.2.5 IC L293D
131
8.2.6 TinkerCad
8.2.7 Potensiometer
132
8.2.8 Multimeter
133
8.3 Dasar Teori
8.3.1 Breadboard
134
8.3.2 Arduino Uno
135
8.3.3 Kabel jumper
8.3.4 Motor DC
136
Apabila tegangan yang diberikan ke Motor Listrik DC lebih rendah dari
tegangan operasionalnya maka akan dapat memperlambat rotasi motor DC tersebut
sedangkan tegangan yang lebih tinggi dari tegangan operasional akan membuat
rotasi motor DC menjadi lebih cepat. Namun ketika tegangan yang diberikan ke
Motor DC tersebut turun menjadi dibawah 50% dari tegangan operasional yang
ditentukan maka Motor DC tersebut tidak dapat berputar atau terhenti. Sebaliknya,
jika tegangan yang diberikan ke Motor DC tersebut lebih tinggi sekitar 30% dari
tegangan operasional yang ditentukan, maka motor DC tersebut akan menjadi
sangat panas dan akhirnya akan menjadi rusak.
Motor listrik DC menggunakan fenomena elektromagnet untuk bergerak,
ketika arus listrik diberikan ke kumparan, permukaan kumparan yang bersifat utara
akan bergerak menghadap ke magnet yang berkutub selatan dan kumparan yang
bersifat selatan akan bergerak menghadap ke utara magnet. Saat ini, karena kutub
utara kumparan bertemu dengan kutub selatan magnet ataupun kutub selatan
kumparan bertemu dengan kutub utara magnet maka akan terjadi saling tarik
menarik yang menyebabkan pergerakan kumparan berhenti. Untuk
menggerakannya lagi, tepat pada saat kutub kumparan berhadapan dengan kutub
magnet, arah arus pada kumparan dibalik.
(Sumber : https://teknikelektronika.com/pengertian-motor-dc-prinsip-kerja-dc-motor/)
8.3.5 IC L293D
137
Motor DC yang dikontrol dengan driver IC L293D dapat dihubungkan ke ground
maupun ke sumber tegangan positif karena di dalam driver L293D sistem driver
yang digunakan adalah totem pool.Pada dasarnya motor DC harus dapat mengatur
kecepatan dan arah putar dari motor DC itu sendiri. Pada awalnya untuk dapat
melakukan pengaturan kecepatan motor DC dapat menggunakan metode PWM
(Pulse Width Modulation) sedangkan untuk mengatur arah putarannya dapat
menggunakan rangkaian H-bridge yang tersusun dari 4 buah transistor. IC L293D
sebagai driver motor DC dapat mengatur arah putar dan disediakan pin untuk input
yang berasal dari PWM untuk mengatur kecepatan motor DC.
(Sumber : https://danoyostasia141009.wordpress.com/2016/11/24/prinsip-kerja-driver-l293d/)
8.3.6 TinkerCad
138
8.3.7 Potensiometer
139
8.3.8 Multimeter
140
4. Fungsi Hfe.
Tidak semua alat ukur memiliki fungsi Hfe. Fungsi tersebut digunakan untuk
mengetahui nilai dari faktor penguatan transistor. Fungsi Hfe ini biasanya
digunakan untuk mengukur penguatan transistor yang terdapat pada tipe NPN
dan PNP.
5. Mengukur Nilai Kapasitansi.
Fungsi lain yang belum tentu ada pada setiap Multitester adalah mengukur
nilai kapasitansi dari suatu kapasitor. Baik pada tipe Analog maupun Digital,
keduanya memiliki batas ukur tingkat resistansi yang harus diperhatikan.
6. Mengukur Frekuensi Sinyal.
Fungsi yang terakhir adalah untuk mengetahui nilai Frekuensi dari suatu
isyarat atau sinyal pada komponen elektronika.
Alat ukur Multimeter ini memiliki cara kerja yang cukup unik. Di dalam
alat ini terdapat sebuah kumparan yang terbuat dari bahan tembaga. Kumparan
tersebut diletakkan di antara dua kutub yaitu Utara dan Selatan. Pada kumparan
tersebut terdapat sebuah jarum ukur atau jarum meter sebagai penunjuk skala.
Apabila dua ujung kumparan tersebut dialiri oleh arus lisrik, maka jarum jam akan
bergerak menuju skala tertentu.
(Sumber : https://www.pengelasan.net/multimeter/)
141
8.4 Langkah Kerja
8.4.1 Percobaan 1
1. Buka webside Tinkercad
142
Gambar 8.21 komponen yang dibutuhkan
5. Rangkaian percobaan 1
int enM = 5;
int m1 = 3;
int m2 = 4;
int getIn;
void setup()
{
pinMode(enM,OUTPUT); //pin enable sebagai output
pinMode(m1,OUTPUT); //pin m1 sebagai output
pinMode(m2,OUTPUT); //pin m2 sebagai output
Serial.begin(9600);
digitalWrite(enM,HIGH); //mengaktifkan pin enable
}
void loop()
{
getIn = Serial.read();
if (getIn == 's'){
analogWrite(enM,255);
143
digitalWrite(m1,HIGH);
digitalWrite(m2,LOW);
}
if (getIn == 'z'){
analogWrite(enM,255);
digitalWrite(m1,LOW);
digitalWrite(m2,HIGH);
}
if (getIn == 'x'){
analogWrite(enM,255);
digitalWrite(m1,LOW);
digitalWrite(m2,LOW);
}
if (getIn == 'c'){
analogWrite(enM,255);
digitalWrite(m1,HIGH);
digitalWrite(m2,HIGH);
}
}
7. Amati hasil
8.4.2 Percobaan 2
1. Buka webside Tinkercad
144
Gambar 8.25 basic component
2. Rangkaian percobaan 2
145
3. Masukkan Source Code
int enM = 5;
int m1 = 3;
int m2 = 4;
int i = 0;
void setup()
{
Serial.begin(9600);
pinMode(enM,OUTPUT);
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
analogWrite(enM, 0);
attachInterrupt(0, arahputar, RISING);
}
void loop()
{
int pot1 = analogRead(A0);
int outputValue = map(pot1, 0, 1023, 0, 255);
analogWrite(enM, outputValue);
}
void arahputar(){
if (i == 0){
digitalWrite(m1, LOW);
digitalWrite(m2, HIGH);
i = 1;
}
else{
digitalWrite(m1, HIGH);
digitalWrite(m2, LOW);
i = 0;
}
}
7. Amati hasil
146
8.5 Hasil dan Analisa Percobaan
8.5.1 Percobaan 1
Percobaan pertama yaitu membuat rangkaian yang menampilkan tegangan.
Komponen yang digunakan pada percobaan ini yaitu Motor DC, Arduino Uno, H-
Bridge dan Multimeter. Motor DC disini akan bergerak jika mendapat suplai
tegangan.
147
Apabila diketik huruf s maka muncul tegangan sebesar -4,7 Volt dan
kecepatan yang terukur pada motor DC sebesar -9393, motor DC berputar CCW
karena nilai pin 3 high dan pin 4 low.
8.5.2 Percobaan 2
Komponen yang digunakan pada percobaan kedua yakni Arduino Uno,
Hobby Gearmotor, H-Bridge, Potensiometer, Push Button, dan Resistor. Fungsi
Gearmotor untuk melihat gerak putaran yang berasal dari nilai analog
148
Potensiometer. Kemudian fungsi Push Button di sini untuk merubah apakah
putarannya searah jarum jam atau berlawanan dengan arah jarum jam.
149
Gambar 8.34 kondisi kedua
Kemudian jika push button ditekan kedua kali maka Gearmotor akan
berputar berlawanan arah jarum jam. Potensiometer digeser ke nilai maksimal maka
akan menghasilkan nilai -143 RPM pada gearmotor.
150
8.6 Tugas
Pada tugas bab 8 akan dibuat sebuah rangkaian dengan alat dan bahan terdiri
dari, Arduino Uno, DC Motor, IC L293, dan Breadboard. Alat ini akan berfungsi
menyerupai sebuah mobil yang dimana mobil yang dapat bergerak maju atau
mundur sesuai dengan masukan.
digitalWrite(enM, HIGH);
}
151
void loop()
{
digitalWrite(input1, LOW);
digitalWrite(input2, HIGH);
delay(10000);
digitalWrite(input1, HIGH);
digitalWrite(input2, LOW);
delay(10000);
}
Hasil dari percobaannya dapat dilihat pada tabel di bawah ini.
Tabel 8.1 hasil tugas
INPUT OUTPUT HASIL
Input Input Input Input Atas Atas bawah Bawah
1 2 3 4 1 2 2 2
HIGH LOW HIGH LOW CCW CCW CW CW Reverse
LOW HIGH LOW HIGH CW CW CCW CCW Forward
HIGH HIGH HIGH HIGH - - - - Stop
LOW LOW LOW LOW - - - - Stop
Dari hasil di atas dapat disimpulkan bahwa dari kode di atas, dapat dilihat
bahwa masukan hanya dua, jika masukan enable tidak dihitung. Ini dikarenakan,
masukan 1 atau input1 itu berfungsi untuk mengendalikan input 1 dan 3 dari
masing-masing IC, dan masukan 2 berfungsi untuk mengendalikan input 2 dan 4
dari masing-masing IC. Pada fungsi loop dilakukan delay selama 10 detik untuk
mengganti arah gerak dari roda.
152
8.7 Kesimpulan
1. Rotasi motor DC akan lamban jika tegangan nya lebih rendah dari tegangan
operasionalnya, jika tegangan nya lebih tinggi maka rotasi motor DC akan
meningkat.
2. Fungsi loop pada tugas berfungsi untuk mengubah arah gerak roda
3. Pada percobaan 1, H-bridge berfungsi membuat motor DC bergerak searah
jarum jam ataupun berlawanan arah
4. Pada percoban 1 terdapat 4 pengkondisian if yang di inputkan menggunakan
kode z/s/x/c.
5. Pada percobaan kedua , gearmotor bergerak searah jarum jam dengan nilai
143 RPM ketika pushbutton di tekan sekali dan akan bergerak berlawanan
jarum jam dengan nilai -146 RPM ketika pushbutton ditekan dua kali.
153
BAB IX
NAVIGASI ROBOT BERODA
9.1 Tujuan
1. Praktikan dapat memahami prinsip kerja dari robot beroda
2. Praktikan dapat memahami dan melakukan navigasi pada robot beroda
3. Praktikan dapat mengimplementasikan robot beroda pada rangkaian
4. Praktikan dapat mengimplementasikan kemudi differensial pada rangkaian
yang di buat
5. Praktikan dapat mengimplementasikan sistem navigasi pada rangkaian
154
9.2 Alat dan Bahan
9.2.1 Breadboard
155
pengembangan karena board ini berfungsi sebagai media prototyping sirkuit
mikrokontroler.
Arduino Uno berbasis IC ATmega328P, memiliki 14 pin I/O digital (6 pin
PWM), 6 input analog, kristal kuarsa 16 MHz, koneksi USB, colokan listrik, header
ICSP dan tombol reset.
Pada praktikum ini, board arduino uno digunakan sebagai komponen utama
peyusun rangkaian elektronika, menerima masukan dan menjalankan program yang
telah diberikan.
156
9.2.4 Motor DC
157
Pada praktikum ini, sensor HC-SR04 berfungsi sebagai sensor jarak untuk
mengukur jarak antara dinding dan robot wall follower, sehingga robot tidak
menabrak dinding
9.2.6 Sensor IR
9.2.7 IR Remote
158
IR remote adalah alat pengendali jarak jauh yang digunakan untuk
mengendalikan kerja suatu perangkat elektronik. IR remote bekerja dengan cara
menekan salah satu tombol, lalu remote akan memancarkan sinar infra merah yang
kemudian akan ditangkap oleh sensor IR pada perangkat yang dituju/diarahkan.
Pada praktikum ini, IR remote berfungsi sebagai alat pengendali untuk
mengatur arah gerak robot (maju, mundur, diam, belok kanan, atau belok kiri).
9.2.8 IC L293D
9.2.9 TinkerCad
159
menyusun codeblock, serta menguji rangkaian yang telah dibuat dalam bentuk
simulasi.
Tinkercad merupakan website besutan Autodesk yang merupakan produsen
aplikasi-aplikasi desain grafis seperti AutoCAD yang sudah sangat popular dan
menjadi standar industri manapun.
Pada praktikum ini, tinkercad digunakan sebagai simulator untuk menyusun
dan menguji coba rangkaian.
160
9.3 Dasar Teori
9.3.1 Robot Beroda
Robot beroda daah robot yang bergerak menggunakan roda untuk
berpindah tempat. Adapun robot beroda ini di kasifikasikan berdasarkan jenis dan
jumlah rodanya. Roda seringkali dipilih, karena memberikan traction yang bagus,
mudah diperoleh dan dipakai, dan juga mudah untuk memasangnya pada robot.
Traction merupakan variabel dari material roda dan permukaan yang dilintasi oleh
roda. Material roda yang lebih lembut memiliki koefisien traction yang besar, dan
koefisien traction yang besar ini member gesekan (friction) yang besar pula, dan
memperbesar daya yang dibutuhkan untuk menggerakkan motor.
(Sumber: http://eprints.undip.ac.id/)
9.3.2 Kemudi Differensial
Sistem kemudi pada robot beroda disebut differential steering yaitu
selisih kecepatan antara masing-masing rodanya, dan hal ini memerlukan setiap
roda memiliki motor yang independen. Untuk merubah pergerakan posisi robot
beroda dua tersebut, perlu mengatur kecepatan masing-masing roda Jika robot
bergerak kearah kiri, maka roda kanan diberikan kecepatan berdasarkan nilai PWM
yang lebih besar dari roda kiri. Diperlukan perhitungan untuk memperkirakan
pergerakan dan posisi robot. Beberapa kasus dalam memperhitungkan posisi dan
jarak tempuh robot terdapat sebuah permasalahan terkait baik / buruknya lintasan.
Perhitungan tersebut akan mendekati nilai yang diinginkan apabila lintasan tersebut
berada pada bidang datar.
(Sumber : https://senter.ee.uinsgd.ac.id/)
9.3.3 Navigasi Robot Beroda
Navigasi robot merupakan kemampuan robot untul menentukan
posisinya dalam kerangka acuannya dan kemudian merencanakan jalur menuju ke
beberapa lokasi tujuan dengan melakukan representasi lingkungan agar dapat
meakukan navigasi pada lingkungannya. Ada tiga navigasi robot beroda yaitu
1. Navigasi pengikut garis adalah sebuah robot pengikut garis yang didukang oleh
rangkaian komponen elektronika dan mekanik yang dilengkapi roda dan
digerakan oleh actuator. Pengendalian kecepatansangat bergantung pada
perputaran sebuah actuator yaitu motor dc. Robot dirancang untuk dapat
161
bernavigasi dan bergerak secara otomatismengkitu garis yang telah ditentukan.
Utntuk dapat mengikuti garis robot di lengkapi oleh sensor optic pada bagian
depan robot tersebut.robot dilengkapi sebuah aktuatoor untuk dapat bergerak
dan sebuah mickrokontroler. Robot pengikut garis banyak jenis dan berbagai
bentuk sesuai dengan kreatifitas.
2. Navigasi pengikut dinding Sistem adalah suatu aksi robot untuk mengikuti
dinding dan berada tidak jauh dari dinding, wall following bekerja berdasarkan
prinsip mengikuti suatu objek, dalam hal ini objek tersebut adalah dinding. Wall
following dapat di implementasikan pada beberapa kasus dalam kehidupan kita
sehari – hari dengan menggunakan beberapa algoritma di dalamnya
3. Navigasi deteksi tepi adalah suatu proses yang menghasilkan tepi-tepi dari
obyek-obyek citra, tujuannya adalah untuk memperbaiki detail dari citra yang
kabur, yang terjadi karena error atau adanya efek dari proses akuisisi citra. Suatu
titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik tersebut
mempunyai perbedaan yang tinggi dengan tetangganya, ketika terdeteksi
perbedaan ketinggian maka robot akan berjalan menjauhi tepi yang memiliki
tinggi yang berbeda dan terus berjalan kearah dimana tinggi tepi sama.
(Sumber : https://elibrary.unikom.ac.id/id/eprint/2837/ , https://media.neliti.com/ , dan
http://repository.uin-suska.ac.id/)
162
robot, oleh sebab itulah dinamakan Robot Wall Follower atau robot pengikut
dinding
(Sumber: http://eprints.polsri.ac.id/)
163
9.4 Langkah Kerja
9.4.1 Percobaan Robot Manual: Robot Remote Control
1. Buka webside Tinkercad
4. Rangkaian percobaan 1
164
Gambar 9.13 Rangkaian percobaan 1
5. Amati hasil dan isi tabelnya
#include <IRremote.h>
int in[4] = {2, 3, 4, 5};
int en[2] = {6,7};
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
for(int i=0; i<4; i++){
pinMode(in[i], OUTPUT);
}
for(int i=0; i<2; i++){
pinMode(en[i], OUTPUT); }
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
if(results.value==0xFD8877){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],HIGH);
digitalWrite(in[1],LOW);
digitalWrite(in[2],HIGH);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD28D7){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],LOW);
digitalWrite(in[2],HIGH);
digitalWrite(in[3],LOW);
}
165
else if(results.value==0xFDA857){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],LOW);
digitalWrite(in[2],LOW);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD6897){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],HIGH);
digitalWrite(in[1],LOW);
digitalWrite(in[2],LOW);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD9867){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],HIGH);
digitalWrite(in[2],LOW);
digitalWrite(in[3],HIGH);
}
}
delay(100);
}
9.4.2 Percobaan Robot Otonom: Robot Pengikut Dinding
1. Buka webside Tinkercad
166
Gambar 9.16 komponen yang dibutuhkan
1. Rangkaian percobaan 2
167
volatile float leftwall, frontwall;
unsigned long lastPollMillis;
unsigned long lastDebugMillis;
int in[4] = {5, 6, 7, 8};
int en[2] = {9,10};
void setup()
{
Serial.begin(9600);
Serial.println("--- Serial monitor started ---");
pinMode(triggerPin, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
attachInterrupt(0, call_INT0, CHANGE );
attachInterrupt(1, call_INT1, CHANGE );
lastPollMillis = millis();
lastDebugMillis = millis();
}void loop()
{
if (millis() - lastPollMillis >= pingDelay)
{
doMeasurement();
lastPollMillis = millis();
}
if (millis() - lastDebugMillis >= debugDelay)
{
Serial.print("left:");
Serial.print(leftwall);
Serial.print("\tfront:");
Serial.print(frontwall);
Serial.println();
lastDebugMillis = millis();
}
168
{
noInterrupts();
frontwall = travelTime[0] / 2.0 * (float)soundSpeed / 10000.0; //
in cm
leftwall = travelTime[1] / 2.0 * (float)soundSpeed / 10000.0; //
in cm
interrupts();
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
}
void call_INT0()
{
byte pinRead;
pinRead = digitalRead(2);
interruptHandler(pinRead, 0);
}
void call_INT1()
{
byte pinRead;
pinRead = digitalRead(3);
interruptHandler(pinRead, 1);
}
void interruptHandler(bool pinState, int nIRQ)
{
unsigned long currentTime = micros();
if (pinState)
{
startTime[nIRQ] = currentTime;
}
else
{
travelTime[nIRQ] = currentTime - startTime[nIRQ];
}
}
3. Amati hasil dan isi tabelnya
169
9.5 Hasil Percobaan dan Analisis
9.5.1 Percobaan Robot Manual: Robot Remote Control
Source Code rangkaian percobaan 1
#include <IRremote.h>
int in[4] = {2, 3, 4, 5};
int en[2] = {6,7};
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
for(int i=0; i<4; i++){
pinMode(in[i], OUTPUT);
}
for(int i=0; i<2; i++){
pinMode(en[i], OUTPUT);
}
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
if(results.value==0xFD8877){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],HIGH);
digitalWrite(in[1],LOW);
digitalWrite(in[2],HIGH);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD28D7){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],LOW);
digitalWrite(in[2],HIGH);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFDA857){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],LOW);
digitalWrite(in[2],LOW);
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD6897){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],HIGH);
digitalWrite(in[1],LOW);
digitalWrite(in[2],LOW);
170
digitalWrite(in[3],LOW);
}
else if(results.value==0xFD9867){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],LOW);
digitalWrite(in[1],HIGH);
digitalWrite(in[2],LOW);
digitalWrite(in[3],HIGH);
}
}
delay(100);
}
Berdasarkan source code diatas terlebih dahulu dideklarasikan library
#include <IRremote.h>. Kemudian int in[4] = {2, 3, 4, 5};
untuk membuat array nilai input yang berasal dari IC L2930 dengan pin 2, 3, 4, 5
arduino. en[2] = {6,7}; untuk pin enable yaitu pin 6 dan 7. Pada bagian void
setup(),pin 2 sampai pin 7, dibuat mode OUTPUT.
Serial.begin(9600);untuk kecepatan pengiriman data pada port serial
sebesar 9600 bps. irrecv.enableIRIn(); digunakan untuk memulai
komponen IR reciever.
Pada bagian Void loop() membaca nilai hex dari IR remote. Terdapat
pengkondisian if, yang pertama yaitu kode if (results.value
==0xFD8877){…}, yang berrti apabila variabel results bernilai 0xFD8877
program akan mengeksekusi. Sehingga robot akan bergerak maju dengan kecepatan
roda kiri sebesar -143RPM dan roda kanan sebesar -143RPM.
Tabel 9.1 Tombol Remote dan Kondisi yang Dihasilkan
Kecepatan Kecepatan Gerak yang
Tombol Kode Hexa
Roda Kiri Roda Kanan dihasilkan
2 0xFD8877 -143RPM -143RPM Maju
4 0xFD28D7 0RPM -143RPM Belok Kiri
5 0xFDA857 0RPM 0RPM Diam
6 0xFD6897 -143RPM 0RPM Belok Kanan
8 0xFD9867 143RPM 143RPM mundur
171
Gambar 9.18 tampilan saat tombol 2 ditekan
Berdasarkan gambar diatas Gearmotor kiri menunjukkan angka kecepatan
-143RPM, sedangkan yang kanan menunjukkan kecepatan -143RPM. Hasilnya
robot akan bergerak kedepan.
172
Gambar 9.20 saat 5 ditekan
Gambar 9. 1 Tampilan saat tombol remote nomor “5” ditekan.
Berdasarkan gambar diatas Gearmotor kiri menunjukkan angka kecepatan
0RPM, sedangkan yang kanan menunjukkan kecepatan 0RPM. Hasilnya robot akan
berhenti.
173
Gambar 9.22 saat 8 ditekan
Berdasarkan gambar diatas Gearmotor kiri menunjukkan angka kecepatan
143RPM, sedangkan yang kanan menunjukkan kecepatan 143RPM. Hasilnya robot
akan bergerak kedepan.
174
void loop()
{
if (millis() - lastPollMillis >= pingDelay)
{
doMeasurement();
lastPollMillis = millis();
}
if (millis() - lastDebugMillis >= debugDelay)
{
Serial.print("left:");
Serial.print(leftwall);
Serial.print("\tfront:");
Serial.print(frontwall);
Serial.println();
lastDebugMillis = millis();
}
if(frontwall <= 40 && leftwall <= 30){
move_robot(1,0,0,0);
}
else if(frontwall <= 40 && leftwall > 30){
move_robot(0,0,1,0);
}
else if(frontwall > 40 && leftwall <= 30){
move_robot(1,0,1,0);
}
else if(frontwall > 40 && leftwall > 30){
move_robot(0,0,1,0);
}
}
void move_robot(bool in0, bool in1, bool in2, bool in3){
analogWrite(en[0],255);
analogWrite(en[1],255);
digitalWrite(in[0],in0);
digitalWrite(in[1],in1);
digitalWrite(in[2],in2);
digitalWrite(in[3],in3);
delay(1500);
}
void doMeasurement()
{
noInterrupts();
frontwall = travelTime[0] / 2.0 * (float)soundSpeed / 10000.0; //
in cm
leftwall = travelTime[1] / 2.0 * (float)soundSpeed / 10000.0; // in
cm
interrupts();
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
}
void call_INT0()
{
byte pinRead;
pinRead = digitalRead(2);
interruptHandler(pinRead, 0);
}
175
void call_INT1()
{
byte pinRead;
pinRead = digitalRead(3);
interruptHandler(pinRead, 1);
}
void interruptHandler(bool pinState, int nIRQ)
{
unsigned long currentTime = micros();
if (pinState)
{
startTime[nIRQ] = currentTime;
}
else
{
travelTime[nIRQ] = currentTime - startTime[nIRQ];
}
}
Berdasarkan source code diatas, pertama terdapat perintah #define tINT 2
yaitu untuk mendeklarasikan jumlah interupsi yang digunakan. Selanjutnya
dideklarasikan pin trigger yaitu pada pin 4. Lalu pada #define pingDelay 50
digunakan untuk mengatur jeda pengukuran sensor selama 50 milisekon. Kemudian
#define debugDelay 200 untuk mencetak teks pada serial monitor setiap 200
milisekon sekali. Perintah #define soundSpeed 343.0 mendeklarasikan nilai
kecepatan suara sebesar 343. Lalu deklarasi variabel travelTime[tINT] untuk
menyimpan lama waktu dari pulsa dengan tipe data unsigned long bersifat volatile
atau sementara. Terdapat variabel startTime[tINT]untuk menyimpan waktu ping
(interupsi). Pada void setup(),variabel triggerPin diset ke mode output. Selanjutnya
attachInterrupt(0, call_INT0, CHANGE ); untuk mengatur mode interupsi
CHANGE. lastPollMillis = millis(); sebagai pemanggil nilai millis.
Pada void loop(), terdapat pengkondisian if yaitu if(frontwall <= 40 &&
leftwall <= 30) , apabila nilai variabel frontwall atau nilai pembacaan sensor depan
bernilai kurang dari 40 dan nilai variabel leftwall atau nilai pembacaan sensor kiri
kurang dari 30 sehingga akan menjalankan kode move_robot(1,0,0,0). Perintah
move_robot digunakan untuk mendeklarasikan masukan if yang sebelumnya
berupa analogWrite ke pin enable dan digitalWrite ke pin input.
176
Tabel 9.2 data jarak sensor dan kondisi yang dihasilkan
Jarak pada Kecepatan
Jarak pada Kecepatan Gerak yang
No sensor Roda
sensor kiri Roda Kiri dihasilkan
depan Kanan
0RPM Belok
1 <=40 cm <=30 cm -143RPM
Kanan
2 <=40 cm >30 cm 0RPM -143RPM Belok Kiri
3 >40 cm <= 30 cm -143RPM -143RPM Maju
4 >40 cm >30 cm 0RPM -143RPM Belok Kiri
177
Gambar 9.24 kondisi 2
Berdasarkan gambar di atas ketika sensor depan mendeteksi dinding berjarak
kurang dari 40cm dan sensor kiri mendeteksi dinding berjarak lebih dari 30cm,
robot akan bergerak berbelok kearah kiri.
178
Gambar 9.26 kondisi 4
Berdasarkan gambar di atas ketika sensor depan mendeteksi dinding berjarak
lebih dari 40cm dan sensor kiri mendeteksi dinding berjarak lebih dari 30cm, robot
akan bergerak berbelok kearah kiri.
179
9.6 Kesimpulan
1. Pada percobaan 1 terdapat pengkondisian if, yang pertama yaitu kode if
(results.value ==0xFD8877){…}, yang berarti apabila variabel
results bernilai 0xFD8877 program akan mengeksekusi.
2. Gear motor digunakan untuk pergerakan robot , robot akan berhenti / mengarah
ke kiri atau pun ke kanan berdasarkan kecepatan pada setiap gear motor dengan
satuan RPM
3. Pada percobaan 2 terdapat deklarasi variabel travelTime[tINT] untuk
menyimpan lama waktu dari pulsa dengan tipe data unsigned long bersifat
volatile atau sementara.
4. Variabel startTime[tINT]untuk menyimpan waktu ping (interupsi).
5. apabila nilai variabel frontwall atau nilai pembacaan sensor depan bernilai
kurang dari 40 dan nilai variabel leftwall atau nilai pembacaan sensor kiri
kurang dari 30 sehingga akan menjalankan kode move_robot(1,0,0,0).
180
BAB X
PENUTUP
10.1 Kesimpulan
1. Arduino Uno diprogram dengan menggunakan Arduino IDE.
2. Bahasa pemrograman yang digunakan oleh Arduino Uno adalah Bahasa C++.
3. Arduino Uno dapat mengontrol perangkat keras sistem tertanam dengan
memanfaatkan pin masukan dan keluaran.
4. Perbedaan Robot dan Sistem Tertanam terdapat pada aktuator, Robot memiliki
fungsi aktuator sedangkan sistem tertanam tidak.
10.2 Saran
10.2.1 Untuk Asisten
1. Asisten diharapkan dapat lebih memperhatikan praktikan yang kesulitan
dalammelakukan praktikum maupun pembuatan laporan.
10.2.2 Untuk Praktikan
1. Praktikan sebaiknya lebih memperhatikan saat asisten sdang
menjelaskan.
2. Praktikan seharusnya menjaga suasana tetap kondusif saat praktikum
berlangsung.
3. Praktikan sebaiknya segera mengerjakan laporan dan tugas yang
diberikan dan tidak menunda-nunda.
181
LAMPIRAN - LAMPIRAN
LEMBAR ASISTENSI
PRAKTIKUM ROBOTIKA
2021
KELOMPOK 5
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 4/5/2021 6/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 4/5/2021 7/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 10/5/2021 11/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 12/5/2021 12/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 21/5/2021
2 22/5/2021 23/5/21
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 21/5/2021 23/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 24/5/2021
2 25/5/2021 26/5/2021
Koordinator
Praktikum Robotika 2021
Keterangan (Hari/Tgl/Jam)
Asistensi Ke TTD Asisten 1 TTD Asisten 2
Laporan Responsi
1 24/5/2021
2 25/5/2021 26/5/2021
Koordinator
Praktikum Robotika 2021