Use a DIY Proximity Sensor to Automate Your Haunted House




About: My name is Jason Poel Smith. In my free time, I am an Inventor, Maker, Hacker, Tinker, and all around Mad Genius

The special effects in a haunted house need to be well timed. The best way to do this is to use sensors to detect where your guests are in the haunted house. So I am doing a series of projects that demonstrate a variety of sensors that you can use to automate your haunted house. Last week I showed how to make a simple DIY pressure plate switch.

This week, I am going to show you how to make a proximity sensor and how you can implement it to activate special effects. 

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Materials

Here are the materials and tools that you will need to make a simple proximity sensor:

Infrared LED
Infrared Phototransistor
33 ohm Resistor
10 kohm Resistor
Black Heat Shrink Tubing (the same diameter as the phototransistor)
Perf Board

Soldering Iron 

Step 2: How an Infrared Proximity Sensor Works

To make a simple proximity sensor, all you need is a light emitter and a light detector. The light emitter is constantly on. Whenever that light hits a nearby object, some of the light is reflected back to the detector. The closer the object is, the more light will be reflected. By measuring the output of the light detector, you can get a rough approximation of how close the object it.

This isn't exact because the amount of reflected light also depends on the physical properties of the reflecting surface (sometimes called its reflectivity). However, it works well enough to use to activate special effects in a haunted house.

I chose to use infrared light for this sensor because it is invisible to the human eye. So your guests won't notice it. Also it won't experience as much interference from the lighting in the room.

Step 3: The Sensor

The IR LED is connected to the 5V supply with a 33 ohm series resistor. To find the appropriate resistor value for the LED use this formula:

Resistor Value = (Supply Voltage - LED Voltage) / LED Current.

In my circuit, the supply voltage is 5V. The LED is rated for 1.3V at 150 mA. This gave a resistor value of 24.7 ohm. The closest resistor that I had above this value was a 33 ohm resistor. So I used that. Be careful to not overload the resistor. A 33 ohm resistor will experience about 1/2 watt if power. If you don't have a resistor rated for that much. You can use two 68 ohm resistors in parallel. Or you can use multiple LEDs in series to bring down the voltage across the resistor.

The emitter of the phototransistor is connected to ground. The collector is wired to a 10 kohm resistor that is connected to 5V. An additional wire is connected to the collector to act as an output pin for the sensor. I soldered the sensor components together on a small piece of perf board. I added three pins to connect the sensor to the signal processor.

To ensure that only reflected light is detected by the phototransistor, it is important to add a light barrier between the LED and the phototransistor. The most effective way to do this is to put a black piece of heat shrink tubing around the phototransistor. This also helps to make the sensor more directional.

Step 4: Signal Processing With an Arduino

In most cases you will use a microcontroller such as an Arduino to monitor the signal from the sensor. To do this, connect the ground terminal from the sensor to the GND pin on the Arduino. Connect the 5V wire from the sensor to either the 5V pin or a digital output pin set to HIGH. Then connect the signal wire from the sensor to an analog input pin on the Arduino. 

The AnalogRead function measures the voltage of the signal coming from the sensor. When the voltage drops below a set threshold, the Arduino activates the your special effects. Here is an quick example of the code that you could use. 

// Example Code
int InputPin = 0;      // analog pin 0 is the input pin
int OutputPin = 1;   // digital pin 1 is the output pin
int val = 0;              // variable to store the value read

void setup()
pinMode(OutputPin, OUTPUT);      // sets the digital pin as output

void loop()
  digitalWrite(OutputPin, LOW);    // sets the output pin initially to LOW
  val = analogRead(InputPin);        // read the input pin 0 to 1023
  if (val < 800)                              // if sensor value is below threshold set output HIGH
  digitalWrite(OutputPin, HIGH);    // sets output pin HIGH to activate special effects
delay(1000);                  // waits for a second

Step 5: Signal Processing With an OP Amp

If you don't have an Arduino, you can use an op-amp (operational amplifier) to monitor the signal from the proximity sensor. All you need is a 741 op-amp IC and a potentiometer (variable resistor). Connect the 5V supply to one side of the potentiometer and to V+ pin on the IC. Connect the ground wire to the other side of the potentiometer and to the V- pin on the IC. Then connect the non-inverting input (marked as "+" to the center lead of the potentiometer. Lastly connect the inverting input (marked as "-") to the signal wire from the sensor. 

This configuration of the op-amp functions as an adjustable comparator. The potentiometer sets the reference voltage for the sensor. Then whenever the signal from the sensor drops below this reference voltage the output goes HIGH.

Depending on what kind of circuit you want to activate, you may want the output to be a LOW signal instead. You can do this by switching the wires connected to the op-amp's input pins. So if you connect the sensor to the non-inverting input and connect the potentiometer to the inverting input, the output will be LOW whenever the sensor is activated. 

Step 6: Use Your Proximity Sensor to Activate Your Special Effects

You can use the output of this device to activate just about any kind of special effect. You can use the proximity sensor to activate a prop on a servo like my motion tracking skull project. You can use it to activate sound effects like a scream. But my favorite application is the automatic coffin. The coffin is closed as you approach it. But as soon as you get close to it, the door swings open with a zombie inside.

To see a really good tutorial on how to make an automatic coffin, check out this instructable by instructable user wannabemadsci.

Microcontroller Contest

Finalist in the
Microcontroller Contest

1 Person Made This Project!


  • CNC Contest

    CNC Contest
  • Make it Move

    Make it Move
  • Teacher Contest

    Teacher Contest

79 Discussions


2 years ago

Does this work in most lighting conditions? thanks

3 replies
DIY Hacks and How Toschago1

Reply 2 years ago

No. It works best in low light. Bright lights (especially daylight) can mess with the sensor.

Is there any way to get around the bright light limitation? Possibly a different kind of receiver\sender device?


2 years ago

hi there.... fantastic idea of the motion detector can i make it work as a microphone switch. when the person who wants to talk just approaches the mic and it will open ,and when he/she sits back for it to close??? any ideas??? please help...

2 replies

Reply 2 years ago

You will need to mount the sensor on the mic stand under the mic, aiming toward the person talking, and use a 5V relay to interrupt the mic's wiring. You will need to cut an extra mic cable to do this, preferably a short one. If your mic uses XLR (3 pin) connectors, look up how they work to be sure you wire it right.


3 years ago

Hello, my name is Mhale Metha, im from Nagaland, it is situated in the North East of India.
Your post helped me alot and thank you so much, i want to know something more,
I only have one arduino and my project is about 25 to 30 proximity sensors, please tell me how to connect all the sensors in one arduino, thank you.

1 reply
DIY Hacks and How TosMhaleM1

Reply 3 years ago

Since you don't have that many inputs on the Arduino, you will need to combine a few of them. To do this use a diode to connect the sensor to the Input pin with the cathode connected to the sensor and the anode connected to the Arduino input pin. You can connect multiple sensors in parallel like this. When any one of them sends out a LOW signal, the Arduino will register as LOW. You may need to add a pull-up resistor between the input pin and 5V.

Sarvasv Kulpati

3 years ago

If I had to use three of these sensors, how would you recommend connecting them to an arduino or a 6v battery pack(with appropriate resistors)? Should I connect each of them individually to the battery/ arduino or in series?

5 replies

Make three identical sensors (IR LED, receiver, and resistors. Connect them all to different input pins on the Arduino. Connect the GND pins and 5V pins to each sensor in parallel. Then connect the batter yto the power input (Vin) Arduino.

That all depends on the current requirements of each component. High torque servos use a lot of current and using two at once might drain the battery pretty quick.

I'm so sorry I keep pestering you with questions, but I just want to be safe. Is this a schematic of what you are describing? (ignore the analog input, I couldnt find anything to replace the sensors other than an led)

p.s. im fourteen and this is the first time im trying to write a comprehensive instructable so thanks for any help

Screen Shot 2016-05-11 at 7.18.02 pm.png

That looks about right. But you want to check the current rating of your servos and make sure that you aren't exceeding max current of the 5V pin.


3 years ago

Can i use dc motor at output of ic741( when ic741 is used instead of arduino)

1 reply

You could. But you want to make sure that the current required by the motor doesn't exceed the output current limit of your chip. You may need to use a transistor to control high current motors.


3 years ago

can u say how d skull is moving ?

i mean have u kept any sensor inside in it ?

ad hw much of load is reqrid fr moving it

plzzzz reply me

1 reply

3 years ago

Hey..... I need to make a sensor for a range of about 3-6 feet or so.... Can u recommend the components... Would be a huge help.... Thanks ?