ARDUINO : ROBOT SEDERHANA PENYORTIR WARNA DENGAN ARDUINO UNO
Membuat Sendiri Mainan Edukatif Interaktif
Video 1 Robot Penyortir Warna
Mainan
edukatif interaktif yang bayak beredar saat ini sebagian besar sudah
mengarah ke mainan yang bernuansa modern dan sarat teknologi tinggi
seperti game Komputer, Walky-talky, robot, alat musik, dan lain-lain.
Contoh game interaktif yang diperuntukkan bagi anak perempuan, yang
mengajarkan segala aspek kewanitaan seperti cara bersolek atau
berdandan, cara memasak, cara merawat bayi, cara merawat hewan piaraan
kesayangan dan lain-lain, yang kesemuanya bisa dilakukan secara
interaktif dan menarik.
Dari
sisi anak-anak yang menggunakan mainan tersebut juga tampak senang dan
tidak merasa terbebani dan atau bahkan sebaliknya merasa tertantang.
Sebagian dari mereka bahkan sudah bisa membuat game interaktif sendiri
dan di-share dengan anak-anak usia sebayanya via internet.
Kondisi
seperti ini dapat membuat perubahan besar pada diri anak-anak terutama
menyongsong era teknologi modern di masa dewasanya nanti, dimana mereka
mampu beradaptasi dengan IPTEK, barang-barang atau alat-alat rumahtangga
berteknologi modern, serta memberi nuansa tersendiri dalam upaya
pengembangan industri kreatif (karena setiap generasi mempunyai persoalan dan tantangan tersendiri).
Di
sisi lain ada pemberitaan yang membuat kita prihatin yaitu sebagian
Tenaga Kerja Indonesia yang bekerja di negara maju yang mengalami
kesulitan beradaptasi dengan peralatan rumahtangga yang lebih modern;
Aparat Pemerintah yang belum siap beradaptasi dengan teknologi
informasi, menyebabkan pelayanan kepada masyarakat tidak optimal.
Melalui
tulisan ini penutis ingin memberikan pandangan dan sambutan positif
terhadap perkembangan teknologi, khususnya Arduino dalam upaya
pengembangan kreatifitas dan menyongsong tumbuhnya industri kreatif,
yang pada akhirnya nanti bisa memberikan manfaat positif bagi
peningkatan kesejahteraan manusia.
Mengapa
Arduino? Karena Arduino dirancang secara sederhana, opensource, biaya
relatif murah akan tetapi bisa menghasilkan ribuan kreatifitas dan
didukung beberapa toko robotik online yang menyediakan bahan dan
peralatan, serta artikel-artikel popoler menarik yang dibutuhkan untuk
pengembangan kreatifitas dengan harga relatif terjangkau.
Belajar
Arduino tidak boleh berhenti hanya pada mempelajari teori-teori arduino
dan mempraktekkan proyek-proyek yang sudah ada di buku, akan tetapi
harus bisa menghasilkan produk inovatif yang bisa memberi manfaat bagi
pengembangan kecerdasan anak-anak dan menciptakan produk-produk
kebutuhan sehari-hari yang bisa mempermudah melakukan segala aktifitas
kehidupan positif.
Tahap Persiapan
Mempersiapkan Bahan dan Alat
Bahan-bahan yang digunakan dalam proyek ini antara lain adalah :
· 2 x Capasitor 22 pF
· 1 x Resistor 330 ohm
· 1 x Resistor 10 K ohm
· 1 x Resistor 33 K ohm
· 1 x LDR
· 1 x RGB LED Commom Cathode
· 1 x Crystal Oscilator 16-MHz
· Mur dan Baut M3 8 mm (jumlah sesuai kebutuhan)
· Mur dan Baut M2 8 mm (jumlah sesuai kebutuhan)
· PCB IC
· Kabel BreadBoard
· U Shape Jumper Wires
· 1 x ATmega 328P
· Kabel Pelangi secukupnya
· 1 x Female Housing 1 pin
· 1 x Female Housing 2 pin
· 1 x Female Housing 3 pin
· Tenol sesuai kebutuhan
· 1 x 9v Battery Holder with Jack and Switch Plus Battery 9V
· 1 x BreadBoard 400 holes dengan Power Supply
· 2 x Micro Servo
· 1 x Standard Servo
· Akrilik atau Tripleks sesuai kebutuhan
· 2 x Plastic Gear
· PVC Telephone Duct
· PVC Wiring Duct
· Kertas Origami berbagai warna sesuai kebutuhan
· Kertas Karton sesuai kebutuhan
· Lem Kertas sesuai kebutuhan
Untuk lebih jelasnya bisa dilihat pada Gambar di bawah ini
Gambar 1 Bahan-bahan yang dibutuhkan
Peralatan yang digunakan dalam proyek ini antara lain adalah :
· Gunting
· Alat Bor
· Tang
· Penggaris Aluminium
· Pemotong Akrilik
· Pensil
· Solder
· Obeng
· Komputer PC (Desktop atau Notebook)
· Arduino (dalam project ini digunakan Arduino Duemilanove with ATmega328)
Untuk lebih jelasnya bisa dilihat pada Gambar di bawah ini
Gambar 2 Peralatan yang dibutuhkan
Burning Bootloader
Mikrokontroller
ATmega328 belum siap digunakan apabila masih kosong atau belum diisi
Bootloader. Untuk itu perlu dilakukan Burning Bootloader. Dalam Proyek
Arduino ini digunakan Bootloader Arduino Duemilanove.
Ada beberapa
cara burning Bootloader. Dalam Proyek ini burning Bootloader
menggunakan Board Arduino Duemilanove with ATmega328 sebagai ISP
(in-system program). Caranya adalah sebagai berikut :
· Bangunlah rangkaian seperti Gambar berikut :
Gambar 3 Rangkaian untuk Burning Bootloader
dengan Arduino Duemilanove with ATmega328 sebagai ISP
· Buka Program Arduino yang dalam Proyek ini menggunakan Arduino Versi 1.0.1
· Buka Sketch ArduinoISP dengan cara klik menu File - Klik Examples - Pilih ArduinoISPseperti Gambar berikut :
Gambar 4 Membuka Sketch ArduinoISP
Muncul Sketch ArduinoISP seperti Gambar berikut :
Gambar 5 Sketch ArduinoISP
· Hubungkan Rangkaian (Gambar 3) dengan Komputer menggunakan kabel USB
· Pada
Program Arduino pilih Board yang sesuai dengan Board Arduino yang
digunakan untuk burning Bootloader. Dalam Proyek ini pilih Arduino
Duemilanove w/ATmega328 dengan cara Klik menu Tools - klik Board - pilih Arduino Duemilanove w/ATmega328 seperti Gambar berikut :
Gambar 6 Memilih Board Arduino Duemilanove w/ATmega328
· Pilih Port
USB pada Program Arduino yang sesuai dengan port USB tempat
menghubungkan Rangkaian Gambar 3 tersebut dengan cara Klik menu Tools - Klik SerialPort - Pilih misalnya COM4 seperti Gambar berikut
Gambar 7 Memilih Serial Port yang sesuai
Pastikan bahwa Board dan Serial Port yang dipilih sudah sesuai
· Upload ArduinoISP ke Rangkaian Gambar 3 dengan cara Klik tombol Upload seperti pada Gambar berikut
Gambar 8 Upload ArduinoISP
· Klik menu Tools - Klik Programmer - Pilih Arduino as ISP seperti Gambar berikut
Gambar 9 Memilih Arduino as ISP
· Lakukan Burning Bootloader dengan cara Klik menu Tools - Klik Burn Bootloader seperti pada Gambar berikut
Gambar 10 Burning Bootloader
Apabila Burning Bootloader berhasil, maka ATmega328 siap diisi program.
Tahap Pembuatan
Membuat Lengan Robot
Dalam
tulisan ini sengaja tidak dusebutkan secara rinci mengenai prosedur
pembuatan, ukuran serta gambar pola karena apa yang dituangkan di dalam
tulisan ini bukanlah merupakan hal yangbaku. Para pembaca bisa mengembangkannya sehingga diperoleh hasil yang lebih baik sesuai keinginan.
Lengan
robot yang dibuat dalam proyek ini terdiri dari satu Micro Servo yang
berfungsi membuka dan menutup capit, satu mikro servo yang berfungsi
menggerakkan sikut naik turun, dan satu standard servo yang berfungsi
menggerakkan lengan ke kiri dan ke kanan. Untuk lebih jelasnya dapat
dilihat pada Gambar berikut
Gambar 11 Lengan robot beserta komponen penyusunnya
Membuat Sensor Warna
Sensor
warna terdiri dari dua komponen inti yaitu RGB LED dan LDR. Untuk
meningkatkan akurasi peneraannya, sensor warna yang mengandung LDR ini
harus berada di tempat tertutup agar terhindar dari pengaruh cahaya dari
luar. Rangkaian selengkapnya dapat dilihat pada Gambar berikut
Gambar 12 Rangkaian Elektronik Sensor Warna
Catatan
: Posisi LDR harus lebih kedepan daripada RGB LED, dimaksudkan agar LDR
hanya menerima cahaya dari pantulan objek yang ditera.
Membuat Rangkaian Arduino Minimalis on Breadboard
Pembuatan
Arduino minimalis dimaksudkan untuk menekan biaya pembuatannya sehingga
apabila diproduksi secara massal, harganya bisa bersaing. Rangkaian
selengkapnya dapat dilihat pada Gambar berikut
Gambar 13 Diagram Rangkaian Arduino Minimalis on Breadboard
yang dihubungkan dengan rangkaian sensor dan
servo penggerak capit, sikut dan lengan
Pada
Gambar 13 terlihat jelas adanya pembagian sumber daya listrik rangkaian
menjadi dua bagian. Bagian pertama yaitu jalur sebelah kiri untuk
menyediakan sumber daya listrik ke Mikrokontroller, RGB LED, dan Sensor.
Sedangkan bagian kedua yaitu jalur sebelah kanan untuk menyediakan
sumber daya listrik khusus untuk ketiga buah Servo. Untuk itu maka dalam
proyek ini pada Breadboard dipasang Breadboard Power Supply 3V/5V dengan
kedua switch diset ke posisi 5V dan kedua jumper diset pada posisi On.
Arus minimal yang tersedia untuk masing-masing jalur adalah 0,8 Ampere,
cukup untuk menggerakkan 3 servo analog yang diperintah secara
bergantian (tidak bersamaan).
Catatan
: Agar Servo bisa bekerja optimal, maka sumber daya listrik untuk servo
harus terpisah dari sumber daya listrik untuk rangkaian yang lain, dan
besarnya juga harus memadai untuk menggerakkan Servo.
Untuk
lebih mudahnya memahami rangkaian tersebut dan perintah-perintah yang
sesuai untuk progran arduino, berikut dicantumkan Gambar kesesuaian
antara pin-pin pada ATmega328 dengan fungsi pin-pin pada Arduino
Gambar 14 Peta pin ATmega 328 versus Peta fungsi pin pada Arduino
Membuat Aksesoris Robot
Yang
dimaksud aksesoris robot dalam Proyek ini antara lain adalah Penopang
Lengan Robot, Objek berwarna yang dapat dipegang oleh capit robot, dan
Cawan berwarna sebagai penampung Objek. Dalam tulisan ini juga tidak
dijelaskan secara rinci cara membuat aksesoris robot karena aksesoris
yang dibuat dalam Proyek ini bukanlah hal yang baku.
Pembaca boleh membuatnya sesuai kreatifitasnya. Yang jelas, untuk
ukuran Objek berwarna harus sesuai dengan kapasitas capit robot baik
besar maupun beratnya. Demikian pula untuk Cawan berwarna penampung
Objek, ukurannya harus bisa menampung beberapa Objek. Bangun Robot
selengkapnya dapat dilihat pada Gambar berikut
Gambar 15a Robot Penyortir Warna (tampak depan)
Gambar 15b Robot Penyortir Warna (tampak atas)
Kalibrasi Sensor Warna
Pada
tahap kalibrasi ini Robot penyortir warna dibekali dengan kemampuan
mengenali beberapa warna secara akurat. Dengan demikian, Robot akan bisa
diperintah apa saja sehubungan dengan kemampuan penyortiran warna
tersebut.
Prinsip
kerja kalibrasi ini antara lain adalah pada saat sensor robot menera
objek warna tertentu, pada layar monitor komputer akan muncul kombinasi
angka tertentu untuk R(Red), G(Green), dan B(Blue) sesuai dengan warna
objek yang diteranya.
Membuat Program Kalibrasi
Untuk bisa melakukan kalibrasi, robot harus diberikan perintah dalam bentuk program sebagai berikut :
/* Program Kalibrasi Sensor Warna
Oleh : Zainuri
web : zainms.blogspot.com
update : 4 Maret 2013
*/
int PinSensor = A0; // Sensor (LDR) pada Pin Nomor A0
int PinLedMerah =3; // Led Warna Merah pada Pin Nomor 3
int PinLedHijau=4; // Led Warna Hijau pada Pin Nomor 4
int PinLedBiru=5; // Led Warna Biru pada Pin Nomor 5
int Hasil,HasilMerah,HasilHijau,HasilBiru;
void setup() {
// Menetapkan Pin Led Merah, Hijau, Biru sebagai OUTPUT:
pinMode(PinLedMerah,OUTPUT);
pinMode(PinLedHijau,OUTPUT);
pinMode(PinLedBiru,OUTPUT);
digitalWrite(PinLedMerah,LOW);
digitalWrite(PinLedHijau,LOW);
digitalWrite(PinLedBiru,LOW);
Serial.begin(9600);
delay(1000);
Serial.println(" R G B");
Serial.println("--- --- ---");
}
void loop() {
digitalWrite(PinLedMerah,HIGH); // Menyalakan Led Merah
delay(150); // Jeda 150 mili detik agar LDR bisa Membaca Warna Merah
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilMerah=map(Hasil,0,1023,0,255);
Serial.print(HasilMerah);
digitalWrite(PinLedMerah,LOW);
delay(150);
digitalWrite(PinLedHijau,HIGH); // Menyalakan Led Hijau
delay(150); // Jeda 150 mili detik agar LDR bisa Membaca Warna Hijau
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilHijau=map(Hasil,0,1023,0,255);
Serial.print(" ");
Serial.print(HasilHijau);
digitalWrite(PinLedHijau,LOW);
delay(150);
digitalWrite(PinLedBiru,HIGH); // Menyalakan Led Biru
delay(150); // Jeda 150 mili detik agar LDR bisa Membaca Warna Biru
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilBiru=map(Hasil,0,1023,0,255);
Serial.print(" ");
Serial.println(HasilBiru);
digitalWrite(PinLedBiru,LOW);
delay(150);
}
· Siapkan
rangkaian Arduino Minimalis on Breadboard untuk diisi program kalibrasi
menggunakan FTDI Chip yang ada pada Board Arduino Duemilanove yang
sudah dilepas mikrokontrollernya dan Power Supply 3V/5V pada Breadboard
juga harus dilepas karena sudah menggunakan power supply dari Arduino
yang berasal dari Komputer. Rangkaiannya seperti Gambar berikut
Gambar 16 Rangkaian menggunakan FTDI pada Arduino untuk mengisi
sketch program kalibrasi pada Arduino Minimalis on Breadboard
Pada Gambar
16 pin 5V Arduino dihubungkan ke baris positif breadboard (menggunakan
kabel merah), pin GND Arduino dihubungkan dengan baris negatif
breadboard (menggunakan kabel hitam), pin RESET Arduino dihubungkan
dengan pin nomor 1 ATmega328 breadboard (menggunakan kabel biru), pin TX
Arduino dihubungkan dengan pin nomor 3 ATmega328 breadboard
(menggunakan kabel kuning), dan pin RX Arduino dihubungkan dengan pin
nomor 2 ATmega328 breadboard (menggunakan kabel hijau). Untuk lebih
memahaminya, silakan lihat Gambar 14 Peta pin ATmega 328 versus Peta
fungsi pin pada Arduino.
- Buka program Arduino dan tulis program kalibrasi atau copy paste program kalibrasi yang ada di halaman ini atau berasal dari pemikiran Anda sendiri seperti Gambar berikut
Gambar 17 Sketch Program Kalibrasi Sensor Warna
· Hubungkan rangkaian pada Gambar 16 dengan komputer menggunakan kabel USB.
· Pilih Board Arduino Duemilanove w/ATmega328 dengan cara Klik Tools - Klik Board - Pilih Arduino Duemilanove w/ATmega328 seperti Gambar berikut
Gambar 18 Pilih Arduino Duemilanove w/ATmega328
· Pilih Serial Port yang sesuai dengan cara Klik Tools - Klik Serial Port - Pilih port yang sesuai misalnya COM6 seperti Gambar berikut
Gambar 19 Serial Port yang menghubungkan Komputer dengan
Rangkaian Arduino Minimalis on Breadboard
Pastikan bahwa board yang dipilih adalah Arduino Duemilanove w/ATmega328 dan SerialPort sudah sesuai.
· Upload program kalibrasi sensor warna dengan cara Klik tombol Upload seperti Gambar berikut
Gambar 20 Upload Program Kalibrasi Sensor Warna
Proses Kalibrasi
· Letakkan objek berwarna tertentu ke sensor warna seperti Gambar berikut
Gambar 21 Meletakkan Objek Berwarna pada Sensor Warna
· Pada Program Arduino lakukan pembacaan warna oleh sensor warna dengan cara Klik menu Tools - Klik Serial Monitor seperti Gambar berikut
Gambar 22 Serial Monitor
Maka pada layar komputer akan muncul kombinasi angka spesifik untuk R, G, B seperti pada Video berikut
Video 2 Kalibrasi Sensor Warna
Biarkan
pembacaan terjadi beberapa kali misalnya sampai 60 kali, kemudia
dihitung nilai rata-rata untuk R, G, dan B pada setiap objek berwarna
yang ditera oleh sensor warna.
Setelah diolah diperoleh hasil kalibrasi sensor warna seperti Gambar berikut
Gambar 23 Hasil Kalibrasi Sensor Warna
Membuat Program Robot Penyortir Warna
Data hasil
kalibrasi sensor warna yang sudah diolah siap untuk dipergunakan sebagai
pembanding terhadap data hasil peneraan sensor warna. Adapun rumus
perbandingannya adalah sebagai berikut :
if(abs(HasilMerah-R)<k &&
abs(HasilHijau-G)<k &&
abs(HasilBiru-B)<k)
{Serial.println("WARNA ........\n");
Misalnya untuk warna merah. Rata-rata hasil kalibrasi untuk warna merah adalah : R=240, G=232, B=205. Sehingga setelah angkanya dimasukkan ke dalam rumus, hasilnya adalah :
if(abs(HasilMerah-240)<k &&
abs(HasilHijau-232)<k &&
abs(HasilBiru-205)<k)
{Serial.println("WARNA MERAH\n"); damana k adalah toleransi warna
Demikian pula untuk warna-warna yang lain.
Catatan : Jenis warna yang digunakan dalam Proyek ini bukan merupakan hal yang baku.
Pembaca bisa menggunakan bermacam-macam warna. Semakin banyak ragam
warna, sensor harus dibuat semakin akurat dan Servo lengan yang
digunakan harus mempunyai kemampuan berputar dengan sudut putar yang
lebih kecil.
Setelah semua hasil kalibrasi dimasukkan ke dalam rumus perbandingan tersebut, maka Program Robot Penyortir Warna siap diupload
/* Program Robot Penyortir Warna
Oleh : Zainuri
web : zainms.blogspot.com
update : 4 Maret 2013
*/
#include <Servo.h>
Servo ServoCapit;
Servo ServoSikut;
Servo ServoLengan;
int PinSensor = A0; // Sensor (LDR) pada Pin Nomor A0
int PinLedMerah =3; // Led Warna Merah pada Pin Nomor 3
int PinLedHijau=4; // Led Warna Hijau pada Pin Nomor 4
int PinLedBiru=5; // Led Warna Biru pada Pin Nomor 5
int Hasil,HasilMerah,HasilHijau,HasilBiru;
int k=6; // Toleransi Warna
void setup() {
// Menetapkan Pin Led Merah, Hijau, Biru sebagai OUTPUT:
pinMode(PinLedMerah,OUTPUT);
pinMode(PinLedHijau,OUTPUT);
pinMode(PinLedBiru,OUTPUT);
digitalWrite(PinLedMerah,LOW);
digitalWrite(PinLedHijau,LOW);
digitalWrite(PinLedBiru,LOW);
ServoCapit.attach(9); // Menempatkan Servo Capit pada Pin Nomor 9
ServoSikut.attach(10); // Menempatkan Servo Sikut pada Pin Nomor 10
ServoLengan.attach(11); // Menempatkan Servo1 Lengan pada Pin Nomor 11
ServoCapit.write(15); // Menetapkan Putaran Awal Servo Capit pada Sudut 15 derajat
ServoSikut.write(30); // Menetapkan Putaran Awal Servo Sikut pada Sudut 30 derajat
ServoLengan.write(0); // Menetapkan Putaran Awal Servo Lengan pada Sudut 0 derajat
delay(100);
Serial.begin(9600);
delay(1000);
}
void loop() {
digitalWrite(PinLedMerah,HIGH); // Menyalakan Led Merah
delay(150); // Jeda 150 milidetik agar LDR bisa Membaca Warna Merah dengan Stabil
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilMerah=map(Hasil,0,1023,0,255);
Serial.print(HasilMerah);
digitalWrite(PinLedMerah,LOW);
delay(150);
digitalWrite(PinLedHijau,HIGH); // Menyalakan Led Hijau
delay(150); // Jeda 150 milidetik agar LDR bisa Membaca Warna Hijau dengan Stabil
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilHijau=map(Hasil,0,1023,0,255);
Serial.print(" ");
Serial.print(HasilHijau);
digitalWrite(PinLedHijau,LOW);
delay(150);
digitalWrite(PinLedBiru,HIGH); // Menyalakan Led Biru
delay(150); // Jeda 150 milidetik agar LDR bisa Membaca Warna Biru dengan Stabil
// Membaca Data Sensor (LDR) :
Hasil= analogRead(PinSensor);
HasilBiru=map(Hasil,0,1023,0,255);
Serial.print(" ");
Serial.println(HasilBiru);
digitalWrite(PinLedBiru,LOW);
delay(150);
// Membandingkan Warna Hasil Peneraan Sensor dengan Hasil Kalibrasi :
if(abs(HasilMerah-240)<k && abs(HasilHijau-232)<k && abs(HasilBiru-205)<k){
Serial.println("WARNA MERAH\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(45); // Lengan membawa benda ke tempat Warna Merah
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
if(abs(HasilMerah-240)<k && abs(HasilHijau-241)<k && abs(HasilBiru-210)<k){
Serial.println("WARNA KUNING\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(70); // Lengan membawa benda ke tempat Warna Kuning
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
if(abs(HasilMerah-232)<k && abs(HasilHijau-238)<k && abs(HasilBiru-208)<k){
Serial.println("WARNA HIJAU\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(110); // Lengan membawa benda ke tempat Warna Hijau
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
if(abs(HasilMerah-231)<k && abs(HasilHijau-234)<k && abs(HasilBiru-217)<k){
Serial.println("WARNA BIRU\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(135); // Lengan membawa benda ke tempat Warna Biru
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
if(abs(HasilMerah-239)<k && abs(HasilHijau-232)<k && abs(HasilBiru-216)<k){
Serial.println("WARNA PINK\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(160); // Lengan membawa benda ke tempat Warna Pink
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
if(abs(HasilMerah-240)<k && abs(HasilHijau-241)<k && abs(HasilBiru-224)<k){
Serial.println("WARNA PUTIH\n");
ServoSikut.write(0); // Sikut mengangkat capit
delay(1000);
ServoLengan.write(90); // Lengan membawa capit menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit membuka
delay(1000);
ServoSikut.write(30); // Sikut membawa capit menuju benda
delay(1000);
ServoCapit.write(15); // Capit memegang benda
delay(1000);
ServoSikut.write(0); // Sikut menaikkan capit yang membawa benda
delay(1000);
ServoLengan.write(180); // Lengan membawa benda ke tempat Warna Putih
delay(1000);
ServoSikut.write(30); // Sikut menurunkan capit pembawa benda menuju tempat benda
delay(1000);
ServoCapit.write(0); // Capit melepas benda
delay(1000);
ServoSikut.write(0); // Sikut mengangkat capit kosong
delay(1000);
ServoCapit.write(15); // Capit menutup (posisi istirahat)
delay(1000);
ServoLengan.write(0); // Lengan menuju posisi istirahat
delay(1000);
ServoSikut.write(30); // Sikut menuju posisi istirahat
} else
Serial.println("Warna Tidak Dikenal\n");
delay (2000);
}
Upload Program Robot Penyortir Warna
Upload
Program Robot Penyortir Warna caranya masih sama dengan Upload Program
Kalibrasi Sensor Warna. Apabila Rangkaian (Gambar 16) masih terhubung
dengan Komputer, pastikan bahwa Board yang terpilih adalah Arduino
Duemilanove w/ATmega328 dan Serial Port sudah sesuai dengan USB Port
Komputer yang terhubung ke rangkaian, misaknya COM6.
· Buka Program Arduino
· Tulis
Program Robot Penyortir Warna atau Copy Past Program yang sudah ada di
halaman ini, atau dibuat sendiri sesuai pemikiran pembaca.
· Klik Tombol Upload.
Apabila proses upload berhasil, Robot Penyartir Warna sudah terprogram.
· Lepas kabel-kabel penghubung Board Arduino Duemilanove dengan Arduino Minimalis on Breadboard (Gambar 16).
· Pasang kembali Breadboard Power Supply 3V/5V pada Arduino Minimalis on Breadboard.
· Hubungkan Breadboard Power Supply 3V/5V dengan Battery 9V melalui DC Jack Power Connector seperti Gambar berikut
Gambar 24 Arduino Minimalis on Breadboard
yang terhubung dengan Battery 9V, Servo dan Sensor
Catatan :
Proyek Arduino ini juga bisa menggunakan Arduino Uno dengan cara
mengganti Board Arduino Duemilanove dengan Board Arduino Uno, pada
Program Arduino pilih Board Arduino Uno pada saat melakukan Burning
Bootloader dan Upload Program.
Tidak ada komentar:
Posting Komentar