メモメモ。
tl;dr
とりあえず、これが一番簡単そう。
from machine import Neopixel led_pin = 15 led_num = 10 leds = Neopixel(led_pin, led_num) for i in range(led_num): leds.set(i + 1, 0xff0000)
- ピンは15番っぽい
- LEDはNeoPixelのアレで、左右に5個ずつ、計10個ある
- LEDを光らせるにはひとつずつ
set()
していく - LEDの番号は0始まりではなく、なぜか1始まりっぽい
- 色はRGBをHEXで指定
LEDを光らせるには
公式のREADMEは多分これ。
サンプルとして載ってるコードはこちら。
import machine, time np = machine.Neopixel(machine.Pin(22), 24) def rainbow(loops=120, delay=1, sat=1.0, bri=0.2): for pos in range(0, loops): for i in range(0, 24): dHue = 360.0/24*(pos+i); hue = dHue % 360; np.setHSB(i, hue, sat, bri, 1, False) np.show() if delay > 0: time.sleep_ms(delay) def blinkRainbow(loops=10, delay=250): for pos in range(0, loops): for i in range(0, 24): dHue = 360.0/24*(pos+i); hue = dHue % 360; np.setHSB(i, hue, 1.0, 0.1, 1, False) np.show() time.sleep_ms(delay) np.clear() time.sleep_ms(delay)
setHSB()
してからshow()
するサンプルコード。RGB脳な自分にはちょっとアレなのですが、確かにこの方法でも色は変えられます。
setHSB()
で光らせてみる
実際にこんな感じでサンプルコードを動かしてみると、いい感じに光ります。
from machine import Neopixel led_pin = 15 led_num = 10 leds = Neopixel(led_pin, led_num) for i in range(led_num): leds.setHSB(i, 180, 1.0, 0.2, 1, False) leds.show()
ただし、左側面の一番左のLEDが光ってないです。なので、LEDの番号をひとつずらして、以下のようにするとちゃんと光ります。なんなんだろう。
from machine import Neopixel led_pin = 15 led_num = 10 leds = Neopixel(led_pin, led_num) for i in range(led_num): leds.setHSB(i + 1, 180, 1.0, 0.2, 1, False) leds.show()
たしかに、M5GOのサンプルコードも、LEDの番号が1-10になっているので、そういうものなのかもしれません。
set()
で光らせてみる
そうそう、M5GOのサンプルコードではset()
で色指定をしていたので、そっちも試してみたいと思います。
from machine import Neopixel led_pin = 15 led_num = 10 leds = Neopixel(led_pin, led_num) for i in range(led_num): leds.set(i + 1, 0xff0000)
はい、こちらは問題なく光らせることができました。set()
であれば、RGBで色指定ができます。ただし、Brightnessは指定できないので、別途brightness()
で指定する必要があります。引数は0-255っぽいです。
ほかにやり方はあるの?
11. Controlling NeoPixels — MicroPython 1.14 documentation
ESP8266向けのMicroPythonだと、こんな感じで色指定をしますが、これはM5Stackでは使えなさそうでした。
np[0] = (255, 0, 0) # set to red, full brightness np[1] = (0, 128, 0) # set to green, half brightness np[2] = (0, 0, 64) # set to blue, quarter brightness np.write()
というわけで、よいNeoPixelライフを。