Detecting an IR Beam Break using the Arduino IR Library

A simple electric eye circuit

By Ken Shirriff

http://www.arcfn.com/2010/03/detecting-ir-beam-break-with-arduino-ir.html

update 5/2014 – For current information, see the musical stairs project – using this IR library with sensors from Adafruilt: http://reactivemusic.net/?p=12300

original post

I was able to build a version of this using some ir receivers from radio shack. The receivers were different – one received a relatively narrow angle beam, while the other one seemed to pick up everything in the room. So, although this method works, it will require some hardware tweaking.

Here’s my Arduino code for this… Note that the code runs 2 beams but the photos and videos only show one in the circuit.

#include <IRremote.h>
// tz 12/26/2012
/* This works with the basic IR beam layout of an
IR emitter and IR receiver from radio shack - when you break the 
beam, like with your hand the LED on D13 lights up.

*/
#define PIN_IR 3
#define PIN_DETECT 2
#define PIN_STATUS 13

#define PIN_DETECT_B 7
#define PIN_STATUS_B 8

int counter = 0;
int stat = 0;
int stat_B = 0;

IRsend irsend;
void setup()
{
   Serial.begin(9600); // open the serial port
  pinMode(PIN_DETECT, INPUT);
  pinMode(PIN_STATUS, OUTPUT);

    pinMode(PIN_DETECT_B, INPUT);
  pinMode(PIN_STATUS_B, OUTPUT);
  irsend.enableIROut(38);
  irsend.mark(0);
}

void loop() {
//  digitalWrite(PIN_STATUS, !digitalRead(PIN_DETECT));
irsend.space(0);
delay(1);
irsend.mark(0);
stat = digitalRead(PIN_DETECT);
digitalWrite(PIN_STATUS, stat);

stat_B = !digitalRead(PIN_DETECT_B);
digitalWrite(PIN_STATUS_B, stat_B);
delay(1);

counter++;
if(counter > 1000) {
  Serial.print("A: ");
  Serial.print(stat);
  Serial.print(" B: ");
  Serial.print(stat_B);
  Serial.println();
  counter = 0;
}
}