Alat Pendeteksi Warna adalah alat yang dirancang untuk dapat membedakan objek, agar objek dapat dipisahkan dan dihitung berdasarkan tempat yang telah disediakan.
Sementara itu, objek yang berhasil dideteksi akan ditampilkan melalui aplikasi yang dibuat khusus untuk melihat berapa objek yang berhasil dideteksi oleh alat dan juga kontrol alat akan dibuat secara keseluruhannya menggunakan aplikasi yang dirancang menggunakan Microsoft Studio Visual Studio 2010 atau bisa dengan menggunakan Visual Basic 6.
Hardware
Perancangan Alat Pendeteksi Warna ini sangat mudah, namun perlu ketelitian dalam membangun sistem mekanik, hardware dan software, sehingga dalam perancangan, maupun proses perakitan tidak terjadi kendala. berikut ini adalah hardware yang dibutuhkan:
- Arduino Uno R3,
- Sensor LDR,
- Motor Servo 2 pcs,
- Resistor 330,
- Power Supply,
- Acrilic 3 mm
- Tabung kaca diameter 2 cm,
- Kayu lapis 3 mm,
- Baut dan mur,
- Spacer.
Software yang digunakan adalah :
- IDE Arduino (Integrated Developtment Enviroenment), Software processing yang digunakan untuk menulis program kedalam perangkat keras yaitu Arduino. Processing sendiri merupakan penggabungan antara bahasa C++ dan Java.
- EAGLE (Easily Applicable Graphical Layout Editor), merupakan sebuah aplikasi gratis untuk mendesain skematik elektronika maupun PCB (Printed Circuit Board).
- Microsoft Visual Studio 2010, merupakan aplikasi yang dapat digunakan untuk membuat aplikasi, baik itu aplikasi bisnis, aplikasi personal, ataupun komponen aplikasinya, dalam bentuk aplikasi console, aplikasi Windows, ataupun aplikasi Web.
Perbedaan Visual Basic dengan Visual Studio adalah Visual Basic mengacu langsung pada satu bahasa pemrograman, sedangkan Visual Studio mengacu kepada banyak bahasa pemrograman. Atau lebih bisa dikatakan bahwa Visual Basic merupakan bagian dari Visual Studio.
Blok Diagram
Adapun tahapan-tahapan perancangan alat yang akan dijelaskan pada Diagram berikut ini:
![]() |
Blok Diagram |
Ket:
- Aplikasi PC yang didesain untuk mengontrol benda berdasarkan warna. Aplikasi dapat berjalan jika sudah terhubung dengan alat. Jika tidak terhubung, aplikasi hanya dapat dibuka dan tidak dapat dijalankan.
- Sensor pendeteksi warna merupakan bagian utama dalam pembuatan alat ini. Sensor digunakan untuk memberikan input yang akan dibaca oleh mikrokontroler Arduino Uno.
- Perancangan alat ini menggunakan dua motor servo yaitu Motor servo 1 berperan untuk mengarahkan objek ke sensor. Motor servo 2 digunakan untuk mengarahkan objek ketempat penampungan objek.
Tempat penampungan warna diletakkan dibagian bawah sehingga objek dapat bergerak leluasa sesuai gravitasi setelah mendapat dorongan dari motor servo dua. Sementara itu aplikasi akan terus menghitung dan mendeteksi objek sesuai warna jika alat masih ada objek. Alat akan bekerja otomatis sampai objek yang melewati sensor tidak dikenali warnanya dan akan menampilkan peringatan pada aplikasi.
Flowchart
Berikut ini adalah diagram alir atau flowchart dari perancangan perangkat lunak yang akan dibuat:
![]() |
Flowchart |
Pada Gambar diatas menunjukkan cara kerja sistem melalui diagram alir. Program akan melakukan koneksi ke aplikasi kontrol warna melalui port USB. Apabila ditemukan, alat akan bisa langsung dioperasikan. Jika data yang diterima dari aplikasi adalah 8, maka alat bisa langsung menjalankan proses selanjutnya. Jika data yang diterima adala 9, proses alat selesai. Hal ini akan ditampilkan pada aplikasi kontrol warna. Kemudian proses selanjutnya motor servo atas akan mengambil benda dan membawa benda kearah sensor. Jika sensor sudah mendeteksi warna benda, maka arduino akan mengirimkan data ke aplikasi. Proses pembacaan warna adalah jika warna yang terdeteksi adalah warna merah, maka servo akan bergerak 45º. Jika tidak, maka sensor mendeteksi warna hijau dan servo bergerak 60º, dan seterusnya hingga warna tidak terdeteksi . Jika warna tidak terdeteksi, maka proses selesai.
Desain
Berikut ini adalah desain dari alat pendeteksi warna:
Prototype alat dibuat dengan menggunakan akrilik yang didesain dengan menggunakan alat pembengkok akrilik. Tiang penyangga antara box atas dan box panel dibuat dengan menggunakan stick es cream yang dibungkus menggunakan sticker. Tiang ini dibuat sekokoh mungkin agar dapat menyangga box atas. Semua komponen yang sudah dirancang diletakkan di dalam box bawah. Sementara itu motor servo diletakkan untuk memutarkan objek menuju sensor pendeteksi warna yang berada didalam box atas.
Schematich
Berikut ini adalah schematich rangkaian dari alat yang akan kita buat:
![]() |
Schematich Rangkaian |
Baca:
Program

Kemudian nilai RGB diatas dituliskan pada program seperti ini:Setelah merangkai program diatas, selanjutnya dapat memasukkan program dibawah ini:
Program_pendeteksi_warna.ino - Download
/* Program sensor warna
Oleh : HESTECH.ID for WULANDARI
update : 19 Maret 2019
*/
#include <Servo.h>
#include "Wire.h"
int sensorPin = A5;
int LedBiru =2; // Led warna biru digital pin 3
int LedHijau=3; // Led warna hijau digital pin 4
int LedMerah=4; // Led warna merah digital pin 5
int hasil,hasilb,hasilm,hasilh;
int k=8; // toleransi warna
Servo servo_atas;
Servo servo_bawah;
int warna = 0;
int data, freq = false;
void setup() {
Serial.begin(9600);
pinMode(LedBiru,OUTPUT);
pinMode(LedMerah,OUTPUT);
pinMode(LedHijau,OUTPUT);
digitalWrite(LedBiru,LOW);
digitalWrite(LedMerah,LOW);
digitalWrite(LedHijau,LOW);
servo_atas.attach(8);
servo_bawah.attach(9);
servo_atas.write(140);
delay(10);
}
void loop() {
data = Serial.read();
delay(10);
if ( data == '8')
{
freq = true;
}
if ( data =='9')
{
freq = false;
}
if ( freq == true)
{
jalankan_alat();
}
if ( freq == false)
{
matikan_alat();
}
}
void jalankan_alat()
{
delay(500);
for(int i = 150; i > 78; i--) {
servo_atas.write(i);
delay(5);
}
delay(500);
warna = baca_warna();
delay(50);
switch (warna) {
case 1:
servo_bawah.write(45);
Serial.println(1);
break;
case 2:
servo_bawah.write(60);
Serial.println(2);
break;
case 3:
servo_bawah.write(72);
Serial.println(3);
break;
case 4:
servo_bawah.write(88);
Serial.println(4);
break;
case 5:
servo_bawah.write(102);
Serial.println(5);
break;
case 6:
servo_bawah.write(120);
Serial.println(6);
break;
default:
Serial.println(0);
break;
}
delay(300);
for(int i = 55; i > 20; i--) {
servo_atas.write(i);
delay(5);
}
delay(200);
for(int i = 20; i < 120; i++) {
servo_atas.write(i);
delay(5);
}
warna=0;
}
void matikan_alat()
{
servo_atas.write(servo_atas.read());
servo_bawah.write(servo_bawah.read());
}
// membaca warna
int baca_warna() {
// nyalakan LedMerah
digitalWrite(LedMerah,HIGH);
//delay 150 ms agar LDR baca stabil
delay(150);
// baca data sensor
hasil= analogRead(sensorPin);
hasilm=map(hasil,0,1023,0,255);
Serial.print("R,G,B = ");
Serial.print(hasilm);
digitalWrite(LedMerah,LOW);
delay(150);
// nyalakan LedHijau
digitalWrite(LedHijau,HIGH);
//delay 150 ms agar LDR baca stabil
delay(150);
// baca data sensor
hasil= analogRead(sensorPin);
hasilh=map(hasil,0,1023,0,255);
Serial.print(",");
Serial.print(hasilh);
digitalWrite(LedHijau,LOW);
delay(150);
// nyalakan LedBiru
digitalWrite(LedBiru,HIGH);
//delay 150 ms agar LDR baca stabil
delay(150);
// baca data sensor
hasil= analogRead(sensorPin);
hasilb=map(hasil,0,1023,0,255);
Serial.print(",");
Serial.println(hasilb);
digitalWrite(LedBiru,LOW);
delay(150);
// cek warna dibandingkan dengan nilai hasil kalibrasi
if(abs(hasilm-215)<k && abs(hasilh-214)<k && abs(hasilb-224)<k){
warna = 1; // orange
} else
if(abs(hasilm-232)<k && abs(hasilh-219)<k && abs(hasilb-168)<k){
warna = 2; // Hijau
} else
if(abs(hasilm-225)<k && abs(hasilh-162)<k && abs(hasilb-210)<k){
warna = 3; //Kuning
} else
if(abs(hasilm-218)<k && abs(hasilh-172)<k && abs(hasilb-211)<k){
warna = 4; // ungu
} else
if(abs(hasilm-214)<k && abs(hasilh-174)<k && abs(hasilb-221)<k){
warna = 5; // merah
} else
if(abs(hasilm-238)<k && abs(hasilh-189)<k && abs(hasilb-197)<k){
warna = 6; // abu abu
} else
Serial.println(" -> ???\n");
return warna;
}
Setelah diupload, kemudian bukalah serial monitor untuk mengambil nilai objek yang ingin dikalibrasi. Misalnya yang akan di kalibrasi adalah warna merah. Letakan objek warna merah tersebut di depan sensor, lihatlah hasil di serial monitor, maka akan tampil seperti gambar berikut:

Upload ulang program diatas kedalam arduino. Kode program diatas adalah untuk kode warna merah, jika nanti sensor LDR mendeteksi warna dengan nilai diambang batas 157, 165, dan 134, maka serial monitor akan menampilkan warna seperti berikut:
AplikasiMicrosoft Visual Studio merupakan sebuah perangkat lunak lengkap (suite) yang dapat digunakan untuk melakukan pengembangan aplikasi, baik itu aplikasi bisnis, aplikasi personal, ataupun komponen aplikasinya, dalam bentuk aplikasi console, aplikasi Windows, ataupun aplikasi Web. Visual Studio mencakup kompiler, SDK, Integrated Development Environment (IDE), dan dokumentasi (umumnya berupa MSDN Library). Kompiler yang dimasukkan ke dalam paket Visual Studio antara lain Visual C++, Visual C#, Visual Basic, Visual Basic .NET, Visual InterDev,Visual J++, Visual J#, Visual FoxPro, dan Visual SourceSafe.
![]() |
Tampilan Awal M. Visual Studio 2010 |
Setelah menginstal aplikasi tersebut, selanjutnya adalah membuka aplikasi dan membuat project baru dengan cara klik menu file – new – project seperti gambar berikut:
![]() |
Menambah Komponen |
Setelah menambah komponen seperti pada gambar diatas, kemudian klik ganda pada komponen sehingga akan tampil seperti gambar berikut:
![]() |
Form Program |
File program Visual Studio dapat di unduh disini.
Gambar diatas merupakan form yang berisikan program, sehingga kita dapat menuliskan program sesuai dengan kebutuhan. Selanjutnya adalah menambahkan beberapa komponen tambahan seperti pada gambar berikut:
![]() |
Menambah Komponen Pendukung |
Desain tampilan tatap muka dibuat sesederhana mungkin agar mudah di operasikan oleh pengguna. Desain secara keseluruhan dapat dilihat seperti pada gambar berikut:
![]() |
Desain Tampilan Aplikasi |
Setelah mendesain tampilan keseluruhan, langkah selanjutnya adalah membuat aplikasi dengan format .exe. Langkahnya adalah Pilih menu Project - Nama Project > Properties seperti pada gambar berikut:
![]() |
Jendela Properties |
![]() |
Publish Project |
Pilih Publish Now dan tunggu hingga Visual Studio selesai mempublish project menjadi file setup.exe. untuk melihat hasil publish cara bukanya di < nama project>/bin/debug/app.publish, seperti gambar berikut ini:
![]() |
File Setup.exe |
Setelah mempunyai file setup.exe dari aplikasi yang dibuat, selanjutnya adalah menginstal pada komputer dengan mengklik ganda pada file setup yang ada.
![]() |
Instal Aplikasi |
![]() |
Security Warning |
![]() |
Aplikasi Berhasil Diinstal |
Hasil
Adapun hasil rangkaian alat secara keseluruhan dapat dilihat pada gambar di bawah ini:
![]() |
Desain Box Alat Pendeteksi Warna |
![]() |
Desain Aplikasi |
Langkah Pengoperasian
Untuk melakukan pengoperasian, ikuti langkah berikut ini:- Catu Daya (Power Supply) yang digunakan adalah menggunakan kabel data dari USB.
- Setelah alat terhubung dengan arduino, maka alat pendeteksi warna sudah bisa di jalankan.
- Selanjutnya, buka aplikasi control warna yang sudah diinstal. Caranya adalah klik Start - Kontrol Warna. Maka, akan tampil seperti pada gambar berikut:
- Selanjutnya, pilih port yang digunakan,
- Jika sudah dipilih, maka alat siap untuk dijalankan, langkahnya adalah dengan cara menghubungkan terlebih dahulu alat dan aplikasi control warna dengan cara meng-klik hubungkan pada button aplikasi
- Selanjutnya, klik jalankan pada button aplikasi, seperti terlihat pada gambar berikut:
Ketika objek yang ingin dibaca dari aplikasi, maka motor servo I akan mengarahkan objek tersebut untuk dibaca oleh sensor LDR. Ketika sensor membaca warna yang akan dieskusi maka diberikan delay pada motor servo I untuk memberikan waktu kepada sensor LDR untuk membaca warna objek yang akan diarahkan kepenampungan. Setelah sensor membaca warna objek maka motor servo II akan mengarahkan objek tersebut akan diarahkan ke penampungan yang sudah dirancang. Objek yang telah dibaca oleh alat akan terdata diaplikasi yang digunakan dan akan tampil jumlah objek yang akan diterdeteksi oleh alat diapliksi yang digunakan.
SELESAI
Alat ini masih ada kekuarangan diantaranya yaitu pembacaan objek dengan menggunakan sensor LDR kurang akurat, perlu ditambahkan cover penutup pada sekeliling sensor LDR agar cahaya bias tidak mengganggu sensor pada saat pembacaan warna.
Selamat Bereksperimen...!
Jika ada yang ingin ditanyakan silahkan tulis dikolom komentar.
First test Comment by Author.
ReplyDelete