#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); } }