--->>> 예제 : dht11_control.py <<<----------------------------------
import adafruit_dht # DHT11 라이브러리
import board # GPIO 핀 이름 모듈
from gpiozero import LED # LED 제어를 위한 gpiozero
from time import sleep # 대기 함수
# 장치 초기화
dht = adafruit_dht.DHT11(board.D4) # DHT11 센서 (GPIO 4)
warning_led = LED(27) # 경고 LED (GPIO 27)
TEMP_THRESHOLD = 28 # 경고 온도 임계값 (°C)
def read_dht11():
"""DHT11 값을 읽어 (온도, 습도) 반환합니다."""
for _ in range(5):
try:
temp = dht.temperature
hum = dht.humidity
if temp is not None and hum is not None:
return temp, hum
except RuntimeError:
pass
sleep(1)
return None, None
print(f"온도 모니터링 시작 (경고 임계값: {TEMP_THRESHOLD}°C)")
try:
while True:
temp, hum = read_dht11()
if temp is not None:
print(f"온도: {temp}°C | 습도: {hum}%", end="")
if temp >= TEMP_THRESHOLD:
warning_led.on() # 임계값 이상이면 경고 LED 켜기
print(f" [경고] 온도 높음!")
else:
warning_led.off() # 정상이면 LED 끄기
print(" [정상]")
else:
print("센서 읽기 실패")
sleep(3) # 3초 간격으로 측정
except KeyboardInterrupt:
print("\n종료합니다.")
warning_led.off() # 종료 시 LED 끄기
finally:
dht.exit() # 센서 자원 해제