Minggu, 18 Desember 2016

Tutorial Penggunaan Sensor Warna TCS230 / TCS3200

Tutorial dan contoh sketch coding Cara penggunaan Sersor Warna TCS230 / TCS3200


TCS230 adalah sebuah Programmable Converter 'Color Light' menjadi Frekuensi (Programmable Color-Light to Frequency Converter).

TCS230 adalah penggabungan dari Silicon Photodiode dan 'Current to Frequency Converter' pada sebuah IC CMOS single monolithic.Output sensor ini adalah 'Gelombang Persegi' (siklus 50%) dengan frekuensi yang berbanding lurus dengan intensitas cahaya (radiasi).

Converter cahaya ke frekuensi membaca sebuah array 8 x 8 foto dioda. Enam belas dioda memiliki filter biru, 16 dioda memiliki filter hijau, 16 dioda memiliki filter merah, dan 16 dioda jelas tanpa filter. Empat jenis (warna) dari dioda yang interdigitated untuk meminimalkan efek non-keseragaman insiden radiasi. Semua 16 dioda dengan warna yang sama terhubung dalam rangkaian paralel yang mana dioda ini digunakan selama mode aktif pin terpilih (S0,S1,S2,S3).

Download Full Datasheet Sensor TCS230/TCS320


Berikut adalah Wiring sensor Warna TCS230/TCS3200 ke Arduino :


TCS230  <-->  Arduino
------------------------------
    S0       <-->   D3
    S1       <-->   D4
   OE       <-->   Tidak Digunakan
  GND     <-->  Pin GND
    S2       <-->   D5
    S3       <-->   D6
  OUT     <-->   D7
  VCC     <-->   Pin 5V
---------------------------------
Penggunaan Pin bisa menggunakan pin selain diatas karena penggunaan sensor in tidak membutuhkan pin khusus dan juga tidak perlu menggunakan library khusus.


Berikut adalah Contoh Sourche Code untuk melakukan test pembacaan warna oleh sensor warna TCS230/3200 dan hasil pembacaan (berupa komposisi RGB) dapat kita tampilkan di serial monitor/lcd dan juga hasil pembacaan komposisi RGB kita gunakan untuk Generate Warna pada RGB LED untuk menampilkan Warna LED sesuai warna yang terbaca sensor.

 Silahkan rangkai sensor dan Led sesuai contoh wiring diatas kemudian Upload sketch coding dibawah ini dan anda bisa melihat hasil pembacaan warna pada 'Serial Monitor' Arduino IDE dan hasil warnanya dapat ditampilkan pada RGB LED yang ada di rangkaian.

Sensor warna TCS230

RGB LED 10mm Diffused Common Cathode

Source Code:

//-------- www.belajarduino.com ------------
//--------- support by www.tokopedia.com/rajacell ---------
//---------- write by dani-Rajacell ---------

//Wiring PIN Sensor TCS3200 / TCS230
int s0=3; //Pin S0 ke Pin D3 Arduino
int s1=4; //Pin S1 ke Pin D3 Arduino
int s2=5; //Pin S2 ke Pin D3 Arduino
int s3=6; //Pin S3 ke Pin D3 Arduino
int out=7; //Pin OUT ke Pin D3 Arduino

// LED Pin sebagai indikator Warna Object terdeteksi
const int LED=13; 

void TCS3200setup(){
pinMode(LED,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);

return;
}

void setup(){
//Set Color Sensor
TCS3200setup();

//Setting OUT COlor LED
//RGB LED Common Cathode (Diffused RGB LED)
pinMode (9, OUTPUT);  //Red Led
pinMode (10, OUTPUT); //Green Led
pinMode (11, OUTPUT); //Blue Led

//Memulai koneksi Serial dengan Serial Monitor Arduino IDE
Serial.begin(115200);

delay(100); //delay set to loop
}

void loop(){

//Looping Color Detection
Serial.print(detectColor(out));
//Delay Color Scanner
delay(100); 
}

unsigned int detectColor(int taosOutPin){
  //Tolerance adalah nilai minimal sebuah OUT sensor yang di anggap sebagai 'WARNA TERDETEKSI'
  //Fungsinya untuk menghindari Noise hasil baca sensor dan Iddle Time Sensor (saat tidak ada object)
  //Nilai Tolerance 1-10 
double isPresentTolerance=1;
double isPresent =colorRead(taosOutPin,0,0)/colorRead(taosOutPin,0,1);

Serial.print("isPresent:");
Serial.println(isPresent,2);

Serial.print("isPresentTolerance curently set to:");
Serial.println(isPresentTolerance,2);

if(isPresent<isPresentTolerance){

Serial.println("nothing is in front of sensor");

return 0;
}

double red,blue,green;
double white = colorRead(taosOutPin,0,1);
unsigned int maxColor = white;
unsigned  int red2, blue2, green2;

//Red Color Detection mode
red = white/colorRead(taosOutPin,1,1);
red2=red*255/maxColor;

//Green Color Detection mode
green = white/colorRead(taosOutPin,3,1);
green2=green*255/maxColor;

//Blue Color Detection mode
blue = white/colorRead(taosOutPin,2,1);
blue2=blue*255/maxColor;


Serial.print("red  :");
Serial.println(red2);
//Generate RED Color to RGB LED
if(red2>20){analogWrite (9, red2);}
else {analogWrite (9, 0);}

Serial.print("green  :");
Serial.println(green2);
//Generate GREEN Color to RGB LED
if(green2>20){analogWrite (10, green2);}
else {analogWrite (10, 0);}

Serial.print("blue  :");
Serial.println(blue2);
//Generate BLUE Color to RGB LED
if(blue2>20){analogWrite (11, blue2);}
else {analogWrite (11, 0);}

}

unsigned int colorRead(unsigned int taosOutPin,unsigned int color, boolean LEDstate){
pinMode(taosOutPin, INPUT);

taosMode(1);

int sensorDelay=1;

if(color==0){
digitalWrite(s3, LOW);
digitalWrite(s2, HIGH);

}else if(color==1){
digitalWrite(s3, LOW);
digitalWrite(s2, LOW);

}else if(color==2){
digitalWrite(s3, HIGH);
digitalWrite(s2, LOW);

}if(color==3){
digitalWrite(s3, HIGH);
digitalWrite(s2, HIGH);
}

unsigned int  readPulse;
if(LEDstate==0){
digitalWrite(LED, LOW);
}

if(LEDstate==1){
digitalWrite(LED, HIGH);
}

delay(sensorDelay);
readPulse=pulseIn(taosOutPin, LOW, 25000)/2;
if( readPulse<.1){
readPulse = 25000;
}

taosMode(0);

return  readPulse;

}

void taosMode(int mode){
if(mode==0){
digitalWrite(LED,LOW);
digitalWrite(s0,LOW);
digitalWrite(s1,LOW);
} 
else if(mode==1){
digitalWrite(s0,HIGH);
digitalWrite(s1,HIGH);
} 
else if(mode==2){
digitalWrite(s0,HIGH);
digitalWrite(s1,LOW);
} 
else if(mode==3){
digitalWrite(s0,LOW);
digitalWrite(s1,HIGH);
}

return;
}

0 komentar:

Posting Komentar

Copyright © 2014 Belajar Arduino | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top