from machine import Pin, PWM
from time import sleep
from dht import DHT22
relay_pin = Pin(16, Pin.OUT, Pin.PULL_DOWN)
dht_pin = DHT22(Pin(27))
buzzer_pin = PWM(Pin(28))
buzzer_pin.freq(3000)
buzzer_pin.duty_u16(0)
t = None
h = None
def Relay_and_buzzer_control():
global t, h
try: #تلاش برای اجرای کد
dht_pin.measure() #خواندن دادههای دما و رطوبت
t = dht_pin.temperature() #دریافت دما
h = dht_pin.humidity() #دریافت رطوبت
if t >= 34: #چک کردن دما و فعال کردن بیزر در صورت بالا بودن اون
print(f"Error! dama is ({t})c !!")
for up in range(0,65535,5000):
buzzer_pin.duty_u16(up)
sleep(0.01)
else: #خاموش کردن بیزر و رله در صورت نرمال بودن دما و رطوبت
buzzer_pin.duty_u16(0)
if h >= 60: #چک کردن رطوبت و فعال کردن رله در صورت بالا بودن اون
print(f"Error! rotobat is ({t})c !!")
relay_pin.on()
else: #خاموش کردن بیزر و رله در صورت نرمال بودن دما و رطوبت
relay_pin.off()
except Exception as e:
#مدیریت خطا در صورتی که خواندن سنسور با مشکل مواجه بشه
print("Error measuring temperature or humidity from DHT22!!! : ", e)
sleep(1)
while True:
Relay_and_buzzer_control()
if t is not None and h is not None: #بررسی خالی نبودن متغیرها و درصورت خالی نبودن مقادیر چاب میشن
print(f"Temperature: {t}°C, Humidity: {h}%\n")
sleep(1)