سنسور رنگ مدل TCS230، فتودیودهای سیلیکونی قابل تنظیم را با یک مبدل جریان به فرکانس ترکیب کرده و آن را در یک مدار مجتمع CMOS به شکل یک ماژول یکپارچه ارائه می نماید. فرکانس خروجی full-scale این سنسور را می توان توسط یکی از سه مقدار از پیش تعیین شده از طریق پین های ورودی کنترلی، درجه بندی نمود. این سنسور شامل ورودی و خروجی دیجیتال است که امکان ارتباط مستقیم با برد آردوینو . یا سایر میکروکنترلرها و مدارات منطقی را فراهم می نماید.
خروجی این سنسور یک موج مربعی (50% duty cycle) می باشد و  فرکانس آن مستقیماً با شدت (درخشندگی) نور متناسب است.
مشخصات:
-     تراشه : TCS230
-     ولتاژ عملیاتی: 3 ولت ~ 5 ولت
-     بهترین محدوده تشخیص: 10 میلی متر
-     تبدیل شدت نور به فرکانس با وضوح بسیار بالا
-     ارتباط مستقیم با میکروکنترلر
-     اندازه PCB: تقریباً. 1.2 در 0.95 اینچ
کاربرد:
نحوه عملکرد:
این سنسور، رنگ جسمی که در مقابل آن قرار دارد را تحلیل کرده و فرکانس هر یک از سه رنگ قرمز (R)، سبز(G) و آبی (B) موجود در آن را، به صورت عددی در محدوده 0 تا 255 اعلام می نماید. 
شماتیک مدار:
مثال آردوینو:
	کد:
	/*
 # Be name Khoda!
 # Example code for the TCS230 Color sensor 
 # Company    : AftabRayaneh
 # Website    : http://shop.aftabrayaneh.com
 # Editor     : Elham Rasekh
 # Date       : 31.08.2013
 # Version    : 2.0
 
 # s0 -> digital pin 3
 # s1 -> digital pin 4
 # s2 -> digital pin 5
 # s3 -> digital pin 6
 # out-> digital pin 2
 # OE -> digital pin GND
 
 */
int tcs_s0 = 3, tcs_s1 = 4, tcs_s2 = 5, tcs_s3 = 6;
int tcs_out = 2;
int flag = 0;
int my_timer = 0;
byte counter = 0;
byte countR = 0, countG = 0, countB = 0;
void setup()
{
  Serial.begin(9600);
  pinMode(tcs_s0,OUTPUT);
  pinMode(tcs_s1,OUTPUT);
  pinMode(tcs_s2,OUTPUT);
  pinMode(tcs_s3,OUTPUT);
}
void TCS()
{
  flag=0;
  digitalWrite(tcs_s1,HIGH);
  digitalWrite(tcs_s0,HIGH);
  digitalWrite(tcs_s2,LOW);
  digitalWrite(tcs_s3,LOW);
  attachInterrupt(0, ISR_INTO, LOW);
  timer0_init();
}
void ISR_INTO()
{
  counter++;
}
void timer0_init(void)
{
  TCCR2A=0x00;
  TCCR2B=0x07; //the clock frequency source 1024 points
  TCNT2= 10000; //10 ms overflow again
  TIMSK2 = 0x01; //allow interrupt
}
int i=0;
ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function
{ 
  if (my_timer > 100)
  {
    Serial.print("red=");
    Serial.println(countR,DEC);
    Serial.print("green=");
    Serial.println(countG,DEC);
    Serial.print("blue=");
    Serial.println(countB,DEC);
    Serial.println("\n");
    my_timer=0;
  }
  my_timer++; 
  TCNT2=100;
  flag++;
  if(flag==1)
  {
    countR=counter;
    digitalWrite(tcs_s2,HIGH);
    digitalWrite(tcs_s3,HIGH);
  }
  else if(flag==2)
  {
    countG=counter;
    digitalWrite(tcs_s2,LOW);
    digitalWrite(tcs_s3,HIGH);
  }
  else if(flag==3)
  {
    countB=counter;
    digitalWrite(tcs_s2,LOW);
    digitalWrite(tcs_s3,LOW);
  }
  else if(flag==4)
  {
    flag=0;
  }
  counter=0;
}
void loop()
{
  TCS();
  while(1);
}
 جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.