LASER Maze - Halloween Haunted House

39K10830

Intro: LASER Maze - Halloween Haunted House

The LASER Maze was our Processing and Arduino powered garage haunted house for 2011. A monitor sits outside of the garage, displaying "PRESS START." After the button is pressed, an intro video plays that instructs you to dodge the lasers and get your candy in the back of the garage. Whenever you break a laser beam, an alarm sounds, a police light flashes, and a point is added to your score. When you make it back out, you press the stop button to see your final time and score.

We kept all of the lasers very low to the ground to avoid everyone's eyes. Future versions may turn the lasers off for a short time when they are broken for an added layer of safety.

We also made a couple of flashing signs out of red and white blinking bicycle lights. The house is at the end of a cul-de-sac, so we had to advertise to attract more attention.

Here is Alice in Wonderland with her pirate and gremlin friends navigating the maze.



My friend is offering them chocolate milk in the video so he can show off the pile of severed heads he has stored in the fridge.

STEP 1: Parts List

The parts list:
a garage
a laptop
Arduino Duemilanove with USB cord
4 green Lasers ($7.54 each at Amazon)
4 CDS cells ($0.50 each at Electronic Goldmine)
4 1K resistors
3 push buttons (arcade style buttons)
1 breadboard
1 servo
1 surge protector with switch
1 red beacon light
1 1000W fog machine
phone cord long enough to run to your sensors (cheap at the thrift store)

You will also need electrical tape, cardboard TP tubes, soldering iron with soldier, velum paper or some other semi transparent paper, and possibly some other small items.

STEP 2: Overview - How It All Works


The 4 green lasers are lined along one side of the garage, all wired in parallel to 3 D cell batteries. They are not connected to the Arduino in any way. On the opposite side of the garage, there are 4 CDS cells(Light Dependent Resisters) inside of cardboard tubes. The CDS cells detect the laser light, and the tube helps filter out other unwanted light from strobe lights.

The Arduino is programmed to watch the CDS cells, and the stop, start, and reset buttons. The Arduino sends 4 signals back to the Processing code on the laptop: start, stop, alarm, or reset. The Arduino also powers a servo that turns on a spinning red light when the alarm is set off.

The Processing code accepts the signals from the Arduino, and displays the state of the game on the monitor outside. The Processing code has 5 different states: PRESS START > Intro Video > 3, 2, 1, GO > Active Game (show time and score) > Display Final Score. The Processing code starts and stops the game, and increments the score as it receives the signals from the Arduino.

The music playing in the background is just shuffling on the computer, it is not connected to Processing or Arduino.

STEP 3: The Floorplan


The garage was laid out so that guests would have to cross the laser beams as many times as possible. Only 4 laser pointers were used, but the trick-or-treaters had to dodge laser beams 16 times.

The yellow lines in the picture show where we built cardboard or caution tape walls. The caution tape made a clear path for people while still allowing the lasers to pass through to the sensors on the opposite wall.

The air mask in the picture is an air compressor with a blower attachment pointing through the mouth of a skull mask. The blower handle was tied to a string and run through some pulleys so we could scare kids from a distance while they collected their candy.

STEP 4: The Processing Code


The Processing code accepts 4 serial commands from the Arduino, and displays the state of the game on the monitor based on those commands. The basic flow of the program through the 5 states is:

1. Display PRESS START screen
(start button pressed)
2. Display intro movie
(start button pressed a second time, or end of movie)
3. Display 3, 2, 1, GO countdown
4. Display game timer and number of alarms
(stop button pressed)
5. Display final time and number of alarms
(start button to return to beginning)

If the reset button is pressed at any time, the game goes back to the PRESS START screen. The code is full of comments to help you figure out what is going on. Most of it is very similar to the examples I found on the Processing website. The default video library did not work well for me, so I used GSVideo instead.

STEP 5: The Intro Video

This is the video that plays as soon as someone presses start. The video can be skipped by pressing start a second time.

The intro video was made using Pinnacle VideoSpin free video editor. The video is a cut up version of the Half Life G-Man speech that I found on youtube, and the new dialogue was added using Cepstral Text-To-Speech demo. There is a character limit for the demo, so I made several small sound clips and put them together in VideoSpin.

Here is the final product:

STEP 6: The Arduino Code

The Arduino code has a pretty simple function; monitor 3 buttons and the light dependent resisters, and send signals to Processing through the serial port.

When the Arduino first powers on, it finds a normal value for each CDS cell by averaging 3 readings together. This means the lasers must be on and pointed at the CDS cells before the Arduino is powered on. The reset button will cause the Arduino to find a new average for each CDS cell. This was done so we could recalibrate if the fog conditions changed too much.

There is also a sensitivity level that can be set. We test for a broken laser by checking if the current CDS cell reading is less than the average-sensitivity. When a break is detected, we send the alarm signal to the serial port, and we activate the servo that turns on the red light.

The push buttons for start, stop, and reset use the internal pull up resisters in the Arduino. The push button pins read high when they are not pressed, and low when they are pressed. The stop, start, and reset signals are only sent to the serial port one time when a high to low edge is detected. This prevents the Arduino from needlessly spamming the serial port.

The schematic shows how the buttons, CDS cells, and server should be connected to the Arduino.

STEP 7: The Hardware

CDS Cells
These are used to detect the lasers. Their resistance changes depending how much light they are exposed to. We put them in cardboard tubes with velum paper (a thin frosted paper) on front, and electrical tape on the back. This gives you a much bigger target to aim the laser at, and the velum disperses the light so it hits the sensor. When the laser is broken, the CDS cell reads almost pitch black, since it is enclosed in the tube.

Lasers
The factory battery holders were left off of the lasers, and they were all wired in parallel with 3 D cell batteries. This gave us a much longer run time, and it allowed us to turn the lasers all on or off at the same time. The factory buttons were held down with tape, and the lasers were taped to L brackets so they could easily be mounted to the wall. We kept all of the lasers close to the ground to prevent any eye injuries.

Beacon Light
Instead of interfacing directly with AC power, we used a servo hot glued to a power strip to turn on the spinning red light.

STEP 8: Walk Through Videos

Here are a few more videos of the final effect.

Oh, you're my neighbor as well? How unfortunate....


Flashing Laser Maze sign


Jumpy werewolf

27 Comments

could you put up the full and proper code for the processing app. i really like the clock feature.

if i want to make this project with 20 lasers and 20 LDR , what should i do??? please help,

i want to make this project.

Were in the code do you change the trigger level for the C.D.S?

Maybe change the code to flash the laser they walked though?

Wow! You could always use a PIR or Ultrasonic Sensor for added accuracy, but lasers add an element of coolness that nobody can explain.

I can't seem to download the processing code. Is that link broken?
Im bad with schematics. Im working on it though. Could you give a better picture or wiring diagram so i can see and follow along. if it makes any difference i have this type of bread board. Also still having difficulty with the processing software. can you please give a step by step. it is giving me alot of trouble.

The arduino code is not working, and the video file is not supported...
So what i supposed to do.
if any solution you can any one provide sujayjoarar@yahoo.in
hi bkhurt
bt the problem is that when ever am tring to upload the code and comple the code to the arduino then the message shows in the sketch that, the video gs is not supported..so what to do now..
There are 2 different programs. The laser_maze_arduino program should be uploaded to the Arduino. There is nothing about video in the Arduino program.

The other program is laser_maze_processing. This runs in the Processing environment on your PC, and this is the program that controls the video. You have to download Processing from here. Then install GSVideo from the comment above.

I wrote a new version of the LASER Maze for 2012. It does not have any video, so it is easier to set up. You can see the new instructable here - https://www.instructables.com/id/LASER-Maze-2012-Halloween-Haunted-House/

is that speaker wire to power the lasers via the D batteries?
I am attempting a simplified version of this instructable and speaker wire does indeed carry the power around well. I don't see how three D batteries in paralell can power this though. I'm no electrician, but it seems I need 3V(two D batteries) to light the laser. I've made a 2x3 matrix of D batteries that seems to work, though it seems to get pretty hot, which is worrysome.
Yes I am using heavy gauge speaker wire to power the lasers. A 5mW green laser draws about 250-300mA when it is on. So my 4 lasers in parallel are drawing about 1000-1200mA (1.2A). The 3 batteries are in series, it is the lasers that are connected to the batteries in parallel.

I started with 2 batteries in series, but that wouldn't power all 4 of the lasers. I'm sure that drawing 1.2 amps puts a heavy load on the batteries, but it worked for the time I needed. This year, I will only run 2 lasers on each battery pack to make sure nothing heats up.
hey thanks for the reply. my 2x3 matrix of batteries should be okay then, as it outputs 3V, enough for the lasers. my heat issue was due to a short as i wired in a switch wrong, oops. all fixed now. i'll post back once it's all done. thanks for the inspiration.
here is my simplified version, as promised: www.youtube.com/watch?v=bTEXSwVxYxI
I have new versions of the processing and the arduino code for the 2012 version, but I haven't had time to write up a new instructable yet. Instead of a start and stop button with a timer and a counter, the new version is just continuous running. The screen does not show a game display, it just shows a graph of the sensors current readings. There is no intro video in the new version.

The "game" aspect didn't work well for Halloween last year, because a constant flow of people were going through the maze. We ended up just starting it and leaving it running the whole time. The new 2012 version is better for that situation, plus the screen shows you some diagnostics(the sensor readings and alarm level) to help troubleshoot if it isn't working correctly.
Nice instructables. I made something similar. Here are some things I did different. I mainly wanted the laser effect, I didn't worry about the video.

1 - Instead of the cardboard tube, I used 1 1/2 black ABS and bought the white PVC 1 1/2 end caps. I drilled two small holes in the end caps to pas the photo sensor leads through then hot glued them in place. Then I cut the paper slightly bigger then the tube and put the end cap on. I only shoved it down about 1/4 - 1/2 inch so it would stay on. I also screwed and tapped the tube so I could use mini tripods I found cheap on eBay. This helped to mount and position the receivers and make them more durable.
2 - I used mirrors to bounce the laser around a little bit. I tried the front side mirror trick instrucable and a few others. Some worked better then others. I used blue tack to stick them to the same little mini adjustable tripods.
3 - Because of the mirrors sometimes the signal could not be picked up properly with the fog, the 1k resistor was not sensitive enough so in order to make them more sensitive I bumped up the resistors. I also modified the arduino code slightly to take serial input so I could put it into a test mode and continually show the values so I could get a feel if the resistors were working. Also used this for alignment.
4 - I made a couple small changes to the arduino code to change sensitivity, so instead of variance from a sample, it took a low thresh hold value (Because I was mucking with the resistors).
5 - Instead of a servo, I used transistor (2n3904?), a diode, resistor and a relay to trigger a remote control for a cheap remote doorbell.

Thanks for the instcutable. It inspired me to get off my bum and do something.
It's cool to see the imporvements you made to this project. I am writing the LASER Maze 2012 instructable right now, and I have made some similar changes.
1. I'm wanting to upgrade to PVC also, and I want to look in to RCA connections so I can run RCA cable between the sensor and the Arduino.
2. Old hard drive disks work well for bouncing the lasers if you have them laying around. I ordered some front surface dental mirrors from Amazon for this year: LINK
3. I got rid of the video in the new version and now the monitor shows bar graphs that disply sensor reading in real time. It also shows a red line that marks the alarm trigger value. I changed to 10k resistors this year.
4. Did you hard code an alarm value then? Or is it a percentage change?
5. I'd like to add some more props also, so that when laser1 is broken prop1 activates and so on. Maybe in the 2013 version...

Good work on getting yours set up. You made a lot of the same modifications that I had in mind. Post a video link if you can! I will get the new version and new code up as soon as I can.
More Comments