from machine import Pin, PWM
import time
import onewire, ds18x20
# 設定RGB LED連接的GPIO腳位
red_pin = PWM(Pin(2, Pin.OUT))
green_pin = PWM(Pin(4, Pin.OUT))
blue_pin = PWM(Pin(5, Pin.OUT))
# 設定DS18B20連接的GPIO腳位
ds18b20_pin = Pin(14)
# 創建DS18B20物件
ds = ds18x20.DS18X20(onewire.OneWire(ds18b20_pin))
# 搜索並列舉DS18B20裝置
roms = ds.scan()
# 函數來控制RGB LED的顏色
def set_rgb_color(red, green, blue):
red_pin.duty(int(red * 1023 / 255)) # 設定紅色通道的占空比
green_pin.duty(int(green * 1023 / 255)) # 設定綠色通道的占空比
blue_pin.duty(int(blue * 1023 / 255)) # 設定藍色通道的占空比
# 讀取溫度的函數
def read_temperature():
ds.convert_temp()
time.sleep_ms(750) # 等待轉換完成
return ds.read_temp(roms[0])
try:
while True:
temperature = read_temperature()
if temperature < 10:
set_rgb_color(0, 0, 255) # 亮藍燈
elif 10 <= temperature <= 30:
set_rgb_color(0, 255, 0) # 亮綠燈
else:
set_rgb_color(255, 0, 0) # 亮紅燈
time.sleep(1)
except KeyboardInterrupt:
# 在使用CTRL+C結束程式時,將RGB LED關閉
set_rgb_color(0, 0, 0)