code implementation
code implementation
Code Implementation
Example Code for Arduino
cpp
#include <Servo.h>
// Pin Definitions
#define PIR_PIN 2 // PIR sensor connected to pin 2
#define SERVO_PIN 9 // Servo motor connected to pin 9
// Global Variables
Servo doorServo; // Servo motor object
int sensorValue = 0; // Variable to store sensor reading
int doorOpenAngle = 90; // Angle to open the door
int doorCloseAngle = 0; // Angle to close the door
unsigned long openTime = 0; // Tracks when the door was opened
const unsigned long delayTime = 5000; // 5 seconds delay before closing
void setup() {
pinMode(PIR_PIN, INPUT);
doorServo.attach(SERVO_PIN);
doorServo.write(doorCloseAngle); // Start with door closed
Serial.begin(9600);
}
void loop() {
sensorValue = digitalRead(PIR_PIN);
void setup() {
BTSerial.begin(9600); // Start Bluetooth communication
...
}
void loop() {
// Check for Bluetooth command
if (BTSerial.available()) {
char command = BTSerial.read();
if (command == 'O') { // 'O' for Open
doorServo.write(doorOpenAngle);
} else if (command == 'C') { // 'C' for Close
doorServo.write(doorCloseAngle);
}
}
...
}
# Pin Definitions
PIR_PIN = 17
SERVO_PIN = 18
# Setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIR_PIN, GPIO.IN)
GPIO.setup(SERVO_PIN, GPIO.OUT)
# Servo Setup
servo = GPIO.PWM(SERVO_PIN, 50) # 50 Hz PWM frequency
servo.start(0)
def set_servo_angle(angle):
duty = 2 + (angle / 18) # Convert angle to duty cycle
GPIO.output(SERVO_PIN, True)
servo.ChangeDutyCycle(duty)
time.sleep(1)
GPIO.output(SERVO_PIN, False)
servo.ChangeDutyCycle(0)
try:
while True:
if GPIO.input(PIR_PIN): # Motion detected
print("Motion Detected!")
set_servo_angle(90) # Open door
time.sleep(5) # Delay before closing
else:
print("No motion, closing door.")
set_servo_angle(0) # Close door
time.sleep(1)
except KeyboardInterrupt:
print("Exiting program.")
GPIO.cleanup()