#include <Servo.h>

const int PinServo  = 9;
const int PinPIR    = 8;
const int PinCamera = 7;
const int CameraOn  = LOW;
const int CameraOff = HIGH;


Servo servo;
const int AngleStart = 30;
const int AngleEnd   = 150;

int angle = AngleStart;

void setup() {
  Serial.begin(9600);

  pinMode(PinPIR,    INPUT);
  pinMode(PinCamera, OUTPUT);
  digitalWrite(PinCamera, CameraOff);
  servo.attach(PinServo);
  servo.write(30);
}

uint32_t prevShot = 0;

void cameraButton() {
  digitalWrite(PinCamera, CameraOn);
  delay(1000);
  digitalWrite(PinCamera, CameraOff);
}

void loop() {
  // put your main code here, to run repeatedly:

  int pir = digitalRead(PinPIR);
  Serial.print(pir = digitalRead(PinPIR));
  Serial.print(",");
  Serial.print(prevShot);
  Serial.print(",");
  Serial.println(millis());

  if (pir == HIGH && (prevShot == 0 || millis() - prevShot > 10000)) {

    cameraButton();
    delay(1000);

    uint32_t t = millis();
    while (millis() - t < 5000) {
      servo.write(30);
      delay(300);
      servo.write(150);
      delay(300);
    }

    delay(1000);

    cameraButton();

    prevShot = millis();
  } else {
    delay(1000);
  }
}