Hier habe ich mal das Programm getestet zur Farberkennung. Also die Farberkennung ist schon seeeehr abstrakt

Wenn ich die Werte die ausgelesen werden im Bildbearbeitungs Programm eingebe, kommen nur sehr weit entfernte Farben raus. Also weit entfernt von der Farbe die ich davor halte. Ich werde mal schauen ob man es mit einer bestimmten Lichtintensität dann doch etwas weniger weit entfernt von der Realität bekommen kann.
Also auf jeden Fall braucht man gutes Licht, und man braucht sich keine Illusionen machen, dass man in etwa passende Farben ausmachen kann. Ich hatte jetzt bei Rot einen deutlich erhöhten Rotwert, OK. Bei Blau einen deutlich erhöhten Blauwert, schön. Aber aus der Kombi aus den drei Farbwerten RGB einen Rückschluss auf die tatsächliche Farbe zu ziehen, das ist schon sehr otopisch

Aber ich werde die Tage mal bischen mit Licht spielen. Vielleicht bekommt man es ja doch etwas genauer hin.
Code: Alles auswählen
/****************************************************************
ColorSensor.ino
APDS-9960 RGB and Gesture Sensor
Shawn Hymel @ SparkFun Electronics
October 15, 2014
https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor
Testet die Farb- und Umgebungslichterkennungsfähigkeiten des
APDS-9960. Konfiguriert APDS-9960 über I2C und fragt den Sensor nach
Umgebungslicht und Farbstufen, die über die
serielle Konsole ausgelesen werden.
Hardware Connections:
WICHTIG: Das APDS-9960 kann nur 3,3V aufnehmen!
Arduino Pin APDS-9960 Board Function
3.3V VCC Power
GND GND Ground
A4 SDA I2C Data
A5 SCL I2C Clock
Ressourcen:
Wire.h und SparkFun_APDS-9960.h einschließen
Besonderheiten der Entwicklungsumgebung:
Geschrieben in Arduino 1.0.5
Getestet mit SparkFun Arduino Pro Mini 3.3V
Dieser Code ist Bierware; wenn du mich siehst (oder irgendeinen anderen SparkFun
Mitarbeiter) im Lokal, und Sie fanden unseren Code hilfreich, bitte
kauf uns eine Runde!
Wird unverändert verteilt; es wird keine gewährleistung gegeben.
****************************************************************/
#include <Wire.h>
#include <SparkFun_APDS9960.h>
// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
uint16_t ambient_light = 0;
uint16_t red_light = 0;
uint16_t green_light = 0;
uint16_t blue_light = 0;
void setup() {
// Initialize Serial port
Serial.begin(9600);
Serial.println();
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - ColorSensor"));
Serial.println(F("--------------------------------"));
// APDS-9960 initialisieren (I2C und Anfangswerte konfigurieren)
if ( apds.init() ) {
Serial.println(F("APDS-9960-Initialisierung abgeschlossen"));
} else {
Serial.println(F("Bei der APDS-9960-Initialisierung ist etwas schief gelaufen!"));
}
// Starten Sie den Lichtsensor APDS-9960 (keine Unterbrechungen) )
if ( apds.enableLightSensor(false) ) {
Serial.println(F("Lichtsensor läuft jetzt"));
} else {
Serial.println(F("Beim Initialisieren des Lichtsensors ist ein Fehler aufgetreten! "));
}
// Warten Sie, bis die Initialisierung und Kalibrierung abgeschlossen ist
delay(500);
}
void loop() {
// Lesen Sie die Lichtwerte (Umgebung, Rot, Grün, Blau)
if ( !apds.readAmbientLight(ambient_light) ||
!apds.readRedLight(red_light) ||
!apds.readGreenLight(green_light) ||
!apds.readBlueLight(blue_light) ) {
Serial.println("Fehler beim Lesen von Lichtwerten");
} else {
Serial.print("Ambient: ");
Serial.print(ambient_light);
Serial.print(" Red: ");
Serial.print(red_light);
Serial.print(" Green: ");
Serial.print(green_light);
Serial.print(" Blue: ");
Serial.println(blue_light);
}
// Warten Sie 1 Sekunde vor dem nächsten Lesen
delay(1000);
}