Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include "Adafruit_TCS34725.h"
- #include <Adafruit_NeoPixel.h>
- #include <Adafruit_CircuitPlayground.h>
- // 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!");
- CircuitPlayground.begin();
- CircuitPlayground.clearPixels();
- if (tcs.begin()) {
- Serial.println("Found sensor");
- } else {
- Serial.println("No TCS34725 found ... check your connections");
- while (1); // halt!
- }
- // 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;
- gammatable[i] = x;
- //Serial.println(gammatable[i]);
- }
- for (int i=0; i<3; i++){ //this sequence flashes the first pixel three times as a countdown to the color reading.
- CircuitPlayground.setPixelColor (0, 188, 188, 188); //white, but dimmer-- 255 for all three values makes it blinding!
- delay(1000);
- CircuitPlayground.setPixelColor (0, 0, 0, 0);
- delay(500);
- }
- 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 = red;
- sum += green;
- sum += blue;
- //sum += clear; // clear contains RGB already so no need to re-add it
- 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 );
- colorWipe(gammatable[(int)r], gammatable[(int)g], gammatable[(int)b], 0);
- }
- // Fill the dots one after the other with a color
- void colorWipe(int r, int g, int b, uint8_t wait) {
- for(uint16_t i=0; i< 10; i++) {
- CircuitPlayground.setPixelColor(i, r, g, b);
- delay(wait);
- }
- }
- void loop() {
- //loop is empty because it only takes the color reading once on power up! Turn the scarf off and on again to change the color.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement