Picture of Arduino Laser Tripwire
The Arduino is great, you can make it do pretty much anything you want.

I wanted a tripwire. This is just the circuit and the code, you can use it for quite a few things, like a trigger for a camera, or you could make it shut down your computer if someone crosses it.

When I have the time, I want to hook it up to an electric airsoft gun with a relay and have it shoot you when you break the beam. I suppose I'll add to the Instructable when that happens.

So let's start!
Remove these adsRemove these ads by Signing Up

Step 1: Components Needed

Picture of Components Needed
This is what you need for this project:

-10k Resistor
-Photo resistor (Practically any value will work, the program will just need to be changed slightly)
-Laser Pointer
-Jumper Cables
-Alligator clips

Step 2: Circuit

Picture of Circuit
Below is a picture of the circuit.

Connect one leg of the photoresistor to Analog Input 0, and the other leg to +5v. Then, take the 10K resistor and connect one leg to GND (ground) and the other to Analog Input 0.

Also, I wired an LED to Digital I/O pin 13 to show when the laser beam is broken.

Step 3: The laser pointer

Picture of The laser pointer
To control the laser pointer, I did this:

1) Remove the end cap and take out the batteries.
2) Inside there should be a spring, connect one of the alligator clips to this spring.
3) My laser pointer (and all of the others I have seen) have a completed circuit when the end cap is on, so I connected the other alligator clip to the bit of metal on the inside of the laser pointer.
4) Connect one of the alligator clips to GND, and the other to pin 4 (or any pin, so that you can control the laser).
5) Lastly, use masking tape to tape down the button so the laser pointer is always on.
1-40 of 77Next »
SydneyH22 days ago

is there a way to set this so it counts every time the lazer is passed through?

Nidhal Yousuf3 months ago

can it be done on arduino uno?pls i need urgent answers

Hello, nice project. I just want to ask, if how can I integrate this one with a camera (webcam). When the laser is tripped.. It will take a photo and upload it directly. Need help.
kasisnu1 year ago
Hello. This worked great. I used it as a base and made the laser do a very basic strobe. I reduced the delay and at this point the strobe-effect isn't even visible. 

int flag=0;

void setup() {
pinMode(4, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, OUTPUT);


int checkStatus()
   if(analogRead(0) < 25)
      digitalWrite(13,HIGH);    // Used pin 13 to debug. Not required for the final make. All references to pin 13 can be removed.
      return 1;          
   }                   // Light not found(:D)
      return 0;          
   }                   // Light reaches uninterrupted
void setAlarm()
    digitalWrite(2,HIGH);            // pin 2 is used to show when a breach occurs.

void loop(){
     delay(5);                            // This is to give the resistor a little time to react. You might not need this.
     delay(10);                                        //change delay here
     delay(10);                                       // and here to get a custom strobe

Thank You @Login258!
FlipFlop2 years ago
I think this is not good enough for security proposes unless the laser is modulated and the receiver knows the modulation frequency.
thanks worked great!

cclick12 years ago
I looking to do something like this for a project with 6 different lasers to trigger 6 different sounds from a wave or MP3 shield. Is it just the software I need to tweak or totally redo the hardware?
lhakim23 years ago
helo. i would like to request the circuit schematics. email me at luqmansemidin@gmail.com . thanks in advance :)
R. Butch3 years ago
Would this work with a variable light resistor instead of the photo resistor. (They might even be he same thing, I'm new to this type of thing).
hill5 years ago
 hey there thanx for this awesome tut but when i try to run the sketch in arduino its says "error: redefinition of 'void setup()'

and wont run

please help ?

Archive555 hill5 years ago

If you just copy and paste the code has there, it won't work.

void setup() {
pinMode(4, OUTPUT);
pinMode(13, OUTPUT);

void loop(){
digitalWrite(4, HIGH);
if(analogRead(0) < 750){
digitalWrite(13, HIGH);
} else{
digitalWrite(13, LOW);

void setup() {
pinMode(4, OUTPUT);

void loop(){
digitalWrite(4, HIGH);

Those two seperate sections of code need to be combined, as thse are both programs in their own right. From memory it should be something similar to this:

void setup() {
pinMode(4, OUTPUT);
pinMode(13, OUTPUT);

void loop(){
digitalWrite(4, HIGH);
if(analogRead(0) < 750){
digitalWrite(13, HIGH);
} else{
digitalWrite(13, LOW);

Please not though that each of those segments of code were designed for a seperate task; one to simply trigger an LED when the beam is broken, the other to send data from the LDR to the computer so that Processing may be used. The combined code does both of these tasks, although you pobably don't need the serial transfer section if you had an error like that that you couldn't fix. Most of the people who will want to try this will be content with the first segment of code; that is, just turn on an LED or similar device when the beam is broken. The second piece of code is for more advanced users who wish to create a monitoring program in Processing (probably not you).

Hope this helped.

Hi, this sounds great and perhaps just what I'm looking for. I'm doing a project at university using Arduino and Processing and want to use a camera triggered by motion to produce an effect like the one shown below (by Magritte).
What I want to achieve is to have a computer screen using the mirror function in Processing and camera that is triggered by a person entering the space. Ideally the camera should track the person so that they can never see their own face in the mirror but that might be a bit ambitious for my skils / knowledge level at present.

Thanks in anticipation,

hey you should check out the website http://projectsentrygun.rudolphlabs.com/
from the motion and tracking thing. I bet you could modify his code for what your wanting to do.
Hi! This is a wicked LASER project. Actually you can make something very useful this circuit. You can make a LASER counter and use it for counting people or objects on a conveyor! And you don't even require an Arduino for it. There is a step by step guide on how to make a LASER trip wire counter in this site:


cpoplawski3 years ago
Can someone add in the ability for it to tweet when the alarm gets tripped? That would make it sick!
VrIgHtEr5 years ago
it can be modified to be kind of self calibrating. Just a software thing xD. Turn on the laser, read the value, turn off the laser and read the value again, choose a threshold somewhere in between the two values, turn the laser back on and start the main loop
Another common technique is to do this continuously - deliberately strobe the laser (possibly so fast that PoV makes it look continuous) and alarm when you can no longer "see" your strobing. Then day/night variations, lights on/off, and even people waving torches around won't affect it.
I love the idea, I'm breaking out the old laser pointer now! :)
iEdd NoseyNick4 years ago
More importantly, people waving a laser around won't affect it. You can't simply hold a laser pointer on the LDR as you walk through the beam.

You're onto a very smart idea to make it frequency dependent. Then there would be a good reason to use the Arduino. (The project as it is can be done with a transistor, trimpot, couple of resistors, LDR and LED)
Interesting idea. 10x :D
notgeek4 years ago
What kind of Arduino should I get for this?
notgeek4 years ago
Where is the video?
NCGeek4 years ago
I think this is a great idea, and I have just the right application for it. Problem is, I am having trouble finding a photo resistor like the one in your video. I have some photo resistors I got from Adafruit, but they are tiny, and I am afraid I will have difficulty with allignment. Could you recommend where I could get a larger one, like you have?
JOBGG4 years ago
I personally think that an Arduino is overkill, one proably could do that with an LDR. Even the idea with a oscilator should be possible to implement without an arduino.
I do think that's a great instructable though.
I disagree... The Arduino allows you to do hundreds of different things JUST with this concept.
Hey, where could I get the Arduino thing? Could i find one on eBay?
MCUman4 years ago
I built a football trainer years ago that used IR emitters modulated at something like 35KHZ aimed at tuned receivers from Sharp at the same freq. There were 8, multiplexed in an array. Both emitters and receivers were placed in 2" tubes and placed 6' apart from each other, forming a 6' X 6' opening. The brain was a Motorola HC705J1A MCU that fed a main MCU HC705C8 over one I/O line. It worked very well in bright sun light. The fun part was the power usage was very low as only one IR led was ever ON at any given moment. I ran some tests and was able to get a distance of 20' separation outdoors using nothng more than run-of-the-mill IR LEDs. The trick was using those tubes.
betwys14 years ago
If possible add a weak lens as a beam expander, so the laser spot just covers the active area of the photo resistor. That will give much greater sesistivity, and will propbably ease even remove the need for calibration altogether.

Brian Whatcott
kellergrrl4 years ago
would an arduino NANO 3.0 work?
transuranic4 years ago
it looks like your using the uno.I guess ill use the uno to.
This was published in 2008.. the UNO was released 2 years after.. .It doesn't matter which board you use.
transuranic4 years ago
Does it matter wich arduino you use?
lemon rind4 years ago
He He... If someone could rig this so it shot the person with something (nerf gun? Paintball?) when set off, they would be a legend...
Ora6 years ago
Great idea! As an improvement, could you add a second photoresistor that just takes a reading of the ambient light in the room, and use that reading instead of having to calibrate the arduino?
DIY-Guy Ora4 years ago
Simple solution may not require additional electronics-
Place the sensor at the back end of a black tube to block ambient light.
Login258 (author)  Ora6 years ago
Oh geez that's genius! I didn't even think of that. Earlier I used a relay to shoot an electric airsoft gun with the Arduino, perhaps I"ll make a tripwire somewhere that shoots you when you cross it?
how could you do that? like:

if(analogRead(0) = analogRead(1)) {
digitalWrite(13, LOW);

it doesnt work though! :S but the principle is close right? lol
Login258 (author)  amando966 years ago
Well first of all, if you're comparing two values you would use '==' not just '='.

And I would turn on the light if they are within a certain percentage of each other, so it would be:

if(analogRead(0) - (.25 * analogRead(1)) < 0) {
digitalWrite(13, LOW);

Or at least something like that
Ora Login2585 years ago
I just completed a modified version of this. I modified the original code to check the value of the photoresitor with the laser on and then off, it averages the values, and then checks if the value of the photoresistor with the laser on is less than that value. If the beam is broken, the arduino triggers the button on a wireless doorbell using an optoisolator, which in turn chimes the door bell.
You think that that would work with a 2N3904? I've been wanting to do that for a while now but have worried about takin apart my airsoft gun, because I have taken apart the electric ones before and have had problems putting them back together with all the uncooporitive springs...
1-40 of 77Next »