Instructables
We are a generation that love sound and light – can’t do without them really. Our most preferred time of day is night, or what we would call evening. We are particularly well acquainted with technology; doesn’t hurt these days. Our prerequisite for everything is that it be ‘cool’. Put it all together and in a stroke of brilliance, and a little help from our friend the internet, we have the ideal solution – a laser harp.

A laser harp, what on earth is that? Sounds kind of fancy doesn’t it? Well, it is basically what it says it is. The laser harp is an electronic instrument where a motor, a light sensor, a microprocessor Arduino, and, I’m sure you’ve guessed, a laser collaborate to produce beams, each representing a note (we will elaborate for those who care to read on). This harp though doesn’t have a frame: its strings stretch out infinitely into space – we know no boundaries.

Our inspiration was a video we had watched online and found rather fascinating. Apart from the fact that the prospect of creating it without too much expenditure, mental or monetary, was exciting, it seemed a project providing scope for learning in different areas, especially since we wanted to present it as a complete product. Part research, part reverse engineering led us to figure out its functioning. Admittedly, we have not contributed any addition to the original creation, but to achieve it was in itself gratifying. And there’s always room for originality and improvement in the future. 

If you like our instructable please vote for it at the top  right corner of the page!

For making this laser harp you will require basic soldering skills, and some experience working with the arduino.

Word of caution: Lasers are very harmful for the eyes, make sure you wear appropriate eye protection.

Our Video will be ready in another 12 hours! Do come back and check it out!


Here's the link to the video that inspired us :
 
Remove these adsRemove these ads by Signing Up
1-40 of 126Next »
Stormrage10 months ago
One of my dreams was to have a laser harp. The only thing I need now is to go buy some 2n222 ULN2003 and, uhm my question was: What kind of/ speed/ steps, steper motor can I use? Hacking some old printer or something, any idea will be appreciated :)
Thx, and btw, one of the greatest and really simplest instructable for a complicated stuff that everyone could be amazed with :) Keep it up !
Pushan Panda (author)  Stormrage10 months ago
:)
The motor ive used is actually salvaged from some old electronics, any kind of stepper will do the job, you might need to modify the code a bit. I would be happy to help, just send me a message.
I was actually going to rewrite the code to work directly via usb, not through MIDI... Any ideas about that?
Well, the problem isn't in the code really, now the problem is that I can't find ULN2003 here... Do you know anything compatible to that maybe? :)

also it would be cool if there is a way to get 3 lasers and make em switch colors hahaha just sayin :)
and, perhaps a positioning picture (where the circuit is, LDR and stuff would be good, cos I'm really planing to do a "Laser Harp Shield" for this one :)
jonnyboy32310 months ago
This is awesome, great instructable!!! If you plan on only using it with the computer, and don't need the midi out jack, couldn't you theoretically use only the arduino, and scrap the usb/midi converter cable? There are loads of arduino projects out there that output midi via the arduino's usb cable (and maybe some software on the computer side too).
You could even make it wireless :) http://www.ladyada.net/make/xbee/midibee.html
Pushan Panda (author)  jonnyboy32310 months ago
Yes, i just checked it out, and it isnt too hard too send MIDI signals over USB!
That's a wonderful idea! Thank you!
origamimavin10 months ago
Great 'ible! I have most of these parts laying around, and have been looking for something to do with some spare laser diodes and steppers. I saw this (or one just like it) on Hack a Day recently, and though 'How cool would it be to make one of these.' Awesome, thanks!
Pushan Panda (author)  origamimavin10 months ago
Thank you! Do put up some pics after you are done!
starphire10 months ago
I love how you've managed to simplify the hardware necessary for a laser harp. Well done! Since I already have most of these materials lying about, it looks like a fun project for an idle weekend.
I'm also curious how you would go about detecting the height at which a player was cutting the beam in an enhanced version of this instrument-care to share your thoughts? I would love to add that function.
Pushan Panda (author)  starphire10 months ago
Thank you! I would use an ultrasonic sensor to read the distance of the players hand, which in turn would control the pitch or volume of the midi notes.
nanaverm10 months ago
Wow! This is like a visible version of a theremin, and it sounds better, too.
Pushan Panda (author)  nanaverm10 months ago
:) That's exactly what i thought i when first saw it!
22696789773 days ago

Are you connect the MIDI to your computer to play the music or use the digital

Instrument ? i only have a computer. can i play it by my computer? thanks!

22696789774 days ago

i‘d like to make this! i like it!

22696789774 days ago

i‘d like to make this! i like it!

So... So... So..... Great Project...... But I am still not getting about where LDR is mounted so that it can detect every ray.... Please let me know where to put the LDR.... Thank You.

DanieleV2 months ago

Mine doesn't send the midi out... I mean, midi cable's in led is blinking but i cannot hear any sound from FL Studio...

DARKHOURS2 months ago

Great project I would like to make sure its a 220 ohm you are using on the midi jack as another site on here instructable Send and Receive MIDI with Arduino say use a 2200 ohm I just want to be sure before hooking up to my computer .

Thanks

jbennett382 months ago

I am hunting for a laser for this project. Unfortunately, for my application, I don't think a simple stylus laser will be enough. I'm trying to read up about lasers but I'm wondering if anyone can provide any feedback as to what they have found that works?

LeelaKrishna made it!3 months ago

I made my own code for this (Using stepper motor library and its much more efficient) and it runs fine. It also includes a start sequence where the laser goes back and forth slowly getting faster and faster until its a line and then it splits apart into the 13 different beams which include all the notes of the middle octave:

#include <Stepper.h>

const int stepsPerRevolution = 400; // change this to fit the number of steps per revolution

// for your motor

// initialize the stepper library on pins 8 through 11:

Stepper beamsplitter(stepsPerRevolution, 8, 9, 10, 11);

int LaserState = LOW; // The variable that stores the state of the laser beam.

int sensor = 8 ; // Change this value to calibrate your harp's sensor

int delaylaser = 2000; // If you increase this, the laser will be brighter, but the harp will be less fluid

int motorspeed = 100; // This variable affects the speed, and fluidity of the harp.

int stepsize = 2; //size between beams

int LaserPin = 7; // Tell the arduino that the laser is on pin 7

int startupspeed = 3;

int pos = 0; // position of the laser

int beams = 12; // number of beams

int pitch;

void setup() {

pinMode(LaserPin, OUTPUT); // Setup for laser.

pinMode(6, OUTPUT); // Setup for status led.

digitalWrite(LaserPin, HIGH);

delay(1500);

//start sequence

beamsplitter.setSpeed(startupspeed);

beamsplitter.step((-beams * stepsize / 2)-1);

for (int x = 1; x < 60; x++) {

if (x<30) {

startupspeed = 103 - (100/pow(x, 1.0/4.5));

}

if (x>=30) {

startupspeed = 103 - (100/pow(x, 1.0/1.0));

}

beamsplitter.setSpeed(startupspeed);

for (int pos = beams; pos > 0; pos--) { // turn in other direction

beamsplitter.step(stepsize); // direction

}

for (int pos = 0; pos < beams; pos++) { // turn in other direction

beamsplitter.step(-stepsize); // direction

}

}

beamsplitter.setSpeed(motorspeed);

Serial.begin(31250);

}

void loop() {

for (pos = 1; pos < beams; pos++) { // turn in first direction

beamsplitter.step(stepsize); // switch position

//delayMicroseconds(delaymotor);

digitalWrite(LaserPin, HIGH); // turn on laser

delayMicroseconds(delaylaser / 2);

if ( (analogRead(0) > sensor ))\ // If the sensor gets a signalx

{

digitalWrite(6, HIGH); // Switch on status led.

noteOn(); // Play note 3

}

else if (analogRead(0) < sensor ) // If the sensor does not get a signal:

{

digitalWrite(6, LOW); // Switch off the status led.

noteOff(); // Stop playing note 2.

}

delayMicroseconds(delaylaser / 2);

digitalWrite(LaserPin, LOW); // Turn off the Laser.

}

for (pos = beams; pos > 1; pos--) { // turn in other direction

beamsplitter.step(-stepsize); // direction

//delayMicroseconds(delaymotor);

digitalWrite(LaserPin, HIGH); // turn on laser

delayMicroseconds(delaylaser / 2);

if ( (analogRead(0) > sensor )) // If the sensor gets a signal

{

digitalWrite(6, HIGH); // Switch on status led.

noteOn(); // Play note 3

}

else if (analogRead(0) < sensor ) // If the sensor does not get a signal:

{

digitalWrite(6, LOW); // Switch off the status led.

noteOff(); // Stop playing note 2.

}

delayMicroseconds(delaylaser / 2);

digitalWrite(LaserPin, LOW); // Turn off the Laser.

}

}

void noteOn() // Function to play the notes

{

pitch = 60 - (beams + 1) / 2 + pos;

Serial.write(0x90);

Serial.write("0x" + pitch);

Serial.write(0x7f);

}

void noteOff() // Function to play the notes

{

pitch = 59 + pos;

Serial.write(0x90);

Serial.write("0x" + pitch);

Serial.write(0x00);

}

IMAG1440.jpgIMAG1441.jpgIMAG1442.jpgVIDEO0196_01_0000019432.jpg

I used a 100mw laser and took the picture in the bathroom after filling it with steam from the shower.

I compiled the code and found this stray "\" on this line:

if ( (analogRead(0) > sensor ))\ // If the sensor gets a signalx

you're right but i don't think it really affected the code.

Yep! It doesn't make any difference at all.

I am considering using the L298N H-Bridge IC to drive the stepper mounted on a heatsink. Do you think that an EasyDriver Board could be used instead? I have a couple of them laying around.

Also, if you look at my picture, you see that my "strings" are infact pretty wide and rather thick vs being like a single line. This might be because i'm using a crappy transistor for the laser. Also the beam is ever so slightly off from the position its at when it turns on while it goes in one direction vs the other. for example: beam 3 when the motor is going from right to left could be about .5 cm away from where it is when its going from left to right, these beams do overlap mostly but you can still notice the flickering pretty well. I may just need to replace the transistor. Something else i might try soon is not have the the laser turn on going the other direction. ex: replace the current void loop w/

void loop() {

for (pos = 1; pos < beams; pos++) { // turn in first direction

beamsplitter.step(stepsize); // switch position

//delayMicroseconds(delaymotor);

digitalWrite(LaserPin, HIGH); // turn on laser

delayMicroseconds(delaylaser / 2);

if ( (analogRead(0) > sensor ))\ // If the sensor gets a signalx

{

digitalWrite(6, HIGH); // Switch on status led.

noteOn(); // Play note 3

}

else if (analogRead(0) < sensor ) // If the sensor does not get a signal:

{

digitalWrite(6, LOW); // Switch off the status led.

noteOff(); // Stop playing note 2.

}

delayMicroseconds(delaylaser / 2);

digitalWrite(LaserPin, LOW); // Turn off the Laser.

}

beamsplitter.step(beams*stepsize);

}

salexandridis3 months ago

So... I have tried using various stepper motors but nothing seems to work. Nothing works as it is supposed to. I thought that the problem might have been the motor, but I have recently purchased a NEMA 17 and guess what... it would just rotate uncontrollably. I attached a small piece of tape to observe whether its movement made any sense, but it didn't. There was no pattern. Needless to say, when I attached the mirror and pointed the laser on it, my room turned into a disco! The laser was reflected everywhere. It didn't even form single dots; only blurry lines. Also, the IC got EXTREMELY hot (I bet it would start to smoke, if I had left it plugged in for any longer).

Anyway... It seems that the author of this Instructable is reluctant to help sorting this issue out. Other people have the same problem, as well, but they got no answer. Even I haven't got any assistance when I initially posted a commented on this Instructable presenting the issue. So, if anyone else has succeeded in resolving this problem or has any idea about what might be wrong, please post an answer to this comment.

Thank you in advance, salexandridis

PS.: I don't mean to be offensive to the author and this might be just a misunderstanding, but me and other users have invested some money on this project.

I have gotten it to work by using the stepper motor library, check out my comment. I used a .9 degree stepper motor and had it go 2 steps for each beam because they were too close else how. I like the way it turned out. My stepper motor was actually bipolar so i used an h bridge instead of the uln2003

DarkTherapy4 months ago

Using the "Hairless MIDI <-> Serial Bridge": http://projectgus.github.io/hairless-midiserial/

You can bypass the whole midi hardware setup for this project, and swap it for simple serial, or even Bluetooth straight from the Arduino to PC.

Hello Pushan! Awesome instructable. I'm a bit confused. i would be please if you could help. What is the wiring from the LDR to A0 through the 5K trimpot? I cannot read the fritzing diagram well. Thanks :)

pridmoremd4 months ago

This indestructible does not work. I have tried to do this for over a month. DOES NOT WORK. Great idea behind it.

tomilofano4 months ago

Hi ! Nice Project! What are the technical specifications of the stepper motor??

http://articulo.mercadolibre.com.ar/MLA-506797775-nema17-motor-paso-a-paso-impresora-3d-cnc-_JM#questionText is this good?

Thanks !

pattycream1014 months ago

Hi,

I'm having trouble creating the separate beams from my laser. I'm using a 150mW green laser and a 7.5deg/step stepper motor. I have tried tweaking the delay times and laser strength but it hasn't been working.

Also, does anyone know of a free software I could use?

Jbuginas10 months ago
I'm using a 5V Stepper Motor 28BYJ-48 with uln2003 wired as per your great instructable, but it's not swinging far enough. Also, the beam is not visible using a 50 MW laser after it hits the mirror.

Are there any ways to tweak the motor movement part of the sketch  to swing further per step?

I've tweaked the motor and laser delay variables, but can't figure out what controls the distance of the steps. I think it may be a difference in stepper specifications/angles. Steps per rotation, etc. 

Any hints as to what kind of mirror to  shop for and where?

has anyone modified this to use the Arduino stepper library?

I'm excited to have time to build this now, it is a great project.

Try scrapping one from an old flatbed scanner, thats what i did and it seems to work perfectly...

jboorom Jbuginas9 months ago
Was anyone able to get this to work using the 5V Stepper Motor 28BYJ-48? And if so could you please share any code or wiring changes that were made?

Did you hear back about using this stepper? Im trying to bulid it myself and it just vibrates...

kiscool Jbuginas6 months ago
Hi,
For a harp, i think more power will solve your problem. I read 200mW is the minimum. I use a 500mW and work great during stepper moves. About the stepper, i will replace it with cheap galvos trop eBay.
ferdinand00226 months ago

Can i use a 28BYJ-48 stepper motor for the harp???There are commments saying that it cannot work fast enough to look as continuous beams.Also Can i see the beams if i use a 50mw 532nm Laser???????

Please reply.I am at the brim of making one harp...

1-40 of 126Next »