How do I detect light with an LED?
It is possible to use a led as a light sensor as well as a light emitter. Essentially a reverse biased led will act as a capacititor, if it is then disconnected the charge will drain at a rate roughly proportional to the light hitting it.
We can use this with a microcontroller - utilising the multi state ability of the ports.
The resistor should be about 100 ohms, I have only used this with red leds - it may work with others.
Use the following sequence:
Set Port A output high
set Port B output low // this makes sure the led is discharged
set Port A output low
set Port B output high // reverse bias and charge
set Port B as input // Port B is high impedance input
time how long for Port B to read low
The length of time will be dependant on the amount of light hitting the led.
There are several examples of this on the web - I will list them here as I find them again:
Multi-Touch Sensing through LED Matrix Displays - very cool video
Here is a good video describing how LEDs can be used as a light sensor http://www.youtube.com/watch?v=VZUvoLDlMS0 Also Forest M.Mims III has wrote about simple projects using LEDs as touch sensors as well.
Also, I have read that SMD LEDs work better as light sensors than through hole LEDs...
Here is a circuit that uses a LED to detect light from an educational kit :
LED 0 allows a very small , light-influenced current to pass through because its polarity is reversed.Make sure it is green , yellow or transparent or it may not work (red). The transistors amplify this current just enough to drive a normal polarized LED (LED 1).You can adjust the sensibility by adding more transistors , thus having a greater amplification , responding to a lower illumination level.
This site: http://www.users.waitrose.com/~robinjames/LED_as_light_sensor/LED_as_light_sensor.html shows how to measure light levels using an LED and an opamp, to give a voltage proportional to the light level. It gives a wide range of readings and works from complete darkness to full sunlight. It can be used to feed the ADC of a microcontroller such as an Arduino.
Photocells are a dead simple way to detect light. It's resistance varies proportionally to the amount of light shining on it.
LadyAda has a very nice write-up on photocells including Arduino implementation: http://www.ladyada.net/learn/sensors/cds.html.