樹莓派Pico W控制四線風(fēng)扇
用來給房間內(nèi)排氣,3D打印機(jī)打ABS的味道太大了
mos管模塊(PWM引腳接Pico定義的引腳此用例為GPIO18) 微動(dòng)開關(guān)一個(gè) (單擊調(diào)速此用例為GPIO13) 樹莓派 Pico W 一個(gè) 可調(diào)降壓模塊一個(gè)(給樹莓派供電) from machine import Pin, PWM import utime # 設(shè)置風(fēng)扇和按鈕的 GPIO 引腳 FAN_GPIO = 18 BUTTON_GPIO = 13 # 設(shè)置風(fēng)扇和按鈕的 GPIO 引腳 fan = PWM(Pin(FAN_GPIO)) button = Pin(BUTTON_GPIO, Pin.IN, Pin.PULL_UP) # 初始化 PWM 的頻率,frequency=50Hz? fan.freq(50) # 定義一個(gè)數(shù)組來存儲(chǔ)不同的占空比 duties = [25, 50, 75, 100] # 定義一個(gè)變量來存儲(chǔ)當(dāng)前的占空比索引 index = 0 # 定義一個(gè)變量來存儲(chǔ)上一次點(diǎn)擊按鈕的時(shí)間 last_click_time = 0 # 定義一個(gè)變量來存儲(chǔ)上一次改變狀態(tài)的時(shí)間 last_change_time = 0 # 定義一個(gè)函數(shù)來處理按鈕點(diǎn)擊事件 def button_callback(pin): ??global index ??global last_click_time ??global last_change_time ??# 獲取當(dāng)前時(shí)間 ??current_time = utime.ticks_ms() ??# 如果兩次點(diǎn)擊間隔小于0.5秒,則關(guān)閉風(fēng)扇 ??if utime.ticks_diff(current_time, last_click_time) < 500: ????# 防抖動(dòng):確保兩次狀態(tài)改變之間的間隔大于1秒 ????if utime.ticks_diff(current_time, last_change_time) > 1000: ??????fan.duty_u16(0) ??????last_change_time = current_time ??else: ????# 否則,切換到下一個(gè)占空比 ????index = (index + 1) % len(duties) ????fan.duty_u16(int(duties[index] / 100 * 65535)) ????last_change_time = current_time ??# 更新上一次點(diǎn)擊按鈕的時(shí)間 ??last_click_time = current_time # 添加一個(gè)事件檢測(cè)器來監(jiān)聽按鈕的點(diǎn)擊事件 button.irq(trigger=Pin.IRQ_FALLING, handler=button_callback) # 開始 PWM fan.duty_u16(int(duties[index] / 100 * 65535)) # 主循環(huán) while True: ??utime.sleep(1)