Sabtu, 30 Maret 2013

PROYEK ARDUINO : ROBOT SEDERHANA PENYORTIR WARNA

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.

Selanjutnya, mari kita praktek membuat sendiri mainan interaktif yang dalam Proyek Arduino ini membuat Robot Sederhana Penyortir Warna.



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 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.