Contoh hasilnya sbb:
Wiring dan skematik
Sketch Program:
---
/* Program sensor warna Oleh : Aan Darmawan web : valfa.blogspot.com update : 25 Mei 2012 */ #include <Servo.h> Servo myservo; int sensorPin = A0; int LedBiru =3; // Led warna biru digital pin 3 int LedHijau=4; // Led warna hijau digital pin 4 int LedMerah=5; // Led warna merah digital pin 5 int hasil,hasilb,hasilm,hasilh; int k=8; // toleransi warna void setup() { // declare the ledPin as an OUTPUT: pinMode(LedBiru,OUTPUT); pinMode(LedMerah,OUTPUT); pinMode(LedHijau,OUTPUT); digitalWrite(LedBiru,LOW); digitalWrite(LedMerah,LOW); digitalWrite(LedHijau,LOW); myservo.attach(9); // motor servo pin digital 9 myservo.write(90); delay(100); Serial.begin(9600); delay(1000); } void loop() { // 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-208)<k && abs(hasilh-203)<k && abs(hasilb-177)<k){ Serial.println(" -> WARNA PUTIH!\n"); myservo.write(10); } else if(abs(hasilm-209)<k && abs(hasilh-165)<k && abs(hasilb-139)<k){ Serial.println(" -> WARNA MERAH !\n"); myservo.write(30); } else if(abs(hasilm-135)<k && abs(hasilh-182)<k && abs(hasilb-147)<k){ Serial.println(" -> WARNA HIJAU !\n"); myservo.write(50); } else if(abs(hasilm-138)<k && abs(hasilh-163)<k && abs(hasilb-166)<k){ Serial.println(" -> WARNA BIRU !\n"); myservo.write(70); } else if(abs(hasilm-156)<k && abs(hasilh-184)<k && abs(hasilb-172)<k){ Serial.println(" -> WARNA CYAN !\n"); myservo.write(90); } else if(abs(hasilm-199)<k && abs(hasilh-159)<k && abs(hasilb-170)<k){ Serial.println(" -> WARNA UNGU !\n"); myservo.write(110); } else if(abs(hasilm-209)<k && abs(hasilh-214)<k && abs(hasilb-223)<k){ Serial.println(" -> WARNA KUNING !\n"); myservo.write(130); } else if(abs(hasilm-210)<k && abs(hasilh-206)<k && abs(hasilb-211)<k){ Serial.println(" -> WARNA PINK !\n"); myservo.write(150); } else if(abs(hasilm-165)<k && abs(hasilh-197)<k && abs(hasilb-205)<k){ Serial.println(" -> WARNA HIJAU MUDA !\n"); myservo.write(170); } else // if(abs(hasilm-209)<k && abs(hasilh-204)<k && abs(hasilb-210)<k){ // Serial.println(" -> WARNA KUNING MUDA!\n"); // myservo.write(180); } else Serial.println(" -> ???\n"); delay (2000); }---
90 comments:
wah, Inovasinya oke punya nih..
kira" total biaya pembuatan sensornya brp ya pak?
terima kasih sebelumnya
Fajar, Elektro UKM
Kalau hanya sensornya saja di bawah 20rb... :-), komponen inti yang lain: mikrokontroler (saya menggunakan arduino elmarino) dan servo motor
pak...
bukan nya LDR tuh cmn ngebaca intensitas cahaya ya..??
Betul, tapi nilai resistansi yang dihasilkan juga dipengaruhi oleh panjang gelombang (dalam hal ini warna)dari cahaya tersebut, jadi dipengaruhinya oleh intensitas cahaya dan panjang gelombangnya....
schematic arduino mana mas sekalian code nya donk...!!!
keren idenya pak Aan,,wah mau dicoba dirumah ni, kebetulan pernah beli severino sama bapak...hehehe
cara kerja sesornya gimana tu pa masih bingung maklum nubi,,,
jika warna kertas uji sama dengan warna led yg menyala berarti intensitas cahaya yang terpantul ke LDR akan berbeda, kurang lebih begitu ya pak konsepnya?? sebelumnya bpak mengukur besar intensitas nya dulu ya baru mengkalibrasinya sedemikian hingga bisa dideteksi ya pak? idenya mantap pak, tapi jarak kertas uji ama led RGB gak bisa jauh ya pak? dan clo memakai bahan uji lain seperti kain butuh kalibrasi ulang ya pak?
@Sandy, betul sekali semua apa yang anda tulis, betul juga karena ldr peka terhadap cahaya, agar tidak "terganggu" cahaya sekitarnya,maka jarak pengukuran tidak bisa jauh,dan pengukuran dilakukan pada ,"ruang tertutup" sehingga hanya pantulan cahaya Led RGB terhadap "benda berwarna" saja yang mempengaruhinya...
Pak Aan, apakah ini bisa digunakan untuk jenis arduino lain? saya menggunakan Arduino Uno.
apakah ada perbedaan skema dan list programny?
@Helmi,rangkaian ini bisa menggunakan arduino uno,duemilanov ataupun lainnya,skema dan list programnya sama,kecuali angka2 RGB untuk pembanding tiap warna,harus dikalibrasi sendiri,disesuaikan dengan sensor yg digunakan..
menarik sekali mas.. jadi pengen mencobanya
@Ayah Fina:silahan bereksperimen mas... Skema rangkaian sudah saya share di atas....;)
oya mas, saya sudah lama merencanakan eksperimen bikin shutter speed tester untuk kamera analog (sebuah hobi di waktu senggang). karena akses terhadap komponen elektronika yg agak susah di sini, ide saya memanfaatkan sensor mouse-wheel dan duemilanove yg saya punya (btw, saya hanya tahu elektronika sebatas hobi).
saya langsung saja hubungkan optoelektrik bekas mouse tersebut, yg bening saya anggap LED dan yg hitam saya anggap sensornya. Led saya beri input dan kemudian saya baca di sensor tidak ada apa2, baik ketika bebas maupun saya beri penghalang. polaritas LED dan sensor saya anggap benar dengan melihat jalurnya pada mouse karena saya tidak punya datasheetnya.
pertanyaan saya:
- apakah bisa sensor mouse tersebut saya gunakan untuk keperluan di atas?
- seandainya bisa, apakah cukup berdaya untuk menguji kecepatan shutter speed hingga 1/1000 atau 1/2000 detik
kiranya Mas Aan mau berbaik hati memberikan petunjuk atau syukur2 ulasan teknis utk saya coba... hehehehe
Saya belum pernah mencoba IR dari bekas mouse, tapi untuk memastikan pemancar IR (betul, yang berwarna putih bening umumnya),coba beri tegangan selanjutnya lihat melalui kamera HP, kalau berfungsi baik, coba anoda dan katoda IR penerima (yang berwarna gelap) dibalik polaritasnya.
untuk menguji kecepatan shutter 1/2000 detik, berarti sensor harus mampu merespon <=0,5ms itu harus lihat pada datasheet IR nya, kalau arduino duemilanove nya rasanya masih mampu..
mudah2an membantu...
mas sy mau tanya nilai warna RGB nya ko ga stabil ya ketika membaca warna merah harusnya kan nilai RGB nya itu (R=255 G=0 B=0) ko disini nilai nya sama semua ya,mohon info nya...tq
r=255,g=0 dan b=0, itu setting warna merah pada tampilan layar monitor komputer,sedangkan sensor cahaya (misal LDR) baca panjang gelombang merah yang dikonversi menjadi tegangan selanjutnya melalui ADC kecil kemungkinannya menghasilkan angka 255 pada r dan 0 pada lainnya, sangat tergantung rangkaian sensornya, dan kenyataannya kertas yang disensor hasil komposisi warna r,g dan b yang r nya dominan, jadi kecil sekali kemungkinannya seperti yang anda maksud.
PAk kalau boleh tahu, bapak pakai servo standar merek apa ya pak...
soalnya saya sudah mencoba program ini tetapi gerakakan servonya tidak sesuai, misalnya saya arahkan ke arah 10 atau 45 derajat servo malah bergerak ke sudut 0 derajat..
tolong bantuannya pak...
Servo yang saya gunakan adalah MG946R
atau MG995 juga bisa
Pak kotak kecil yang tempat LDR dan RGB itu penempatsn posisinya bagaimana ya? Bisa ditunjukkan tidak gambarnya?
@Beby: silahkan simak video demonya, pada saat awal video/tampilan judul latarnya adalah tampilan penempatan led RGB dan LDR nya .. :-)
Pak maaf sebelumnya,saya boleh minta nomor yang bisa dihubungi ga?saya mau bertanya lebih lanjut.kalo boleh bisa dkirim lewat email saya,bebymauliahputri@yahoo.com
Terimakasih :)
Silahkan email ke valfa007@gmail.com ... welcome
Pak mau tanya, itu fungsi map(n, a, b, c, d) untuk apa ya?
Lalu bisa tidak pak jika LDR nya saya ganti dengan photo dioda?
@Galang: m=map(n,a,b,c,d) berfungsi untuk memetakan suatu nilai n pada rentang nilai tertentu (nilai terkecil a sd nilai terbesar b) menjadi nilai m pada rentang nilai yang baru ( nilai terkecil c sd nilai terbesar d), contoh , diketahui n=512 ; maka m=map(n,0,1023,0,255); akan menghasilkan m= 128
perhitungannya
m= (d-c)/(b-a)*n
Makasih Pak Jawabannya, jadi nambah ilmu baru. :) Ini untuk mengatasi input analog yang punya rentang berbeda dari PWM ya Pak? Selama ini saya pakai rumus yang bawah Pak. Hehehe,,
Oh iya Pak, bisa tidak itu diganti dengan photodioda. Sekalian mau tanya, kenapa kok robot line follower kebanyakan menggunakan photodioda, padahal dengan LDR kan juga bisa? Apakah ada hubungannya dengan kepresisian pembacaan intensitas cahaya? Terima Kasih untuk ilmu barunya Pak Darmawan,,
@Galang: LDR diganti dengan Photodioda prinsipnya bisa saja, hanya rentang sensitivitas photodioda terhadap panjang gelombang cahaya sempit/selective (maka dari itu lebih cocok digunakan untuk deteksi cahaya pada robot line follower, karena tidak terlalu terpengaruhi oleh cahaya sekitarnya) ,ada kemungkinan sulit pengukuran/kalibrasi terhadap berbagai intensitas warna cahayanya, tapi patut di coba tuh.... :-)
pak. nilai kalibrasi sebagai referansi warnanya itu diambil dari mana? apa tegangan ldr, tahanan atau nilai apanya? terus bagaimana cara mendapatkan nilai tersebut?
@success, prinsipnya sbb: siapkan kertas warna yg akan dikalibrasi warnanya,kemudan letakan sensor di atasnya,nyalakan led merah dan catat nilai responnya (melalui serial monitor),demikian pula lakukan thd respon nyala led hijau dan biru dan catat masing2 nilainya. Jadi akan diperoleh 3 nilai respon dari mading masing sinar led per tiap kertas warna, itulah nilai kalibrasinya
untuk menggambar rangkaian itu(yg warna) pake apa mas???
@Ramadhan: Gunakan Fritzing bisa download via internet,sotware-nya open source
wah,,, makasih infonya mas,.. mau tanya lagi boleh?? hehehe.. tolong jelasin yg (int k=8; // toleransi warna) itu mksdnya gimana mas?
@Ramadhan: hasil pengukuran respon cahaya oleh LDR kadang kurang stabil tetapi berkisar diantaranya, misal hasil suatu pengkuran cahaya kadang tercatat 200,kadang 204 kadang 195,maka hal ini dikompensasi dengan variabel k tersebut, sedangkan angka 8 diperoleh dari hasil coba-coba saja.
how i should calibrate this please ?
what should i do ?
and can you please tell me how did you find the numbers ? 208, 203, 177 :/
please help me !
if(abs(hasilm-208)<k && abs(hasilh-203)<k && abs(hasilb-177)<k){
for calibration: prepare colored paper that will be calibrated color, then put a sensor on it, turn on the red LED and record the value of the response (you can monitoring the value via serial monitor), so too did the response of the green and blue LED flash and record each value. So be obtained 3 response value of each LED light per each paper color (such the value 208,203 and 177 ).
ijin copy programnya pak
@Agus, silahkan copy, saya publish secara free.... mudah2an bermanfaat... :-)
Pak saya mao nanya ni , yang warna biru apa ya ?
@Irfan, yang kotak biru itu hanyalah sebuah kotak untuk menyimpan rangkaian sensor, berisi pcb LDR dan Led RGB (lihat video dan baca komentar2 sebelumnya)
Ow iya iya , tapi saya nyoba engga bisa pak , engga bisa kedeteksi , motor servonya juga engga bergerak
Kalo pake motor servo mg 996r bisa gak pak ?
Bisa Pake Motor servo MG996R, ga masalah. Coba kalibrasi dulu sensornya, caranya silahkan baca komentar2 sebelumnya, sudah ada pembahasannya.
Pak maaf ne saya mao tanya lagi , mencari nilai kalibrasinya kemaren udah saya coba tapi ko beda beda ya pak engga stabil dan lagi nilainya pun rendah pak
@Irfan, apakah LDR yang digunakan yang ukuran sedang/besar? jangan pakai LDR yang berukuran kecil. penyolderan rangkaiannya harus benar-benar mantap,rangkaian Sensor (LDR dan LED RGB pada ruang tertutup, sedapat mungkin tidak dipengaruhi cahaya luar).
sangat bermanfaat banget ilmunya pak darmawan. saya mau bertanya apakah bisa pak, ini dikembangkan sehingga bisa membaca 2 warna atau lebih pada 1obyek ???
@Rio, terima kasih, sepertinya tidak mudah kalau kelaigus bisa baca 2 warna atau lebih, apalagi kalau posisi warnanya acak/random, mungkin sensor yang lebih tepat adalah camera/webcam dan kemudian diolah melalui image proccessing, saran saya kalau sudah image proccessing sebaiknya pakai rasppi atau sejenisnya.
pak kalo boleh saya minta review tentang ADC nya kalo dibuat ke digital berapa volt setiap warna
maaf pak soalnya dosen saya nanyain rumusnya buat konversiin ke digitalnya
ADC pada arduino UNO yg sebenarnya core nya adalah microcontroler ATMEGA 328, mempunyai resolusi 10bit, mempunyai rentang pengukuran nilai digital 0- 1023, apabila sumber teg referensi ADC 5V, maka keluaran hasil pengukuran teg pada ADC y dalam nilai digitalnya (nd) akan memenuhi pers nd=Vin/5x1023
makasih atas penjelasannya pah sangat membantu
mas itu fungsi map codenya gimana? yang hasil sama hasilb juga seperti apa fungsinya?
@Arfai, baca postingan comment sebelumnya, fungsi map sudah dibahas
klo menggunakan image proccessing itu cara kerjanya bagaimana pak? dan menurut pak darmawan apakah berhasil membaca lebih dari satu warna menggunakan camera/webcam? izin sharing yak pak darmawan hehehe...
@Rio, banyak cara untuk mendapatkan informasi warna pada suatu citra, silahkan berselancar di internet, mungkin kata kunci yang bisa membantu "color detection"
Om klo ntar output nya bisa di tambahkan berupa text di lcd (Jika merah = di lcd misal lcd 16x4 muncul text "Merah" dll) ntar edit sricpt nya gmn >.<
@Ramdan, silahkan pelajari penggunaan LCD 16x4 di Arduino (contohnya http://web.alfredstate.edu/weimandn/programming/lcd/ATmega328/LCD_code_ino_4d.html ), kemudian gabungkan dengan rangkaian ini...
Selamat bereksperimen.....
mas kalo untuk mendeteksi warna cairan akurat gak ya?
@Halida,ditinjau dari jenis sensor, tidak akan bisa mencapai keakuratan yang tinggi tetapi sangat relatif, tergantung teknik penempatan sensor dan cairannya serta keinginan keakuratannya sampai berapa besar? saya rasa kalau untuk cairan yang transparan akan sulit kalibrasinya, tapi kalau cairan yang tidak transparant (seperti air susu, coklat) masih memungkinkan.
Pak motor servo yg bapak gunakan itu tipe apa ya?
Oh iya kalo arduino disambungkan dengan labview bagaimana caranya pak sehingga led rgb nya dihidupkan menggunakan labview, dan juga ada tampilan warna di labview yg terbaca oleh led nya?
@Isal Basya, silahkan baca pada diskusi sebelumnya,krn sudah saya infokan type servo nya, mengenai koneksi dengan labview, saya belum pernah mencobanya ... silahkan cari melalui google....:-)
maaf mau nanya pak, untuk mendeteksi warna kaca apakah bisa?
@Edwin, kalau yang dimaksud kaca berwarna transparant secara teoritis memungkinkan,proses penyensorannya untuk rangkaian di atas, urutannya adalah : sumber cahaya (Led RGB) - Kaca - Sensor LDR; jadi kaca seolah-olah merupakan filter warna cahaya thd sensor. Itu ide nya.
Selamat bereksperimen..
Ldrnya lebih tinggi dari lednya apa lednya yg lebih tinggi yah ?
@okta,LDR nya lebih bawah dari LED nya
pak,,numpang nanya jg ya,kalau misalnya kita gak gunakan LDR ,apa masih bisa sensor RGB berkerja pak?
Dalam rangkaian di atas, LDR adalah komponen sensor, kalau tidak digunakan, ga ada komponen sensornya.... mau menyensor pakai apa?
Can I make it using pic microcontroller? If yes then plzz give me some idea.i am from india.
of course, you can use PIC18F4550 (with built-in ADC) for this project, but unfortunately I never using PIC micro controller for my Project.
Itu yang sensor pembacanya? Gmn buat nya?
@Maulana: lihat skematik dan contoh videonya...
Mau tanya cara kalibrasi angka2 RGB untuk pembanding tiap warna gmn?
Mau tanya cara kalibrasi angka2 RGB untuk pembanding tiap warna gmn?
@Maulana, cara kalibrasi sudah pernah dibahas dalam forum diskusi ini, silahkan baca diskusi2 di atas, trims
Apakah untuk mendeteksi warna barang cair bisa..
@Agus , barang cair yang tidak tembus pandang (misal susu,coklat) mungkin bisa , hanya saja perlu dipikirkan peletakan sensornya, untuk barang cair tembus pandang (misal:sirop) saya tidak yakin dapat berhasil dengan baik.
asalamualiakum
bang cara untuk kalibrasi warna nya gimana
butuh banget bimbingan nya
makasih
@Andi, silakan baca diskusi - diskusi seblumnya, sudah dibahas sebelumnya
Terima kasih
Maaf pak mau tanya, kenapa LDR sama servonya responya lama.?
Sensornya apa pak? Trus mengetahui nilainya dimonitor?melalui aplikasi apa pak?
permisi pak, bedanya pakai led rgb dengan sensor tcs230 itu apa ya? dari program dan skematiknya apa ada yg di ubah?
tentu saja beda led rgb dengan sensor tcs230, led rgb adalah LED bukan sensor, kalau tcs230 itu IC Sensor yang dapat mengkonversi warna cahaya menjadi frekuensi, perubahannya cukup banyak silahkan pelajari datasheet tcs230
Pak aan maksud dari angka hasilm=map(hasil,0,1023,0,255);
Itu apa ya?
silahkan baca refensi nya di https://www.arduino.cc/reference/en/language/functions/math/map/
Bila alat ujinya di ganti dgn monitor bisa ga
We ayudame con mi proyecto esq no funciona y lo hice con un do wile
Pertanyaan: Bila alat ujinya di ganti dgn monitor bisa ga ?
jawab: bisa, tetapi harus di kalibrasi lagi
salam,ada tak video cara membuat rgb+ldr? saya mahu membuat untuk final projek
Post a Comment