Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

I like this demonstration of an alternate input device by Paul Bishop. He built an Arduino light pen using an Arduino, television, and photoresistor. It works by displaying a series of flashing boxes on the screen, and using the photoresistor to measure if there was a change in the amount of light that it saw before and during the flash.

It seems like a fun way to play around with making your own input capture device, however I suspect that the flashing light might get a bit annoying after a while (unless it could be built into the thing you are interacting with?). It might also be interesting to try a binary search method to figure out where the pen is, which would let you check a much larger part of the screen than just a few buttons.




  1. migpics says:

    Could the flashing rate be increased beyond 30 times per second to make it look continuous and the arduino still be able to pick pu that flickering?

    1. Matt Mets says:

      Unfortunately, I don’t think it can, because you are limited by the speed of the display that you are using. Some fancy TVs and computers can do 60 or 120 Hz refresh rate, but I’m not sure how you can drive a signal to them that fast (and the poor Arduino might have a hard time keeping up!)

      1. Paul Bishop says:


        You are correct.. which is why a “drawing” type lightpen is nearly impossible to implement with newer screen designs like LCDs. Successive zone approximation (flashing boxes of varying sizes and location to calcuate location by estimation) is slightly faster, but the visual impact of strobing large screen areas makes the method unusable. The extremely slow update of LCDs when compared to CRT electron gun make it impossible to make the location strobing invisible to the user. However, it is somewhat workable to use it for “box selection” purposes, similar to the demonstration video.

        However, a game similar to “Duck Hunt” is possible: when the “gun” is fired, the screen is cleared to all black, then only the “duck” is flashed on. If the gun is aiming at the “duck” (the lighted square) then a brightness change is noted and a hit is registered. If there isn’t a brightness change with the flashing of the “duck”, then the gun wasn’t pointed at the proper location, and a “miss” is registered. Creation of the game then just becomes assembling some cute graphics and animation. With a monochrome low-res output (128×96 in this case), creative cartooning may be as much of a challenge as the code and circuitry.. possibly more!

        Incurable illness took me from the working world some time back.. you can take an engineer out of his job, but you can never take the job out of the engineer. Arduino takes me right back to being a tinkering, curious farm kid of thirty years ago. For a curious and creative mind on a shoestring for a budget, Arduino cannot be beat!

  2. Paul Bishop says:

    Thanks for featuring my little demo! Though not terribly useful as a “standard” drawing-type light pen, this design can be used to handle a short-list menu selection or a “Duck Hunt” type shooter game. With the addition of a small piece of tubing to act as barrel, and adjustment of the threshholds in code, the design can reliably locate as a “gun” from up to ten feet away.

    The code and circuit are very simple, go ahead and run with it.. let’s see what others come up with!