Differences

This shows you the differences between two versions of the page.

Link to this comparison view

en:iot-open:practical:hardware:rtu:esp32:scenarios:tcs [2025/07/31 18:04] – created kivilands6en:iot-open:practical:hardware:rtu:esp32:scenarios:tcs [2025/10/28 17:47] (current) – [Example] raivo.sell
Line 1: Line 1:
 +====== ESP32 TCS34725 =====
 +This is an example of the TCS34725 reading rgb color code from neopixel, and displaying it on lcd
  
 +===== Prequisits ====
 +<code>
 +lib_deps = adafruit/Adafruit LiquidCrystal@^2.0.2
 +</code>
 +===== Example ====
 +<code>
 +#include <Arduino.h>
 +#include <Wire.h>
 +#include <Adafruit_LiquidCrystal.h>
 +#include <Adafruit_TCS34725.h>
 +#include <Adafruit_NeoPixel.h>
 +
 +/* NEOPIXEL */
 +void colorWipe(uint32_t color, int wait);
 +#define LED_PIN 12
 +#define LED_COUNT 8
 +Adafruit_NeoPixel strip(LED_COUNT, LED_PIN);
 +
 +#define SDA_PIN 17
 +#define SCL_PIN 16
 +
 +#define LCD_RS 48
 +#define LCD_ENABLE 47
 +#define LCD_D4 34
 +#define LCD_D5 33
 +#define LCD_D6 26
 +#define LCD_D7 21
 +
 +static Adafruit_LiquidCrystal lcd(LCD_RS, LCD_ENABLE, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
 +
 +/* TCS34725 */
 +#define commonAnode true
 +byte gammatable[256];
 +Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
 +
 +
 +void setup() {
 +  Serial.begin(152000);
 +
 +  // Initialize I2C on custom pins
 +  Wire.begin(SDA_PIN, SCL_PIN);
 +
 +  // Initialize LCD
 +  if (!lcd.begin(16, 2)) {
 +    Serial.println("Could not init LCD");
 +    while (1);
 +  }
 +  Serial.println("LCD ready.");
 +  lcd.print("IOT-OPEN");
 +
 +  strip.begin();
 +  strip.show();
 +
 +  /* TCS34725 setup */
 +  if (tcs.begin()) {
 +    //Serial.println("Found sensor");
 +  } else {
 +    Serial.println("No TCS34725 found ... check your connections");
 +    while (1); // halt!
 +  }
 +
 +  // 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[i] = 255 - x;
 +    } else {
 +      gammatable[i] = x;
 +    }
 +    //Serial.println(gammatable[i]);
 +  }
 +}
 +<refnotes>
 +back-ref-format : none
 +</refnotes>
 +
 +void loop() {
 +
 +  strip.clear();
 +  colorWipe(strip.Color(0, 0, 255), 50);
 +  strip.show();
 +  
 +
 +  //tcs code
 +  float red, green, blue;
 +  tcs.setInterrupt(false);
 +  delay(60);  // takes 50ms to read
 +  tcs.getRGB(&red, &green, &blue);
 +  tcs.setInterrupt(true);
 +
 +  lcd.setCursor(0, 1);
 +  lcd.print("r: ");
 +  lcd.print(int(red));
 +  lcd.print("g: ");
 +  lcd.print(int(green));
 +  lcd.print("b: ");
 +  lcd.print(int(blue));
 +  delay(3000);
 +
 +  strip.clear();
 +  colorWipe(strip.Color(255, 0, 0), 50);
 +  strip.show();
 +
 +  tcs.setInterrupt(false);
 +  delay(60);  // takes 50ms to read
 +  tcs.getRGB(&red, &green, &blue);
 +  tcs.setInterrupt(true);
 +
 +  lcd.setCursor(0, 1);
 +  lcd.print("r: ");
 +  lcd.print(int(red));
 +  lcd.print("g: ");
 +  lcd.print(int(green));
 +  lcd.print("b: ");
 +  lcd.print(int(blue));
 +
 +
 +  delay(3000);
 +}
 +//for neopixel
 +void colorWipe(uint32_t color, int wait) {
 +  for(int i = 0; i < strip.numPixels(); i++) {
 +    strip.setPixelColor(i, color);
 +    strip.show();
 +    delay(wait);
 +  }
 +}
 +</code>
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0