Introduction: Motion Tracker With PIRs, Arduino and a Servo
It is a simple way to give the impression that the head (birdy) is actually following movement.
It is a very easy project to build but a little time consuming to make the wiring harness that connects the PIRs to the Arduino. I simply wire the PIRs positive and negative wires together and power them directly off the Arduino 5 volt circuit, plug the signal wires into the Arduino digital ports 3,4,5 and 6, plug the servo also into the 5 volt and ground ports and it's signal into the 9 port and run my program which is also fairly simple.
The program cycles through each PIR input via an array and if the PIR goes HIGH then moves the servo to that PIR's corresponding servo position. I had to add another array to track each PIR and only allow it to be used once per HIGH state or else it sometimes would jump between adjacent PIR servo positions - a definitely birdlike movement but not too desirable.
This would be a great Halloween mechanism to track movement with a head.
This is the first project I ever used with an Arduino board and I was surprised how easy it is to use. It took only minutes to install the software and run the LED Blink program. Hope to use it for more projects in the future.
The PIRs should have the shortest delay time possible. The minimum delay on this particular PIR is 2.5 seconds which is how long you would have to wait for the PIR to go LOW before it can detect new movement. Some more expensive PIRs probably are faster but 2.5 seconds is ok. Longer time PIRs makes for a more frustrating performance.
More PIRs would also make for a more realisitic movement of the head. Also, one could slow down movement between PIR positions for more realistic movement by incorporating a delay subroutine but I like the faster movement myself. With more PIRs is wouldn't be quite so jerky though.
Step 1: Make Wiring Harness for PIRs
Each PIR has a positive voltage, negative voltage and signal post. I used some old connectors I took off some dead servos and also some from some dead lipo batteries. See closup photo of connector. The lipo battery connectors have 4 connections and I just use the left or right three which fortunately fit the PIR connector pretty closely.
Solder longer wires to the three left or right wires of the connector. Do this for each PIR. It is important to use somekind of connector for the PIR as soldering directly to the PIR may kill it (I did that a couple of times and learned my lesson).
I also soldered a breade board connecting wire to the end of the positive and negative wire bunches and to the end of each signal wire as these are easier to push into the Arduino and bread board holes.
As per the crudely drawn schematic, solder all the positive PIR wire ends together, solder all the negative wire ends together. These will be connected to the Arduino 5 volt and grnd ports.
Step 2: Make PIR Holder or Mount
You have to have something to hold the PIRs in a semi-circle and I have found the EPP foam is easy to work with and I have a bunch of it that I use to build RC airplanes. Use whatever you have.
Cut a hole to hold the PIR. EPP is flexible so just a rough cut hole is sufficient. The PIR can be hotglued into the foam but mine just sit in there held in by friction.
You also need to cut some square pieces to serve as separators between the PIR or else they will overlap each other and cause fluctuating servo movement. You want each PIR to have it's own range of coverage.
Step 3: Connect Wiring Harness to Arduino
I used a white breadboard to connect the Arduino 5 volt and ground ports to the PIR wiring harness and to the servo.
Connect each PIR signal wire to Arduino digital ports 3,4 5, and 6.
Connect the servo signal wire to Arduino digital port 9.
The servo is sitting under the bird mounted in a cardboard tea container. It has 3 wires also, a positive, negative and signal wire.
Step 4: Upload Program
Here is my program. Pretty self explanatory. I assign each PIR pin to an array and in my main loop cycle through the array checking each PIR for a HIGH state. If it goes HIGH then move the servo to the corresponding PIR servo position.
I originally set it up for 5 PIRs but one of the wiring harnesses was bad so rather than tear it apart and fix it I went with just 4 PIRs.
The program does two other things. If the a PIR is HIGH and the servo is already at that PIRs corresponding position, dont move it.
Also, I use another array to track if the PIR has been used since it went HIGH. I only allow it to be used once for each HIGH state. If you don't do that you get added movement between adjacent PIRs that is not necessary.
I just turn on the LED whenever a PIR is HIGH so I can tell by looking at the Arduino if there is some activity in the PIRs.
#include <Servo.h>
// author: jim demello feb 2014 //
boolean pirStatus;
Servo servo1;
int servangle = 0; // servo angle variable
int pirNo[] = {3,4,5,6,7}; // pir pin numbers
int pirPrevLow[] = {1,1,1,1,1}; // previously low flag set to true
int pirPrevUsed[] = {0,0,0,0,0}; // has pir been on used before going low
int pirPos[] = {10,60,100,140,170}; // positions for servo (0-180)
int curPosPir = 0;
int pirPin = 3;
int ledPin = 13;
void setup(){
Serial.begin(9600);
servo1.attach(9);
for(int i=0;i<4;i++){
pinMode(pirNo[i], INPUT);
}
pinMode(ledPin, OUTPUT);
delay(10000); // calibrate for about 10 seconds
// servo1.write(90); // put servo at center to begin
}
////////////////////////////
//Main LOOP
//////////////////
void loop(){
for(int j=0;j<4;j++){ // for each PIR
pirPin=pirNo[j];
pirStatus = digitalRead(pirPin);
if (pirStatus == HIGH) {
digitalWrite(ledPin, HIGH); //the led visualizes the sensors output pin state
if(pirPrevLow[j]) {
if (curPosPir != pirPin && pirPrevUsed[j] == 0) { // if high PIR is different than current position PIR then move to new position
servo1.write(pirPos[j]);
Serial.println(j);
delay(50);
curPosPir = pirPin; // keep current PIR
pirPrevUsed[j] = 1;
}
pirPrevLow[j] = 0; // pir is now not low
}
}
else {
digitalWrite(ledPin, LOW); //the led visualizes the sensors output pin state
pirPrevLow[j] = 1; // pir is now low
pirPrevUsed[j] = 0;
}
} // end j number of pirs loop
}// end infinite loop

Participated in the
Arduino Contest
28 Comments
2 years ago
hello sir , please can you send he circuit diagram cause i cant understand what is the thing which connect to pin 7 ??
Reply 2 years ago
Pin 7 is for a 5th PIR which I did not implement. The code works with 4 or 5 PIRs. The schematic I provided is correct for 4 PIRs. If you want a 5th one, add it to pin 7.
Reply 2 years ago
thank you sir but i do not know why there is a big delay when i trying that now
4 years ago
Hello, I was just wondering if it was Possible to do this with just 1 Servo for a Halloween Project? Obviously it wouldn’t turn around as far but the PIR’s Do offer a Wide range on them, I’m not very good with Code but if I was to try it out with 1 which part of the Code would you change? Thank You
Reply 3 years ago
I missed all these comments so am late to respond. Don't have this project anymore so couldn't help anyway. I tear my stuff up almost immediately to build something else. Hope you resolved it.
3 years ago
Can we modify the code to make head turn smoothly instead of fixed positions?
Reply 3 years ago
Sorry so late to respond but I don't have this project anymore so can't play with it. I can't think of an easy way to do that. So no help really.
4 years ago
Question how hard is it to mod the code to add 2 to 3 more pir sensors on it I want to give it a wider range of motion
Question 5 years ago
i am facing this error
Arduino: 1.8.1 (Windows 10), Board: "Arduino/Genuino Uno"
mov1:6: error: stray '\302' in program
int pirNo[] = {3,4,5,6,7};Â Â Â Â Â Â Â Â Â // pir pin numbers
^
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:6: error: stray '\302' in program
mov1:6: error: stray '\240' in program
mov1:7: error: stray '\302' in program
int pirPrevLow[] = {1,1,1,1,1};Â Â Â Â // previously low flag set to true
^
mov1:7: error: stray '\240' in program
mov1:7: error: stray '\302' in program
mov1:7: error: stray '\240' in program
mov1:7: error: stray '\302' in program
mov1:7: error: stray '\240' in program
mov1:7: error: stray '\302' in program
mov1:7: error: stray '\240' in program
mov1:8: error: stray '\302' in program
int pirPrevUsed[]Â = {0,0,0,0,0};Â Â Â Â // has pir been on used before going low
^
mov1:8: error: stray '\240' in program
mov1:8: error: stray '\302' in program
mov1:8: error: stray '\240' in program
mov1:8: error: stray '\302' in program
mov1:8: error: stray '\240' in program
mov1:8: error: stray '\302' in program
mov1:8: error: stray '\240' in program
mov1:8: error: stray '\302' in program
mov1:8: error: stray '\240' in program
mov1:11: error: stray '\302' in program
int pirPin = 3;Â Â
^
mov1:11: error: stray '\240' in program
mov1:11: error: stray '\302' in program
mov1:11: error: stray '\240' in program
mov1:15: error: stray '\302' in program
 Serial.begin(9600);
^
mov1:15: error: stray '\240' in program
mov1:16: error: stray '\302' in program
 servo1.attach(9);
^
mov1:16: error: stray '\240' in program
mov1:17: error: stray '\302' in program
 for(int i=0;i<4;i++){
^
mov1:17: error: stray '\240' in program
mov1:18: error: stray '\302' in program
 pinMode(pirNo[i], INPUT);
^
mov1:18: error: stray '\240' in program
mov1:19: error: stray '\302' in program
  }
^
mov1:19: error: stray '\240' in program
mov1:19: error: stray '\302' in program
mov1:19: error: stray '\240' in program
mov1:20: error: stray '\302' in program
 pinMode(ledPin, OUTPUT);
^
mov1:20: error: stray '\240' in program
mov1:21: error: stray '\302' in program
 delay(10000); // calibrate for about 10 seconds
^
mov1:21: error: stray '\240' in program
mov1:22: error: stray '\302' in program
 // servo1.write(90); // put servo at center to begin
^
mov1:22: error: stray '\240' in program
mov1:23: error: stray '\302' in program
 }
^
mov1:23: error: stray '\240' in program
mov1:28: error: stray '\302' in program
 for(int j=0;j<4;j++){ // for each PIR
^
mov1:28: error: stray '\240' in program
mov1:29: error: stray '\302' in program
    pirPin=pirNo[j];
^
mov1:29: error: stray '\240' in program
mov1:29: error: stray '\302' in program
mov1:29: error: stray '\240' in program
mov1:29: error: stray '\302' in program
mov1:29: error: stray '\240' in program
mov1:29: error: stray '\302' in program
mov1:29: error: stray '\240' in program
mov1:30: error: stray '\302' in program
    pirStatus = digitalRead(pirPin);
^
mov1:30: error: stray '\240' in program
mov1:30: error: stray '\302' in program
mov1:30: error: stray '\240' in program
mov1:30: error: stray '\302' in program
mov1:30: error: stray '\240' in program
mov1:30: error: stray '\302' in program
mov1:30: error: stray '\240' in program
mov1:31: error: stray '\302' in program
    if (pirStatus == HIGH) {
^
mov1:31: error: stray '\240' in program
mov1:31: error: stray '\302' in program
mov1:31: error: stray '\240' in program
mov1:31: error: stray '\302' in program
mov1:31: error: stray '\240' in program
mov1:31: error: stray '\302' in program
mov1:31: error: stray '\240' in program
mov1:32: error: stray '\302' in program
         digitalWrite(ledPin, HIGH);  //the led visualizes the sensors output pin state
^
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:32: error: stray '\302' in program
mov1:32: error: stray '\240' in program
mov1:33: error: stray '\302' in program
         if(pirPrevLow[j])   {Â
^
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:33: error: stray '\302' in program
mov1:33: error: stray '\240' in program
mov1:34: error: stray '\302' in program
               if (curPosPir != pirPin && pirPrevUsed[j] == 0) { // if high PIR is different than current position PIR then move to new position
^
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:34: error: stray '\302' in program
mov1:34: error: stray '\240' in program
mov1:35: error: stray '\302' in program
                  servo1.write(pirPos[j]);
^
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:35: error: stray '\302' in program
mov1:35: error: stray '\240' in program
mov1:36: error: stray '\302' in program
                  Serial.println(j);
^
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:36: error: stray '\302' in program
mov1:36: error: stray '\240' in program
mov1:37: error: stray '\302' in program
                  delay(50);
^
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:37: error: stray '\302' in program
mov1:37: error: stray '\240' in program
mov1:38: error: stray '\302' in program
                  curPosPir = pirPin; // keep current PIR
^
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:38: error: stray '\302' in program
mov1:38: error: stray '\240' in program
mov1:39: error: stray '\302' in program
                  pirPrevUsed[j] = 1;
^
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:39: error: stray '\302' in program
mov1:39: error: stray '\240' in program
mov1:40: error: stray '\302' in program
               }
^
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:40: error: stray '\302' in program
mov1:40: error: stray '\240' in program
mov1:41: error: stray '\302' in program
         pirPrevLow[j] = 0; // pir is now not low
^
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:41: error: stray '\302' in program
mov1:41: error: stray '\240' in program
mov1:42: error: stray '\302' in program
         }
^
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:42: error: stray '\302' in program
mov1:42: error: stray '\240' in program
mov1:43: error: stray '\302' in program
     }
^
mov1:43: error: stray '\240' in program
mov1:43: error: stray '\302' in program
mov1:43: error: stray '\240' in program
mov1:43: error: stray '\302' in program
mov1:43: error: stray '\240' in program
mov1:43: error: stray '\302' in program
mov1:43: error: stray '\240' in program
mov1:43: error: stray '\302' in program
mov1:43: error: stray '\240' in program
mov1:44: error: stray '\302' in program
     else {
^
mov1:44: error: stray '\240' in program
mov1:44: error: stray '\302' in program
mov1:44: error: stray '\240' in program
mov1:44: error: stray '\302' in program
mov1:44: error: stray '\240' in program
mov1:44: error: stray '\302' in program
mov1:44: error: stray '\240' in program
mov1:44: error: stray '\302' in program
mov1:44: error: stray '\240' in program
mov1:45: error: stray '\302' in program
             digitalWrite(ledPin, LOW); //the led visualizes the sensors output pin state
^
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:45: error: stray '\302' in program
mov1:45: error: stray '\240' in program
mov1:46: error: stray '\302' in program
             pirPrevLow[j] = 1;  // pir is now low
^
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:46: error: stray '\302' in program
mov1:46: error: stray '\240' in program
mov1:47: error: stray '\302' in program
             pirPrevUsed[j] = 0;
^
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:47: error: stray '\302' in program
mov1:47: error: stray '\240' in program
mov1:48: error: stray '\302' in program
     }
^
mov1:48: error: stray '\240' in program
mov1:48: error: stray '\302' in program
mov1:48: error: stray '\240' in program
mov1:48: error: stray '\302' in program
mov1:48: error: stray '\240' in program
mov1:48: error: stray '\302' in program
mov1:48: error: stray '\240' in program
mov1:48: error: stray '\302' in program
mov1:48: error: stray '\240' in program
mov1:49: error: stray '\302' in program
   } // end j number of pirs loop
^
mov1:49: error: stray '\240' in program
mov1:49: error: stray '\302' in program
mov1:49: error: stray '\240' in program
mov1:49: error: stray '\302' in program
mov1:49: error: stray '\240' in program
mov1:50: error: stray '\302' in program
 }// end infinite loopive
^
mov1:50: error: stray '\240' in program
exit status 1
stray '\302' in program
"Show verbose output during compilation"
option enabled in File -> Preferences.
can you help me?
Answer 5 years ago
Hi. Don't know what those strange 'A' characters are but they shouldn't be in there.
6 years ago
Can I get a little more in depth wiring sechmatic or picture of the wiring and stuff like that?
Reply 6 years ago
Sorry but this is all there is. I don't have this circuit anymore; left all that stuff behind at my last school. If you have a particular question I may be able to help though.
Reply 6 years ago
Maybe where you put the wires for the PIRs and did any of this require soddering?
Reply 6 years ago
Yes it requires soldering. You need to look at the schematic and it will explain where the wires go. If that is too difficult then you probably need to begin with a simpler project. This project does require some ability to understand basic electronics and programming.
7 years ago
Hi, what would happen if the servo rotates the whole PIRs instead of the bird? will it get autocentered?
Reply 7 years ago
Thats an interesting idea but I have no idea what would happen. Unfortunately I dont have this project anymore to test it out.
7 years ago
hi, this post is extremely helpful. i'm looking to create a tracking turret for a predator costume for a friend and i dont know much about this kind of system. how would you recommend doing this so the turret follows the heads movement rather than the other people around? thank you
Reply 7 years ago
Sorry to reply so late. I think you would have to use a sonar module so you could find the nearest object to you. Dont think you could do it with PIRs. Just guessing though.
7 years ago
this is amazing thank you for posting this it is a very big help for a school project. thanks again
7 years ago
Hi..
awesome and nice project !!
but how if want to reduce speed servo if human detected?
can you give example code?