Picture of Micro LASER Show with a CD Lens Mechanism
laser tag finished.jpg

This is the cheapest and easiest way to make a two-dimensional laser show projector.

It uses just one pivoting mirror, powered by the focusing mechanism from a CD or other optical drive.

They said it couldn't be done, but Ljudmila's skunkworks GRL research facility delivers anyway! ;) This design was first discovered in 2006 and sucessfuly made by several beginners at the Laser Tags workshop in 2007.

I hope this Instructable, my first, will help to spread it around and let all of you make, test and improve it!

Here shown using an Arduino for control, but you could hook some other signal into it easily, from a music player, a soundcard or some other electronic circuit.

Step 1: Gather materials and tools

Picture of Gather materials and tools
You will need:

  • a broken CD-ROM, DVD or other optical drive (you only need the lens focusing mechanism, so you get lots of other cool parts left over)
  • a LASER pointer of your choice (those small chinese ones will do fine too)
  • the smallest and thinnest mirror you can find. we used small round mirrors meant for making mosaics. (bill buxton recommended trying mylar.) you can also use the very small mirror found inside the optical assembly of a CD drive (under the lens, sitting on an angle)
  • a short piece of stiff wire (cut off leg of LEDs work for this)
  • some soft wire for signals
  • a stable housing - some kind of plastic box. bonus if it's transparent
  • signal source - I recommend an Arduino as it's easy to use and program

  • cross head screwdrivers, small and very small
  • soldering iron for electronics
  • wire cutters
  • glue gun (or other glue)
  • sharp pin for making a hole
  • pliers can come in handy
arnab3212 years ago
are the projections stable?
M-A-J2 years ago
Hi Please tell me the source code of the program in avr
Thanks for a great instructable!

I'm having problems identifying which cables control which axis - any tips on how to find this out? I'm debugging with setPos(x, 0) and setPos(0, y), and can manage to get a good clean vertical movement but the horizontal movement always has a small vertical movement as well.

Also, I wonder about the code line digitalWrite(8, HIGH); - doesn't one of the corresponding coils need to be ground/zero/LOW for this to work?
UncleMike4 years ago
the code is one run on line that wont auto format due to too many syntax errors.
Hi. Please, linefeed, change the code. I spent a bit of time fixing the code. Yours didn´t work because of the aclarations (//pins 10-11, e-t-c). They made the loops (obligatory and optional ones) as aclarations, and arduino´s software doesn´t permit code without the void loop. I fixed the code, and it´s here:

(Copyleft) 2006 by linefeed @ Ljudmila.org GRL */
  int t=0;
  int inc=4;
  int pause=1000;
  int x,y,x0,y0,x1,y1;
  int pt,phase,loopcnt;
  int nshapes=6;
  int shape=0;
  int shapes[20]={0,4,7,9,11,20, 24};
  int ptsx[50]={-250,250,250,-250,  -250,250,0,    -250,250,    -250,250,    -230, -230 ,-15, -11, 220, -17, -17, -15, 150,   -250,250,-250,250  };
  int ptsy[50]={-250,-250,250,250,  -250,-250,250, -250,250,    250,-250,    -220, 200,  200, -200, -200, -210, -210, -35, -40,    -250,-250,250,250  };
//  8,9 - vertical
// 10,11-horizontal
  void setup(void) {
    // initialize inputs/outputs
  void setPos(int x, int y) {
  if (x>=0) {
    } else {
    if (y>=0) {
    } else {
  void loop(void) {
  //next shape
  if (loopcnt>100) {
  //tick phase
  //next point
  if (phase>=100) {
    //loop points in shape
    if (pt>shapes[shape+1]) {
    //current coordinate
AndyGadget5 years ago
I had a similar idea, had a quick web Google for a laser display using a CDROM drive coil assembly and was directed straight back to good old Instructables. 
I've extracted the coil assembly and wired it up and can see it moves side to side and up and down under the influence of the coils. It's also centre biassed, so to get full range of movement you need to pass current through the coils both ways.
I can see you've used the pivoted rod at right angles to translate this into X and Y motion, but the mass of this will limit the speed.   Have you tried other ways of doing this?  (My initial idea is a mirror attached at a corner using flexible silicone rubber close to the assembly, then a small rod straight up in the plane of the lens, which will rock the mirror (X axis) or tilt it (Y axis) as the lens moves.)  This would be more compact then the rod design, but a lot more fiddly to make.  I'll report back (and probably post an Instructable) if I make progress with it. 
I was just wondering .. Isn't the lasers bad if its hit your eye ?
Any safety suggestions. (I've seen a video where a DVD burner laser burn though a balloon. I'd probably stay with the CD )
chimere6 years ago
I'm curious, just how fast do these CD lens assemblies move? Can they move with high enough frequency to project POV images, or did you need to use a long exposure to capture your images?
linefeed (author)  chimere6 years ago
i have not measured their resonant frequency (anybody have an estimate?) but they are fast enough to project simple shapes at pov speeds.

i used one recently with nice results on dark facades of metelkova and on the wall behind a dj at our local spring welcome festivities. it was packed with 8 nimh aa batteries and powering the laser pointer with the arduino's 5V. it lasted all night.
hubi7 years ago
If you use an old DVD Burner, one of the Diodes is red (~650nm) one is IR.
from an 8x Burner u can get 90mW from a 16x Burner u can get more than 200mW if properly cooled. Here]http://dreiling-kamen.net/hubidrei/html/dvd_laserdiode.html
is how I made it.
I found a german Site, where the same is done much easier without microcontroller and the mirror also comes from the Drive.
Sorry for my bad english
It would be alright if i could read it Time to start learning german :[
Oh, Thanks It wasn't as interesting as I thought it would be...
maybe you willtry google translation or if you use fiefox, there are lots of tranlation addons available, like quick translation,translation panel ...
LukeKuke7 hubi7 years ago
Sorry for my bad english?

Your english is better than some of the people on this site who's first language is english.

No need to apologise, and thanks for the link.
linefeed (author)  hubi7 years ago
Thanks for the link hubi, was not aware of that site. This is indeed very similar, with a somewhat different way to mount the mirror. I'll add a note about using the mirror salvaged from inside the optical assembly.

I agree that using a DVD laser diode turned into a pointer for this would be the coolest. But that's a more difficult project in its own, and also well documented on Instructables already.
Sandisk1duo7 years ago
Now if only you could use the laser inside the CD lens to do the show... Great instructable by the way!
Some drives (DVD? I forget) have UV lasers instead of visible light. Actually, I would like to see the whole thing mounted inside a box (laser-pointer and all), with a window (or hole) for the laser to shine out of, then you could leave it unobtrusively on a wall . Excellent project all the same.
Ian01 Kiteman7 years ago
CD drives use IR, DVD drives use red, and Blu-Ray drives use blue. They are very much too powerful for this though, unless you want to etch your wall.
bluray drives use 405nm violet lasers and it would only etch the wall if you took it from a burner.
DVD drive or burner? Regular ol' CD players have an infra-red laser, i checked this by poping a CD into a CD player, taking the cover off, and using night vision an a camcorder.
IR or UV, either way, neither are any use for a light show.
if yo u have a cellphone camera, or reglar camera, you can see it
Yeh, but when you're trying to make a show, it's not much good if people can only watch it via a video.
god point
kyotee6 years ago
Im having a go at doing this myself but using only audio signals to drive it, so far no results as i need software that can generate digital signals through audio and with individual left and right "speaker" control. System of a down makes large scribbles!
linefeed (author)  kyotee6 years ago
wow first builder! great to read this kyotee. please definitely post some pictures!

you could try using audacity to make some 2 channel custom waveform sound... it's easy to use! read manual

and for real-time control something like pure data? it's great fun playing with it, just don't be intimidated by its looks. read manual

i see you needed an amplifier, how did you hook that up?
kyotee linefeed6 years ago
Im using a TDA7386 car radio amplifier that i got out of my busted headunit where i also salvaged the lens mechanism. Its not attached yet and im kinda busy for next few days but should be up and working within a week or so, i will definitely keep you updated with the results once i have some
kyotee kyotee6 years ago
Just downloaded audacity. it is exactly what i needed. Thanks a bunch. results to follow
kyotee kyotee6 years ago
Have got lens mechanism moving in the x and so far theoretical y direction, it seems that when the mirror pivots in the y dimension it is somehow twisted back to the x axis. i think i need 2 lens mechanisms, one for x and one for y and i think this will be much better and with the setup im using it will not be hard to make this happen. i was too impatient to get my TDA7386 amp wired up so im using a sony xplod 222W lol a bit overkill but it does the job. (while i was waiting for picture to upload amp decided it was way too overkill(probably due to being a 4ohm rated amp and the coils on the mechanism wont be 4ohms i think)and has shutdown into protect mode!)
ravebot6 years ago
viacin6 years ago
wow... dude...wayyy to expensive for the board. I mean, if this was a robot..sure, but for this..c'mon. you can get the same result by gluing the mirror on top of a speaker.
mycroftxxx7 years ago
I am a little confused by this instructable. Will it allow you to project an arbitrary vector image?
linefeed (author)  mycroftxxx7 years ago
In principle, yes, it's a 2D vector display. so far there is a low ceiling to the complexity of the shape. with the current arduino code the shapes are coded as arrays of integers. they are displayed in sequence on an endless loop. you do get great random variations and throbbing of the shape for free. :) the initial application we thought of was light graffiti. but it should be possible to create a basic oscilloscope, vector clock or even a game with some clever programming.
vince_nys7 years ago
Great tutorial, def. gonne try it