サンプル – NeoPixel 編 - renesas/micropython GitHub Wiki

- NeoPixel Ring - 12連フルカラーシリアルLEDを赤、緑、青、白色に点灯します。
from ws2812 import WS2812
chain = WS2812(spi_bus=1, led_count=12)
data = [
(255, 0, 0), # red
(0, 255, 0), # green
(0, 0, 255), # blue
(85, 85, 85), # white
(255, 0, 0), # red
(0, 255, 0), # green
(0, 0, 255), # blue
(85, 85, 85), # white
(255, 0, 0), # red
(0, 255, 0), # green
(0, 0, 255), # blue
(85, 85, 85), # white
]
chain.show(data)

-
予め、ampy などでws2812.pyをボードにUploadしておくか、 ws2812.pyの内容をコピー&ペーストなどで実行してください。オリジナルファイルは、https://github.com/JanBednarik/micropython-ws2812 にあります。
-
EK-RA6M2の場合、以下のように接続します。
NeoPixel-PIN EK-RA6M2-PIN DataIn P101 GND GND VCC 5V -
RA4M1 Clickerの場合、以下のように接続します。
NeoPixel-PIN RA4M1 Clicker-PIN DataIn P101 GND GND VCC 5V
NeoPixelドライバの補足
- オリジナルは、https://github.com/JanBednarik/micropython-ws2812 SPIの1クロックをNeoPixelのLowパルス、2クロックをHighパルスに割り当て、4クロックで1ビットを表現し、ソフト処理、割り込みで波形が乱れないようにDMAで送信しています。
- 本実装では、DMAは使用せず、エンコード方法を踏襲し、4クロックで1ビットを表現し、SPIの32ビット転送で1バイトデータを転送しています。

- 01010101の1バイトデータを送信する際の波形