Use an LED matrix as a scanner
Consider that a digital camera uses an array of sensors to capture light from an object. Maker Marcio T, however, decided to turn this idea on its head and instead utilize an array of lights that are detected by a single sensor.
The way it works is that as each LED in a 32×32 matrix illuminates, a phototransistor picks up light if the path is clear or sees no change if the path is blocked. So when you put an object on the matrix, the sensor is able to get an accurate picture of it, enabling its Arduino Uno controller to then generate its silhouette.
It’s a simple yet very clever hack, and if you pay close attention in the video below, you can see the lights scanning from the bottom to top before the image is produced.
Ordinary digital cameras work by using a large array of light sensors to capture light as it is reflected from an object. In this experiment, I wanted to see whether I could build a backwards camera: instead of having an array of light sensors, I have just a single sensor; but I control each of 1,024 individual light sources in a 32 x 32 LED matrix.
The way it works is that the Arduino illuminates one LED at a time, while using the analog input to monitor changes in the light sensor. This allows the Arduino to test whether the sensor can “see” a particular LED. This process is repeated for each of the 1,024 individual LEDs rapidly to generate a map of visible pixels.
If an object is placed between the LED matrix and the sensor, the Arduino is able to capture the silhouette of that object, which is lit up as a “shadow” once the capture is complete.
May 3rd, 2019 at 10:38:12
This is so cool!
May 6th, 2019 at 07:23:51
May 6th, 2019 at 16:28:19
May 6th, 2019 at 21:31:33
Cool project. I *highly* *highly* recommend you read more into the subject of compressed sensing. Instead of raster scanning pixel by pixel, you can scan in another basis, e.g. discrete cosine transform (DCT) basis or wavelet basis. Basically you turn on groups of LEDs at a time instead of a single LED. In some sense, instead of reverse imaging a bitmap, you are reverse imaging a JPEG and you can produce an image much faster, with the assumption that your object being imaged is a fairly normal real-world object, which it usually is.