from machine import Pin, PWM # import dùng GPIO và PWM
from time import sleep # import delay
pir = Pin(16, Pin.IN) # PIR nối vào GPIO16, đọc tín hiệu
led = Pin(4, Pin.OUT) # LED nối vào GPIO4, xuất HIGH/LOW
servo = PWM(Pin(5), freq=50) # Servo nối vào GPIO5, tần số 50Hz
def set_servo(angle):
duty = int((angle / 180) * 90 + 30) # đổi góc 0-180 sang duty servo
servo.duty(duty)# xuất duty PWM điều khiển servo
set_servo(0) # ban đầu servo ở góc 0 (đóng)
led.off() # tắt LED lúc chưa có người
while True:
if pir.value() == 1: # PIR phát hiện chuyển động
led.on() # bật LED
set_servo(90) # servo quay 90 độ
sleep(0.15) # delay tránh nhiễu
else: # Không có người
led.off() # tắt LED
set_servo(0) # servo quay về góc 0
sleep(0.15) # delay tránh nhiễu
sleep(0.05) # vòng lặp chạy mỗi 50ms