Advertisement
Z2589

motionDetector-servo

Feb 27th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. #include <Servo.h>
  2. #define servoRP 2
  3. #define servoLP 3
  4. #define trigPin 13
  5. #define echoPin 12
  6. #define ERR_MARGIN 5
  7.  
  8. long average = 0;
  9. long duration;
  10. long distance[2];
  11. int intruder = 0;
  12. Servo servoR;
  13. Servo servoL;
  14.  
  15. void setup()
  16. {
  17.   Serial.begin(9600);
  18.   servoR.attach(servoRP);
  19.   servoL.attach(servoLP);
  20.   pinMode(trigPin, OUTPUT);
  21.   pinMode(echoPin, INPUT);
  22.   pinMode(servoRP, OUTPUT);
  23.   pinMode(servoLP, OUTPUT);
  24.   servoR.write(1);
  25.   servoL.write(1);
  26.  
  27.   for (int i = 0; i < 500; i++)
  28.   {
  29.     digitalWrite(trigPin, LOW);
  30.     delayMicroseconds(2);
  31.     digitalWrite(trigPin, HIGH);
  32.     delayMicroseconds(10);
  33.     digitalWrite(trigPin, LOW);
  34.     duration = pulseIn(echoPin, HIGH);
  35.     average += (duration/2) / 29.1;
  36.     Serial.print(duration);
  37.     Serial.print(", ");
  38.     Serial.println((duration/2) / 29.1);
  39.     delay(80);
  40.   }
  41.   average /= 500;
  42.   Serial.print("Average: ");
  43.   Serial.println(average);
  44. }
  45.  
  46. void loop() {
  47.   digitalWrite(trigPin, LOW);
  48.   delayMicroseconds(2);
  49.   digitalWrite(trigPin, HIGH);
  50.   delayMicroseconds(10);
  51.   digitalWrite(trigPin, LOW);
  52.   duration = pulseIn(echoPin, HIGH);
  53.   distance[0] = distance[1];
  54.   distance[1] = (duration/2) / 29.1;
  55.  
  56.   if ((distance[0] < average - ERR_MARGIN) && (distance[1] < average - ERR_MARGIN))
  57.   {
  58.     Serial.println(distance[0]);
  59.     Serial.println(distance[1]);
  60.     Serial.println();
  61.     intruder = 1;
  62.   }
  63.  
  64.   //Serial.print(distance);
  65.   //Serial.println(" cm");
  66.  
  67.   if (intruder > 0)
  68.   {
  69.     intruder--;
  70.     //analogWrite(buzzer, 100);
  71.     servoR.write(90);
  72.     servoL.write(90);
  73.     delay(500);
  74.     servoR.write(1);
  75.     servoL.write(1);
  76.     delay(1000);
  77.  
  78.    
  79.   }
  80.   else
  81.   {
  82.     delay(80);
  83.     //analogWrite(buzzer, 0);
  84.   }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement