Hi there! Today I will be talking about using a photocell with programming, But first we have to Bread board all the components into the right places.  do so like the photo below, or buy the Photocell kit from Aarons Robotics and read the manual in the package.


Here is what

How do Photocells Work?!

That is a very good question, Photocell consists of two special pieces of silicon joined together.
Pure silicon is naturally charged but if small amount of an impurity such as phosphorus is added, there are more free electron which make this a better conductor than pure silicon.
This is known as n-type(negative) silicon.
If a different impurity, such as boron, is added there is an absence of free electron. The absence of an electron is known as a hole and the silicon is known as p-type silicon.
When these two types of silicon are placed together it is called a p-n junction. An electric field is created between the two layers.
Sunlight is made up of a tiny packets of energy called photons. When photons are absorbed the energy causes electron to become free. They move to the negative layer and leave the junction to flow in an external circuit.

Step 1: programing

We can now start taking about how we program this unique tool to sense light!  Be sure you have the Arduino software downloaded on your computer! This can be found at :  http://arduino.cc/en/Main/Software

Next Upload this code given below

int photocellPin = 0; // the cell and 10K pulldown are connected to a0
    int photocellReading; // the analog reading from the sensor divider
    int LEDpin = 11; // connect Red LED to pin 11 (PWM pin) (this is not needed to use the sensor but if you have one laying around it could add a cool affect! This can be bought at your local Radio Shack.)
    int LEDbrightness; //
    void setup(void) {
    Serial.begin(9600);    // We'll send debugging information via the Serial monitor so if you can read it   without using a led

    void loop(void) {
    photocellReading = analogRead(photocellPin);
    Serial.print("Analog reading = ");
    Serial.println(photocellReading); // the raw analog reading
    // LED gets brighter the darker it is at the sensor
    // that means we have to -invert- the reading from 0-1023 back to 1023-0
    photocellReading = 1023 - photocellReading;    //now we have to map 0-1023 to 0-255 since thats the          range analogWrite uses
    LEDbrightness = map(photocellReading, 0, 1023, 0, 255);
    analogWrite(LEDpin, LEDbrightness);
thanks for the arduino tutorial, I think i'd be helpful if you talked a little more about what the code in step one does, maybe upload a video
Ok, well I can edit the code a little cuz after any // means I'm talking about what that line in the code does. hope this help i could also post this up there to tell them I'm trying to tell what part does what. I do not have a desk top camcorder.

About This Instructable


19 favorites


More by A.R.: Using a SR04 Building a Etcher swisher! Etching PCB's
Add instructable to: