// https://www.arduino.cc/en/Reference/ArduinoAPDS9960 #include void setup() { // put your setup code here, to run once: // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); while (!Serial); // blocks the program untill opening of the Serial Monitor. if (!APDS.begin()) { Serial.println("Failed to start ADPS9960 gesture sensor!"); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH voltage level) while (1); } Serial.println(" R / G / B / a / color"); } void loop() { // put your main code here, to run repeatedly: int r, g, b, a; float R, G, B; // check if a color reading is available if (APDS.colorAvailable()) { // read the color APDS.readColor(r, g, b, a); if (a>500) { // && a<4000 R = float(r)/a; G = float(g)/a; B = float(b)/a; Serial.print(R, 3); Serial.print(" / "); Serial.print(G, 3); Serial.print(" / "); Serial.print(B, 3); Serial.print(" / "); Serial.print(a); Serial.print(" / "); if ( abs(R-0.84)<0.03 && abs(G-0.09)<0.03 && abs(B-0.16)<0.03) { Serial.print("red "); } if ( abs(R-0.70)<0.03 && abs(G-0.19)<0.03 && abs(B-0.17)<0.03) { Serial.print("orange "); } if ( abs(R-0.47)<0.03 && abs(G-0.38)<0.03 && abs(B-0.18)<0.03) { Serial.print("yellow "); } if ( abs(R-0.07)<0.03 && abs(G-0.49)<0.03 && abs(B-0.50)<0.03) { Serial.print("green "); } if ( abs(R-0.15)<0.03 && abs(G-0.35)<0.03 && abs(B-0.54)<0.03) { Serial.print("blue "); } Serial.println(); } } delay(1000); }