from machine import Pin, ADC, PWM
import time
# --- 1. 初始化硬體配置 ---
# MQ2 氣體感測器 (類比訊號)
mq2 = ADC(26)
# 指示燈
red_led = Pin(14, Pin.OUT)
green_led = Pin(15, Pin.OUT)
# 蜂鳴器
buzzer = PWM(Pin(16))
buzzer.duty_u16(0) # 初始設定為靜音
print("系統啟動:智慧廚房安全監測中...")
# --- 2. 系統主邏輯 ---
while True:
# 讀取 MQ2 感測器數值
# MicroPython 的 read_u16 範圍是 0-65535,我們將其右移 4 位元轉換為 12-bit (0-4095) 數值
sensor_value = mq2.read_u16() >> 4
if sensor_value < 1000:
# --- 狀態:安全 (SAFE) ---
print(f"當前瓦斯/煙霧濃度 (12bit sim): {sensor_value}")
green_led.value(1) # 綠色 LED 恆亮
red_led.value(0) # 紅色 LED 熄滅
buzzer.duty_u16(0) # 蜂鳴器不發聲
time.sleep(1) # 每隔 1 秒讀取一次
else:
# --- 狀態:警告 (WARNING) ---
print(f"當前瓦斯/煙霧濃度 (12bit sim): {sensor_value}")
print(">> 狀態:警告!瓦斯外洩或有煙霧!")
green_led.value(0) # 綠色 LED 熄滅
# 警報反應:紅色 LED 與蜂鳴器以 10Hz 頻率同步閃爍/發聲
# 10Hz 代表一個週期是 0.1 秒 (開 0.05s / 關 0.05s)
# 為了維持主系統約每 1 秒讀取一次感測器的節奏,我們在此循環 10 次 (10 * 0.1s = 1s)
for _ in range(10):
# 開啟警報
red_led.value(1)
buzzer.freq(2500) # 設定高頻尖銳的聲音
buzzer.duty_u16(32768) # 50% 工作週期發出最大音量
time.sleep(0.05)
# 關閉警報
red_led.value(0)
buzzer.duty_u16(0) # 靜音
time.sleep(0.05)