본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 TCS3200/230 컬러인식 센서 모듈을 사용해서 3색 RGB LED 제어해 보기

by 오마이엔지니어 2021. 12. 7.
반응형

Arduino Uno 로 TCS3200/230 컬러인식 센서 모듈의 사용방법을 알아보고
RGB 색상 감지시 3색 RGB LED를 제어해 보는 프로젝트 입니다

<TCS3200/230 컬러인식 센서 모듈 이미지>

TCS3200/TCS230 컬러인식 센서 모듈은 TCS3200  RGB 센서 칩을 사용하였으며 (TCS230 업그레이드 버전)
4개의 백색 LED와 8핀 인터페이스로 구성되어 있습니다 
컬러인식 센서모듈은  눈으로 볼수 있는 수 많은 색상을 감지하고 측정할수 있기 때문에
색상, 주변 광 감지, 보정, 컬러 매칭 등 다양하게 적용하고 테스트 할 수 있습니다  

TCS3200.pdf
0.19MB

 
사용된 부품

Arduino Uno R3 (Italy)
아두이노 3색 RGB
TCS3200/230 컬러인식 센서 모듈
미니브래드보드
점퍼케이블(숫놈-숫놈), (숫놈-암놈)

사용된 키트
아두이노 컬러인식 센서 키트

구성 배선도 - RGB 색상 감지시 3색 LED 제어해 보기


구성 배선도 - RGB 색상 감지시 색상별 LED 점등시켜 보기


사용된 예제소스

TCS3200 컬러센서 RGB LED 테스트.txt
0.00MB
example code.txt
0.00MB


테스트 방법
별도의 라이브러리를 사용하지 않으므로 테스트 방법은 간단합니다

위 첨부된 예제 소스를 다운로드 해서 업로드 해주고 테스트 하면 됩니다
(example code 는 RGB 색상 감지시 색상별 LED 점등시켜 보기 예제입니다)

TCS3200/230 컬러인식 센서는 색을 주파수 값으로 읽을수 있는 센서입니다
아두이노와 같은 마이크로 컨트롤 보드등을 사용해서 주파수 값을 0~255 사이의 값으로
변환한 데이터를 바탕으로 테스트합니다
RGB 주파수 값을 산출하는 것은 상당히 고된 작업으로 아래 링크의 개발자의 데이터를
인용하여 테스트 할수 있습니다
http://www.robotsforfun.com/webpages/colorsensor.html 

TCS3200 컬러센서 RGB LED 테스트 예제코드를 살펴보면
const byte s0_pin = 3;
const byte s1_pin = 4;
const byte s2_pin = 5;
const byte s3_pin = 6;
const byte out_pin = 7;

const byte r_pin = 9;
const byte g_pin = 10;
const byte b_pin = 11;
컬러센서와 3색 RGB LED핀 배선연결 세팅을 확인할수 있습니다

void setup() {
  Serial.begin(9600);
  
  pinMode(r_pin, OUTPUT);
  pinMode(g_pin, OUTPUT);
  pinMode(b_pin, OUTPUT);
  
  pinMode(s0_pin, OUTPUT);
  pinMode(s1_pin, OUTPUT);
  pinMode(s2_pin, OUTPUT);
  pinMode(s3_pin, OUTPUT);
  
  pinMode(out_pin, INPUT);
  
  digitalWrite(s0_pin,HIGH);
  digitalWrite(s1_pin,LOW);
}
셋업부분을 보면 S0 핀과 S1핀이 HIGH 와 LOW 로 세팅되어 있는것을 확인할 수 있습니다

위 첨부된 데이터 시트를 살펴보면 주파수 스케일링에서 20%로 주파수 크기값을 세팅한
것을 알수 있습니다 (0~255의 적당한 수치로 변환시키기 위해 20% 로 세팅을 되었습니다)
S0, S1핀은 주파수 크기를 S2, S3핀은 포토다이오드 타입 색상을 지정합니다

  red_color = map(red_color, 25,72,255,0);
  green_color = map(green_color, 30,90,255,0);
  blue_color = map(blue_color, 25,70,255,0);

셋업 부분을 보면 레드, 그린, 블루 색상 범위를 확인할 수 있습니다

  analogWrite(r_pin, red_color);
  analogWrite(g_pin, green_color);
  analogWrite(b_pin, blue_color);
아날로그 출력으로 색상 값에 맞는 3색 RGB LED를 제어할 수 있습니다

  Serial.print("RED: ");
  Serial.print(red_color);
  Serial.print("  ");
  
  Serial.print("GREEN: ");
  Serial.print(green_color);
  Serial.print("  ");

  Serial.print("BLUE: ");
  Serial.print(blue_color);
  Serial.println("  ");
시리얼 모니터로 색상에 따른 출력 수치를 확인할 수 있습니다

example code 의 RGB 색상 감지시 색상별 LED 점등시켜 보기 예제는 RGB LED 대신
3가지 색상 LED를 따로 배선해서 테스트하는 예제로 위와 비슷하나 

  const int s0 = 8;  
  const int s1 = 9;  
  const int s2 = 12;  
  const int s3 = 11;  
  const int out = 10;   

  int pinoledverm = 2;  
  int pinoledverd = 3;  
  int pinoledazul = 4;  
컬러센서와 3개의 LED의 핀 배선연결 세팅입니다

  digitalWrite(s0, HIGH);  
  digitalWrite(s1, HIGH); 
S0과 S1 핀이 둘다 HIGH 100%로 세팅되었으며

  if (red < blue && red < green && red <blue)  
  {  
   Serial.println("Red"); 
 else if (blue < red && blue < green)   
  {  
   Serial.println("Blue");   
else if (green < red && green < blue)  
  {  
   Serial.println("Green");  

S2, S3핀의 포토다이오드 타입 출력값에 따른 RGB 색상을 확인해서 if 문을 사용해서
RGB 색상에 따라 해당하는 3색 LED를 점등 시키게 합니다

프로젝트 동영상 - RGB 색상 감지시 3색 LED 제어해 보기


프로젝트 동영상 - RGB 색상 감지시 색상별 LED 점등시켜 보기

 


이처럼 비록 주파수에 따른 RGB 색상값의 범위를 산출해 내는것이 번거롭고 힘들기는 하지만
TCS3200/230 컬러인식 센서를 활용해서 다양한 색상 테스트를 해볼수 있습니다

반응형

댓글