Androidのメモとか

ポキオの日記です。今日も遅延してない。

M5Stack FIREのLEDをMicroPythonで光らせたときのメモ

メモメモ。

ポキオ M5STACK FIRE LED MicroPython

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は多分これ。

github.com

サンプルとして載ってるコードはこちら。

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()

ポキオ M5STACK FIRE LED MicroPython

ただし、左側面の一番左の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ライフを。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。