from machine import Pin, ADC, PWM
import dht, time
# --- Initialize ---
sensor = dht.DHT22(Pin(16)) # Use DHT22
ldr = ADC(26)
servo = PWM(Pin(15))
led = Pin(14, Pin.OUT)
servo.freq(50)
def set_angle(angle):
min_duty = 1638 # 0.5ms
max_duty = 8192 # 2.5ms
duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
servo.duty_u16(duty)
while True:
# --- Read DHT22 safely ---
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
except OSError:
temp = None
hum = None
print("DHT22 read error")
# --- Read LDR ---
light = ldr.read_u16()
# --- Servo Control ---
if temp is not None:
if temp > 30:
set_angle(90)
print("Vent Open - High Temp")
else:
set_angle(0)
print("Vent Closed - Temp Normal")
# --- LED Control ---
if light < 30000:
led.value(1)
print("LED ON - Low Light")
else:
led.value(0)
print("LED OFF - Bright Light")
print(f"Temp: {temp}, Humidity: {hum}, Light: {light}")
print("-----------------------------")
time.sleep(5)