#include <Servo.h>
// Define the servo objects
Servo leftWingServo;
Servo rightWingServo;
Servo leftTailServo;
Servo rightTailServo;
// Define the pin numbers for the servos
const int leftWingServoPin = 9;
const int rightWingServoPin = 10;
const int leftTailServoPin = 11;
const int rightTailServoPin = 12;
// Define the PIR sensor pin
const int pirSensorPin = 2;
// Define the angles for the wing flapping
const int minAngle = 0;
const int maxAngle = 180;
// Define the flapping speed (delay in milliseconds)
const int flappingSpeed = 01;
void setup() {
// Attach the servo objects to the corresponding pins
leftWingServo.attach(leftWingServoPin);
rightWingServo.attach(rightWingServoPin);
leftTailServo.attach(leftTailServoPin);
rightTailServo.attach(rightTailServoPin);
// Set initial positions
leftWingServo.write(minAngle);
rightWingServo.write(maxAngle);
leftTailServo.write(minAngle);
rightTailServo.write(maxAngle);
// Initialize the PIR sensor pin as input
pinMode(pirSensorPin, INPUT);
}
void loop() {
// Check for motion detected by the PIR sensor
if (digitalRead(pirSensorPin) == HIGH) {
// Flap wings up
for (int angle = minAngle; angle <= maxAngle; angle++) {
leftWingServo.write(angle);
rightWingServo.write(180 - angle);
leftTailServo.write(angle);
rightTailServo.write(180 - angle);
delay(flappingSpeed);
}
// Flap wings down
for (int angle = maxAngle; angle >= minAngle; angle--) {
leftWingServo.write(angle);
rightWingServo.write(180 - angle);
leftTailServo.write(angle);
rightTailServo.write(180 - angle);
delay(flappingSpeed);
}
} else {
// Stop the servos if no motion is detected
leftWingServo.write(minAngle);
rightWingServo.write(maxAngle);
leftTailServo.write(minAngle);
rightTailServo.write(maxAngle);
}
}