// Color sensor pins #define S0 10 #define S1 4 #define S2 2 #define S3 1 #define sensorOut 0 #define LED 13 // Calibration values from the test run (5 cm distance to the sheet) // Remember to change these values to your own results when you're done with the calibration int redMin = 19; //min value from white sheet int redMax = 57; //max value from black sheet int greenMin = 24; //min value from white sheet int greenMax = 71; //max value from black sheet int blueMin = 20; //min value from white sheet int blueMax = 65; //max value from black sheet // Variables for Color Pulse Width Measurements int redPW = 0; int greenPW = 0; int bluePW = 0; // Variables for final color values int redValue; int greenValue; int blueValue; //-------------------------COLOR SENSOR FUNCTIONS----------------------- // Function to read Red Pulse Widths int getRedPW() { // Set sensor to read Red only digitalWrite(S2,LOW); digitalWrite(S3,LOW); // Define integer to represent Pulse Width int PW; // Read the output Pulse Width PW = pulseIn(sensorOut, LOW); // Return the value return PW; } // Function to read Green Pulse Widths int getGreenPW() { // Set sensor to read Green only digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); // Define integer to represent Pulse Width int PW; // Read the output Pulse Width PW = pulseIn(sensorOut, LOW); // Return the value return PW; } // Function to read Blue Pulse Widths int getBluePW() { // Set sensor to read Blue only digitalWrite(S2,LOW); digitalWrite(S3,HIGH); // Define integer to represent Pulse Width int PW; // Read the output Pulse Width PW = pulseIn(sensorOut, LOW); // Return the value return PW; } void setup() { pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(LED, OUTPUT); pinMode(sensorOut, INPUT); digitalWrite(S0,HIGH); digitalWrite(S1,LOW); analogWrite(LED, HIGH); //Turn the built-in LEDs on manually if they're not automatic. } void loop() { // Read Red value redPW = getRedPW(); redValue = map(redPW, redMin, redMax, 255, 0); delay(50); // Read Green value greenPW = getGreenPW(); greenValue = map(greenPW, greenMin, greenMax, 255, 0); delay(50); // Read Blue value bluePW = getBluePW(); blueValue = map(bluePW, blueMin, blueMax, 255, 0); delay(50); }