Blog Home

Use an LED matrix as a scanner

Arduino TeamMay 1st, 2019

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.

Boards:Uno
Categories:ArduinoFeatured

4 Responses to “Use an LED matrix as a scanner”

  1. Tegusek Says:

    This is so cool!

  2. marykinney Says:

    nice

  3. Meme_Master Says:

    WOW

  4. wuxiekeji Says:

    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.

Leave a Reply

You must be logged in with your Arduino account to post a comment.