import adafruit_dht
import time
import board
import pwmio #forda buzzer
import busio
import digitalio
import adafruit_character_lcd.character_lcd_i2c as character_lcd #forda lcd
#setting lcd pins
lcd_rs = digitalio.DigitalInOut(board.GP22)
lcd_en = digitalio.DigitalInOut(board.GP18)
lcd_d7 = digitalio.DigitalInOut(board.GP16)
lcd_d6 = digitalio.DigitalInOut(board.GP17)
lcd_d5 = digitalio.DigitalInOut(board.GP19)
lcd_d4 = digitalio.DigitalInOut(board.GP20)
SENSOR = adafruit_dht.DHT22 #sets sensor
crit_h = 50 #set critical humidity
crit_t = 50 #set critical temp
BUZZER = pwmio.PWMOut(board.GP6, variable_frequency=True) #sets buzzer
OFF = 0
ON = 2**15
dhtDevice = adafruit_dht.DHT22(board.GP13)
while True:
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
if humidity is not None and temperature_c is not None:
print("Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format(temperature_f, temperature_c, humidity))
lcd = character_lcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, 16, 2)
lcd.message = "TEMP: " + str(temperature_f) + "\nHUMIDITY: " + str(humidity)
if humidity > crit_h and temperature_c > crit_t:
BUZZER.duty_cycle = ON
BUZZER.frequency = 262
else:
BUZZER.duty_cycle = OFF
else:
print("NO DATA")
time.sleep(2.0)