int greenPin = 2; int bluePin = 3; int redPin = 4; int whiteBalancePin = 5; int blackBalancePin = 6; int sensingPin = 7; boolean whiteBalanceSet = false; boolean blackBalanceSet = false; int greenVal = 0; int blueVal = 0; int redVal = 0; int redLumens = 800; int greenLumens = 2000; int blueLumens = 900; int ledPinsArray[] = { redPin, greenPin, bluePin}; float colorValArray[] = { 0, 0, 0}; float whiteBalanceArray[] = { 0,0,0}; float blackBalanceArray[] = { 0,0,0}; void setup() { pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(redPin, OUTPUT); pinMode(whiteBalancePin, INPUT); pinMode(blackBalancePin, INPUT); pinMode(sensingPin, INPUT); Serial.begin(9600); } void loop() { checkWhiteBalance(); checkBlackBalance(); checkColorVals(); } void checkColorVals() { if(blackBalanceSet && whiteBalanceSet && digitalRead(sensingPin) == HIGH && digitalRead(whiteBalancePin == LOW) && digitalRead(blackBalancePin) == LOW) { for(int i=0;i<=2;i++) { digitalWrite(ledPinsArray[i], HIGH); delay(100); colorValArray[i] = analogRead(2); // colorValArray[i] -= blackBalanceArray[i]; colorValArray[i] = (colorValArray[i] - blackBalanceArray[i])/(whiteBalanceArray[i]-blackBalanceArray[i]) * 255; digitalWrite(ledPinsArray[i], LOW); delay(50); } printColorVals(); // delay(200); } } void checkBlackBalance() { if (digitalRead(blackBalancePin) == HIGH) { // Serial.println("checking black balance"); for(int i=0;i<=2;i++) { digitalWrite(ledPinsArray[i], HIGH); delay(100); blackBalanceArray[i] = analogRead(2); digitalWrite(ledPinsArray[i], LOW); delay(50); } blackBalanceSet = true; } } void checkWhiteBalance() { if (digitalRead(whiteBalancePin) == HIGH) { // Serial.println("checking white balance"); for(int i=0;i<=2;i++) { digitalWrite(ledPinsArray[i], HIGH); delay(100); whiteBalanceArray[i] = analogRead(2); digitalWrite(ledPinsArray[i], LOW); delay(50); } whiteBalanceSet = true; } } void printColorVals() { Serial.print("R"); Serial.println(colorValArray[0], DEC); Serial.print("G"); Serial.println(colorValArray[1], DEC); Serial.print("B"); Serial.println(colorValArray[2], DEC); }