Color Changing Light

The purpose of this project is to make a light that when placed on a certain colored surface, lights up to that color.

Ex. If the light is placed on a blue surface, the LED on top will turn blue

When the code runs the arduino turns each light on in the multi-colored LED in a cycle. It reflects on the surface to help the photoresistor figure out what color it is on. It does this because the color that the light is on, lets go with blue, when the light is on a blue paper and it goes through each color the blue LED reflects the most light off of the blue surface then the red and green colors. Then the photoresistor takes the highest number value and send that to the other LED on top of the light to turn it on. This process repeats continuosley to keep the light on top lite to the color of the surface it is on.

int redPin = 8; //sets variables for different LEDs

int greenPin = 7;

int bluePin = 6;

int redPin2 = 5;

int greenPin2 = 4;

int bluePin2 = 3;

int potPin = 5; //sets variable for photoresistor

int val = 0; //variable for value read from photoresistor

int redVal = 0;

int greenVal = 0;

int blueVal = 0;

void setup()


pinMode(redPin, OUTPUT); //makes each LED an OUTPUT

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

pinMode(redPin2, OUTPUT);

pinMode(greenPin2, OUTPUT);

pinMode(bluePin2, OUTPUT);



void loop()


digitalWrite(redPin, HIGH); //turns LED on


val = analogRead(potPin); //tells arduino to read the value from the photoresistor

digitalWrite(redPin, LOW); //turns LED off

Serial.println(val); //writes val

redVal=map(val, 800, 990, 0, 255); //take the value from between the first set of number and changes it to a number between 0 and 255 to set the color

digitalWrite(greenPin, HIGH);


val = analogRead(potPin);

digitalWrite(greenPin, LOW);


greenVal=map(val, 800, 990, 0, 255);

digitalWrite(bluePin, HIGH);


val = analogRead(potPin);

digitalWrite(bluePin, LOW);


blueVal=map(val, 800, 990, 0, 255);

analogWrite(redPin2, redVal); //tells the second LED to turn on to a certain value

analogWrite(greenPin2, greenVal);

analogWrite(bluePin2, blueVal);