#include <Wire.h>
#include "Adafruit_TCS34725.h"
// Pick analog outputs, for the UNO these three work well
// use ~560 ohm resistor between Red & Blue, ~1K for green (its brighter)
#define redpin 3
#define greenpin 5
#define bluepin 6
// for a common anode LED, connect the common pin to +5V
// for common cathode, connect the common to ground
// set to false if using a common cathode LED
#define commonAnode true
// our RGB -> eye-recognized gamma color
byte gammatable[256];
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
void setup() {
Serial.begin(9600);
Serial.println("Color View Test!");
if (tcs.begin()) {
Serial.println("Found sensor");
} else {
Serial.println("No TCS34725 found ... check your connections");
while (1); // halt!
}
// use these three pins to drive an LED
pinMode(redpin, OUTPUT);
pinMode(greenpin, OUTPUT);
pinMode(bluepin, OUTPUT);
// thanks PhilB for this gamma table!
// it helps convert RGB colors to what humans see
for (int i=0; i<256; i++) {
float x = i;
x /= 255;
x = pow(x, 2.5);
x *= 255;
if (commonAnode) {
gammatable = 255 - x;
- } else {*
_ gammatable = x; _
_ }_
_ //Serial.println(gammatable*);
}
}
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 );
analogWrite(redpin, gammatable[(int)r]);
analogWrite(greenpin, gammatable[(int)g]);
analogWrite(bluepin, gammatable[(int)b]);
}*_