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
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 :
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.
·
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 ArduinoISP seperti 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 Serial Port - 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 yang baku . 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 Serial Port 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.
Selamat
mencoba.