top of page

WaveShareのRaspberry Pi Pico用16×10RGB Matrix LEDでoffical Documentationのpio_ws281.pyをベースに自由に点滅させてみました。

WaveShare製のRaspberry Pi Pico用16×10 RGB Matrix LEDでoffical DocumentationのRaspberry Pi Pico Python SDKにあるpio_ws281.pyをベースに自由に点滅させてみました。


メーカーのサポートページは下記のURLです。




まず、通常の方法でMicroPythonのファームウェアをセットアップします。

設定方法は下記のURLに記載されています。


また、当ブログでは下記の記事に記載しています。



次に、開発環境の設定していない場合は設定します。

当ブログでは下記の記事に記載しています。



準備が整ったらUSBケーブルをコンピューターに接続します。

おそらく、BOOTSELボタンを押しながら起動するのは初期設定のときのみで、

普段は普通の接続で大丈夫そうです。 


Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。

これは、右下のボックスをクリックして行うことができます。



Raspberry Pi Picoの準備ができたら、プログラムを用意します。

Raspberry Pi Pico Python SDKのURLは下記の通りで、参照するのは3.9.2. WS2812 LED (NeoPixel)になります。

また、pio_ws2812.pyが記載されているGitHubへの直リンクは下記になります。

なお、今回プログラムを動かすにあたり、マルツの下記のページに大変お世話になりました。


pio_ws2812.pyをThonnyにコピペしたら、参照するプログラムは1列8個版の向けに作成されているため、8行目のNUM_LEDSを下記の通りに修正します。

NUM_LEDS = 160

また、27行目のsideset_base=Pin(22)を下記の通りに修正します。

sideset_base=Pin(6)


マルツのページによると、35行目以降を変更することによって自由に光らせることができ、arという配列変数にカスケードされた数分のRGBの輝度情報をセットして、関数sm.put(ar, 8) を実行することにより、光らせることができます。


ar[0] = g0 * 65536 + r0 * 256 + b0  

ar[1] = g1 * 65536 + r1 * 256 + b1  

sm.put(ar, 8)


※gi, ri, bi は、0~255の整数


と記載がされているので、この情報をもとに点滅のパターンを考えていきます。



パターン1 水平方向に点滅させる。


35行目以降のプログラムは下記の通り作成しました。

※プログラミングは専門外なので、きれいなプログラムでないかもです。

# color

g0=0 # Color 0~255 green

r0=10 # Color 0~255 red

b0=10 # Color 0~255 blue


for i in range(16): #0~15

n = 16*0+i

ar[n] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(50)


for j in range(9): #0~8

for i in range(16): #0~15

ar[16*(j+1)+i] = g0 * 65536 + r0 * 256 + b0

ar[16*j+i] = 0

sm.put(ar, 8)

time.sleep_ms(50)



パターン2 垂直方向に点滅させる。


35行目以降のプログラムは下記の通り作成しました。

※プログラミングは専門外なので、きれいなプログラムでないかもです。

# color

g0=10 # Color 0~255 green

r0=10 # Color 0~255 red

b0=10 # Color 0~255 blue


for i in range(10): #0~9

n = 16*i+0

ar[n] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(50)


for j in range(15): #0~14

for i in range(10): #0~9

n = 16*i+j

ar[n] = 0

ar[n+1] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(50)



パターン3 長方形に点滅させる。


35行目以降のプログラムは下記の通り作成しました。

※プログラミングは専門外なので、きれいなプログラムでないかもです。

# color

g0=10 # Color 0~255 green

r0=0 # Color 0~255 red

b0=10 # Color 0~255 blue


for i in range(0,10):

n1 = 16*i+0

ar[n1] = g0 * 65536 + r0 * 256 + b0

n2 = 16*i+15

ar[n2] = g0 * 65536 + r0 * 256 + b0

for j in range(0,16):

n3 = 16*0+j

ar[n3] = g0 * 65536 + r0 * 256 + b0

n4 = 16*9+j

ar[n4] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(100)


for k in range(4):

for i0 in range(k,10-k):

n10 = 16*i0+k

ar[n10] = 0

n20 = 16*i0+15-k

ar[n20] = 0

for j0 in range(k,16-k):

n30 = 16*k+j0

ar[n30] = 0

n40 = 16*(9-k)+j0

ar[n40] = 0

for i in range(k+1,10-(k+1)):

n1 = 16*i+(k+1)

ar[n1] = g0 * 65536 + r0 * 256 + b0

n2 = 16*i+(15-(k+1))

ar[n2] = g0 * 65536 + r0 * 256 + b0

for j in range(k+1,15-(k+1)):

n3 = 16*(k+1)+j

ar[n3] = g0 * 65536 + r0 * 256 + b0

n4 = 16*(9-(k+1))+j

ar[n4] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(100)

for i in range(4,6):

n1 = 16*i+4

ar[n1] = 0

n2 = 16*i+(15-4)

ar[n2] = 0

for j in range(4,11):

n3 = 16*4+j

ar[n3] = 0

n4 = 16*(9-4)+j

ar[n4] = 0

sm.put(ar, 8)

time.sleep_ms(100)



パターン4 斜め方向に点滅させる。


35行目以降のプログラムは下記の通り作成しました。

※プログラミングは専門外なので、きれいなプログラムでないかもです。

# color

g0=10 # Color 0~255 green

r0=10 # Color 0~255 red

b0=0 # Color 0~255 blue


#1-10

for i in range(9):

for m in range(i+1):

ar[16*m+(i-m)] = g0 * 65536 + r0 * 256 + b0

for n in range(i):

ar[16*n-1+(i-n)] = 0

sm.put(ar, 8)

time.sleep_ms(50)


for i in range(9):

ar[16*i+(9-1-i)] = 0

sm.put(ar, 8)

time.sleep_ms(50)


#11-17

for j in range(6): #0~5

for i in range(10): #0~9

n = 16*i+(9-i)+j

ar[n] = 0

ar[n+1] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(50)


#18-26

for i in reversed(range(0, 9)):

for m in range(i+2):

ar[16*(9-m)+m+(15-(i+1))] = 0

for n in range(i+1):

ar[16*(9-n)+n+(15-i)] = g0 * 65536 + r0 * 256 + b0

sm.put(ar, 8)

time.sleep_ms(50)


ar[16*9+0+15] = 0

sm.put(ar, 8)

time.sleep_ms(50)



1日考えただけでも、これだけのパターンを考えることができたので、時間があるときにまた違ったパターンにチャレンジしてみたいと思います。









閲覧数:19回

Comentarios


bottom of page