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.