from machine import Pin
import time
import math
from neopixel import Neopixel
# 設定硬體參數
LED_PIN = 13 # NeoPixel 矩陣的資料輸入腳位
MATRIX_WIDTH = 8 # 矩陣寬度
MATRIX_HEIGHT = 8 # 矩陣高度
NUM_PIXELS = MATRIX_WIDTH * MATRIX_HEIGHT # LED 總數
# 定義彩虹顏色生成函數
def wheel(WheelPos):
"""生成彩虹顏色。pos 範圍為 0-255"""
if WheelPos < 85:
return (WheelPos * 3, 255 - WheelPos * 3, 0)
elif WheelPos < 170:
WheelPos -= 85
return (255 - WheelPos * 3, 0, WheelPos * 3)
else:
WheelPos -= 170
return (0, WheelPos * 3, 255 - WheelPos * 3)
# 定義彩虹波紋效果
def rainbow_wave(wait_ms=50):
"""在矩陣上顯示彩虹波紋效果"""
for j in range(256): # 彩虹循環
for i in range(NUM_PIXELS):
pixel_index = (i * 256 // NUM_PIXELS) + j
color = wheel(pixel_index & 255)
matrix.set_pixel(i, color)
matrix.show() # 更新 LED 顯示
time.sleep_ms(wait_ms)
# Start Function
if __name__ == '__main__':
# 初始化 NeoPixel
matrix = Neopixel(NUM_PIXELS, 0, LED_PIN, "GRB")
# 主程式
try:
print('NeoPixel LED 特效')
while True:
rainbow_wave(wait_ms=20) # 持續顯示彩虹波紋
except KeyboardInterrupt:
# 清除 LED 顯示
print('清除 LED 顯示')
matrix.fill((0, 0, 0))
matrix.write()