RGB Color Sensor + Neo Pixel LED

RGB Color Sensor with IR filter and White LED - TCS34725

Adafruit Industries 에서 만든 RGB Color Sensor 를 사용해보았다. 색상은 Neo Pixel 로 간단하게 테스트하였다.

How To Wire

8개 핀중 Vin, Gnd, SCL, SDA 4개의 핀만 사용하면 된다. SCL 은 A5, SDA 는 A4 (Arduino Uno 기준) 에 꽂을 것.

Color Sensor

Neo Pixel 은 7번에 1픽셀만 연결하였음.

Neo Pixel

How To Code

코드는 기존 샘플 예제가 4 Pin LED 를 사용한거라 Neo Pixel 용으로 살짝 수정하였다.

#include <Wire.h>
#include "Adafruit_TCS34725.h"
#include <Adafruit_NeoPixel.h>

#define PIN            7
#define NUMPIXELS      2

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600);
  Serial.println("Color View Test!");
  pixels.begin();

  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1); // halt!
  }
}


void loop() {
  uint16_t clear, red, green, blue;

  tcs.setInterrupt(false);      // turn on LED

  delay(60);  // takes 50ms to read 

  tcs.getRawData(&red, &green, &blue, &clear);

  tcs.setInterrupt(true);  // turn off LED

  Serial.print("C:\t"); Serial.print(clear);
  Serial.print("\tR:\t"); Serial.print(red);
  Serial.print("\tG:\t"); Serial.print(green);
  Serial.print("\tB:\t"); Serial.print(blue);

  // Figure out some basic hex code for visualization
  uint32_t sum = clear;
  float r, g, b;
  r = red; r /= sum;
  g = green; g /= sum;
  b = blue; b /= sum;
  r *= 256; g *= 256; b *= 256;
  Serial.print("\t");
  Serial.print((int)r, HEX); Serial.print((int)g, HEX); Serial.print((int)b, HEX);
  Serial.println();

  Serial.print((int)r ); Serial.print(" "); Serial.print((int)g);Serial.print(" ");  Serial.println((int)b );

  for(int i=0;i<NUMPIXELS;i++){
    pixels.setPixelColor(i, pixels.Color( (int)r, (int)g, (int)b )); // Moderately bright green color.
    pixels.show();
  }

}

Result

센서의 흰색 LED 는 색상을 인식할때 센서에 닿은 부분이 어두워지기 때문에 달아준 것으로, 항상 불이 들어와있는 것이 정상이다.

Wired up

컬러 인식 자체는 괜찮은 것 같으나 흰색 LED 때문에 좀 밝게 보이는 듯 하고, Neo Pixel 의 한계 때문에 무채색 계열은 표현하기 힘들어 보인다.

빨간색 테스트.

Red Test

녹색 테스트. 아래도 실제로는 녹색으로 잘 나오는데, 사진상으로 무색에 가깝게 보이는 듯.

Green Test

파란색 테스트. 무난함.

Blue Test

Make

컨트롤하기도 쉽고. 재밌음. 이걸 응용해서 Arduino Micro 넣어 색상을 카피하는 소형 조명을 제작하였다.

장치 바닥에 컬러 센서를 부착하여 바닥면의 색상이 복사되도록 만들었음.

comments powered by Disqus