Sensor de color TCS34725 para Arduino
FunduinoÚltima actualización el
Farben erkennen und die erkannte Farbe mit einer RGB-LED anzeigen
Material
Der RGB-Farbraum
Der Sensor und sein Anschluss
1 / 2
Bibliothek installieren
Farbwerte im Seriellen Monitor anzeigen
1 / 2
Sketch 1: Farbwerte im Seriellen Monitor anzeigen
#include "Adafruit_TCS34725.h"
/*
TCS34725_INTEGRATIONTIME
Laengere Zeiten erhoehen die Empfindlichkeit, besonders bei schwachem Licht.
Moegliche Werte: 2_4MS, 50MS, 101MS, 154MS, 700MS
-----
TCS34725_GAIN
Empfindlichkeit einstellen: 1X, 4X, 16X, 60X
*/
Adafruit_TCS34725 RGBSensor = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
void setup()
{
Serial.begin(9600);
delay(1000);
// Farbsensor starten
if (RGBSensor.begin())
{
Serial.println("Sensor gefunden!");
}
// Wenn der Sensor nicht gefunden wurde
else
{
Serial.println("Sensor nicht gefunden");
// Programm anhalten
while (1);
}
}
void loop()
{
// Variablen fuer die Farben
float rot, gruen, blau;
// Beleuchtungs-LED des Moduls einschalten
RGBSensor.setInterrupt(false);
delay(60);
// Daten erfassen
RGBSensor.getRGB(&rot, &gruen, &blau);
// Beleuchtungs-LED wieder ausschalten
RGBSensor.setInterrupt(true);
// Farbwerte anzeigen
Serial.print("rot:\t");
Serial.print(int(rot));
Serial.print("\tgruen:\t");
Serial.print(int(gruen));
Serial.print("\tblau:\t");
Serial.println(int(blau));
// Grenzwert, ab dem die entsprechende Farbe als erkannt gilt.
// Im Beispiel 100 - mit Hilfe der Anzeige im Seriellen Monitor anpassen.
if (rot > 100) Serial.println("roter Streifen");
if (gruen > 100) Serial.println("gruener Streifen");
if (blau > 100) Serial.println("blauer Streifen");
delay(500);
}Erweiterung: Farbwerte mit einer RGB-LED sichtbar machen
Sketch 2: Farbwerte mit einer RGB-LED sichtbar machen
#include "Adafruit_TCS34725.h"
/*
TCS34725_INTEGRATIONTIME
Laengere Zeiten erhoehen die Empfindlichkeit, besonders bei schwachem Licht.
Moegliche Werte: 2_4MS, 50MS, 101MS, 154MS, 700MS
-----
TCS34725_GAIN
Empfindlichkeit einstellen: 1X, 4X, 16X, 60X
*/
Adafruit_TCS34725 RGBSensor = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
// Pins der RGB-LED
int roteLED = 6;
int grueneLED = 5;
int blaueLED = 4;
void setup()
{
Serial.begin(9600);
delay(1000);
pinMode(roteLED, OUTPUT);
pinMode(grueneLED, OUTPUT);
pinMode(blaueLED, OUTPUT);
// Farbsensor starten
if (RGBSensor.begin())
{
Serial.println("Sensor gefunden!");
}
// Wenn der Sensor nicht gefunden wurde
else
{
Serial.println("Sensor nicht gefunden");
// Programm anhalten
while (1);
}
}
void loop()
{
// Variablen fuer die Farben
float rot, gruen, blau;
// Beleuchtungs-LED des Moduls einschalten
RGBSensor.setInterrupt(false);
delay(60);
// Daten erfassen
RGBSensor.getRGB(&rot, &gruen, &blau);
// Beleuchtungs-LED wieder ausschalten
RGBSensor.setInterrupt(true);
// Farbwerte anzeigen
Serial.print("rot:\t");
Serial.print(int(rot));
Serial.print("\tgruen:\t");
Serial.print(int(gruen));
Serial.print("\tblau:\t");
Serial.println(int(blau));
// Jeden Kanal einzeln schalten: ueber dem Grenzwert an, darunter aus.
// Grenzwert mit Hilfe der Anzeige im Seriellen Monitor anpassen.
if (rot > 100)
{
digitalWrite(roteLED, HIGH);
Serial.println("roter Streifen");
}
else digitalWrite(roteLED, LOW);
if (gruen > 100)
{
digitalWrite(grueneLED, HIGH);
Serial.println("gruener Streifen");
}
else digitalWrite(grueneLED, LOW);
if (blau > 100)
{
digitalWrite(blaueLED, HIGH);
Serial.println("blauer Streifen");
}
else digitalWrite(blaueLED, LOW);
delay(500);
}Calificar la guía