Raspberry Pi Pico で NeoPixel(RGB LED) をピカピカさせてみた

夏休みに入り、子供が電子工作で自由研究したいと言うので、
  • Raspberry Pi Pico
  • NeoPixel(RGB LED)のリング(12素子)
  • ブレッドボード
を買ってきていろいろとお試し中です。

プログラミング言語は子供にもわかりやすい micropython を選びました。

でと、NeoPixelを制御する方法をいろいろ調べていたのですが、どうも皆さん情報が古いようですね。

micropython を使うなら
NeoPixelのライブラリやアセンブラのコードは不要ですよ!!


というのも micropython には neopixel を制御するライブラリがすでに入っているからです。


なので、シンプルに


from machine import Pin
from neopixel import NeoPixel

# 12LED用の NeoPixel Ring を GPIO 22 で制御する
np = NeoPixelPin(22, Pin.OUT), 12)

np.fill((1, 1, 1)) # すべてのLEDを白に設定する
np.write() # 全LEDにデータ書込み(点灯)


とするだけで、簡単に NeoPixel(RGB LED)を光らせることができるんです。


もう少し書き足してみるとこうなりました。


from machine import Pin
from neopixel import NeoPixel
from time import sleep

try:

# 12LED用の NeoPixel Ring を GPIO 22 で制御する
np = NeoPixelPin(22, Pin.OUT), 12)

np.fill((1, 1, 1)) # すべてのLEDを白に設定する
np.write() # 全LEDにデータ書込み(点灯)
sleep(1)

np.fill((0, 0, 0)) # すべてのLEDを黒(消灯)に設定する

# 各LEDは配列でアクセスできる
np[0] = (1, 0, 0) # 第1LEDを赤に設定
np[2] = (0, 1, 0) # 第3LEDを緑に設定
np[4] = (0, 0, 1) # 第5LEDを青に設定
np[6] = (1, 0, 0) # 第1LEDを赤に設定
np[8] = (0, 1, 0) # 第3LEDを緑に設定
np[10] = (0, 0, 1) # 第5LEDを青に設定
np.write() # 全LEDにデータ書込み(点灯)

sleep(1)


finally:
# プログラム終了時の操作
np.fill((0, 0, 0)) # すべてのLEDを黒(消灯)に設定する
np.write() # 全LEDにデータ書込み(点灯)



以上、ご参考になれば幸いです。




参考:

"11. NeoPixel の制御 — MicroPython 1.19.1 ドキュメント"
https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/neopixel.html

NeoPixelライブラリのソースコード
"micropython/neopixel.py at master · micropython/micropython · GitHub"
https://github.com/micropython/micropython/blob/master/drivers/neopixel/neopixel.py



追記:(2022/08/02)

GitHubでコードを公開しました。
https://github.com/backy0175/pico-examples





Raspberry Pi Pico ラズベリーパイピコ マイコンRP2040(Arm Cortex-M0+デュアルコア@133MHz (1個)
Raspberry Pi Pico ラズベリーパイピコ マイコンRP2040(Arm Cortex-M0+デュアルコア@133MHz (1個)
Adafruit NeoPixel Ring 12連フルカラーシリアルLED 【1643】
Adafruit NeoPixel Ring 12連フルカラーシリアルLED 【1643】

この記事へのコメント