Pubblicato il

Sensore Rilevatore di Colore Arduino TCS34725 I2C

Premessa: Il sensore di colore arduino TCS34725 I2C ha un’elevata sensibilità, un’ampia gamma dinamica e include un filtro di blocco IR che lo rende una soluzione di rilevamento del colore ideale per l’uso in diverse condizioni di illuminazione.Il sensore di colore TCS34725 include anche quattro LED ultra luminosi per consentire al sensore per funzionare senza risorse luminose esterne.Il modulo funziona tramite il bus I2C di Arduino e include interfacce PH2.0-4P e XH2.54 (breadboard) per soddisfare una vasta gamma di scenari utente.

CARATTERISTICHE TECNICHE:

  • Tensione di esercizio: 3,3~5V
  • Corrente di esercizio: 65 uA
  • Gamma di rilevamento: 3-10 mm
  • La frequenza di clock: 0-400 KHZ
  • Interfaccia: interfaccia IIC
  • Indirizzo IIC: 0x29
  • Intervallo di temperatura: -30 ℃ ~ + 70
  • Piedi pollici: 18,5 * 23 mm/ 0,73 * 0,9 pollici
  • Peso: 12 g

LISTA MATERIALI:

numero Etichetta Descrizione
1 SDA I2C-SDA
2 SCL I2C-SCL
3 VCC 3,3~5V
4 GND GND
5 portato Attivo-Alto/Libero On
6 INT Attivo Basso

Indirizzo I2C: 0x29
L’interfaccia XH2.54 (compatibile con breadboard) necessita di saldatura.
La carta del filtro di blocco potrebbe essere strappata.

In questo tutorial, rileveremo il valore RGB del campione e lo simuleremo con i LED RGB

SCHEMA DI COLLEGAMENTO:

CODICE DI ESEMPIO:

Librerie:

  • Wire LGPL: arduino.cc/en/Reference/Wire
  • DFRobot_TCS34725 LGPL: github.com/DFRobot/DFRobot_TCS34725/raw/master/DFRobot_TCS34725.rar
#include <Wire.h>
#include "DFRobot_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];

DFRobot_TCS34725 tcs = DFRobot_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
void setup() {
  Serial.begin(115200);
  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[i] = 255 - x;
    } else {
      gammatable[i] = x;
    }
    //Serial.println(gammatable[i]);
  }
}

void loop() {
  uint16_t clear, red, green, blue;
  tcs.getRGBC(&red, &green, &blue, &clear);
  tcs.lock();  // 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);
  Serial.println("\t");

  // 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 );
  //Set the color lamp
  analogWrite(redpin, gammatable[(int)r]);
  analogWrite(greenpin, gammatable[(int)g]);
  analogWrite(bluepin, gammatable[(int)b]);
}

Buon progetto.