from machine import Pin, ADC, PWM
import time
# Khởi tạo các phần cứng
ldr = ADC(Pin(34))
led = Pin(12, Pin.OUT)
servo_pin = Pin(14)
servo = PWM(servo_pin, freq=50)
# Xác định ngưỡng giá trị LDR. Nếu giá trị LDR thấp hơn ngưỡng này, cửa sẽ được mở.
threshold = 1000
# Hàm này chuyển đổi góc độ (0-180 độ) thành giá trị duty cycle thích hợp cho servo.
def set_angle(angle):
duty = int((angle / 180 * 102) + 26)
servo.duty(duty)
# Hàm này sử dụng set_angle để mở cửa (90 độ) trong 2 giây, sau đó đóng cửa (0 độ).
def open_door():
set_angle(90)
time.sleep(2)
set_angle(0)
while True:
# Đọc giá trị từ cảm biến LDR.
ldr_value = ldr.read()
print('LDR:', ldr_value)
# Nếu giá trị LDR nhỏ hơn ngưỡng thì bật LED và gọi hàm open_door() để mở cửa
if ldr_value < threshold:
led.on()
open_door()
# Ngược lại thì tắt đèn
else:
led.off()
time.sleep(1) # Delay trong 1 giây