STEM|使用 Raspberry Pi Pico 組合一個聲控的 WS2812B LED 閃燈系統
使用 Raspberry Pi Pico 組合一個聲控的 WS2812B LED 閃燈系統。這需要結合幾個組件和一些編程來實現聲音控制功能。下面是實現這個系統的基本步驟和所需的元件:
所需元件:
Raspberry Pi Pico
WS2812B LED 燈帶
聲音傳感器(例如 KY-038 或類似的聲音檢測模塊)
必要的連接線
電源(例如 USB 電源或適配器)
基本步驟:
設置開發環境: 你可以使用 MicroPython 或 C/C++ 來編寫控制程序。本文主要以 MicroPython 為例,因為它相對簡單且易於上手。
首先,下載並安裝 MicroPython 固件到 Raspberry Pi Pico。你可以從 Raspberry Pi 官網 下載固件,並按照說明將其燒錄到 Pico 上。
連接硬件:
將 WS2812B LED 燈帶連接到 Raspberry Pi Pico 的 GPIO 引腳。通常需要連接三條線:電源 (5V)、地 (GND) 和數據線(可以選擇任一 GPIO 引腳,例如 GPIO 16)。
將聲音傳感器的數據輸出引腳連接到 Raspberry Pi Pico 的一個 GPIO 引腳(例如 GPIO 15)。同時,連接聲音傳感器的電源和地線。
編寫 MicroPython 代碼: 你需要一個驅動程序來控制 WS2812B LED 燈帶。你可以使用 neopixel 庫,它是專門為這種 LED 燈帶設計的。確保你已經安裝了這個庫。
import machine import neopixel import utime # 設置 WS2812B num_leds = 8 # 根據你的 LED 燈帶數量調整 pin = machine.Pin(16, machine.Pin.OUT) np = neopixel.NeoPixel(pin, num_leds) # 設置聲音傳感器 sound_sensor = machine.Pin(15, machine.Pin.IN) def clear_leds(): for i in range(num_leds): np[i] = (0, 0, 0) np.write() def flash_leds(): for i in range(num_leds): np[i] = (255, 0, 0) # 紅色,可以根據需要更改顏色 np.write() utime.sleep(0.1) clear_leds() utime.sleep(0.1) clear_leds() # 初始化清空 LED while True: if sound_sensor.value() == 1: # 檢測到聲音 flash_leds() utime.sleep(0.01) # 防止佔用過多 CPU 資源 |
上面的代碼會在檢測到聲音時閃爍 WS2812B LED 燈帶。聲音傳感器的輸出引腳連接到 Pico 的 GPIO 15,引腳檢測到高電平(聲音信號)時觸發 LED 閃爍。
運行和測試:
將代碼上傳到 Raspberry Pi Pico,並在 Pico 上運行。你可以使用 Thonny IDE 來進行編輯和上傳。
測試聲音傳感器的靈敏度,調整其閾值電位器(如果有)以確保能夠準確檢測到聲音。
確保 LED 燈帶和聲音傳感器都正常工作,並根據需要調整代碼中的參數,例如 LED 顏色和閃爍時間。
小提示:
根據你的具體應用需求,你可能需要進一步優化代碼,例如增加噪音過濾、調整閃爍模式等。
確保 LED 燈帶的電源供應充足,特別是在使用長燈帶時,可能需要額外的外部電源。
構建一個聲控的 WS2812B LED 燈帶系統,這可以應用在各種場景,如音樂律動燈光效果、聲控裝飾燈等。
Commentaires