M5Stackクリスマスコンテストに応募した話―M5 ATOMとMAX7219モジュールでつくるクリスマスイルミネーション―

メリークリスマス!

M5Stack主催のクリスマスコンテストが開催されていたので、参加してみることにしました。

twitter.com

M5Stack製品でクリスマスをライトアップするものを作って、ハッシュタグ#M5StackXmas2022をつけてSNSでシェアするというお題です。

何をつくろう?

コンテストに気づいたときには、もう締め切り1週間を切っていたので、手持ちの材料でできるものを考えることにしました。

「何かいいものあったかなー」とぼんやり考えていると、そういえばつい最近、MAX7219をM5 ATOMでドライブしたことを思い出しました。

お、これは使えそうだぞ!

あんまり考えている時間もないので、とにかく手を動かすことにします。

図案をつくる

まずは8x32のキャンバスに、こんなピクセルアートを描きました。

これをMicroPythonで扱えるように、フレームバッファデータに変換します。

使うのはこのMicropython Bitmap Tool、画像を読み込ませるとフレームバッファのPythonコードに変換してくれる便利ツールです。

luckyresistor.me

これに先ほどのピクセルアートを読み込ませるとこうなります。

fb = framebuf.FrameBuffer(bytearray(
    b'\xff\xfe\xfc\xf8\xfe\xfc\xf8\xf0\xfc\xf8\xf0\xe0\xf8\xf0\xe0\xc0\xf0\xe0\xc0\x80\xe0\xc0\x80\x80\x20\xc0\xc0\xc0\xe0\xf0\x80\x80'),
    32, 8, framebuf.MONO_VLSB)

ハードウェアをつくる

次はハードウェアの準備です。

使うのは、緑色のドットマトリックスLEDが4つ付いたMAX7219モジュールです。

星の部分だけは色を変えたいので、たまたま手元にあった白色のドットマトリックスLEDに差し替えました。

そうしたら、このようにM5 ATOMと結線します。

MAX7219     M5 ATOM
VCC ------ 5V
GND ------ G
DIN ------ 19
CS ------ 23
CLK ------ 33

ソフトを仕上げる

あとは、フレームバッファを表示するプログラムを用意します。

方法はこの記事と同じですが、ピン番号をM5 ATOMに合わせて変えてあります。

www.creativity-ape.com

from machine import Pin, SPI
import max7219
import framebuf

spi = SPI(2,sck=Pin(33),mosi=Pin(19))
cs = Pin(23, Pin.OUT)

num_of_matrix = 4

fb = framebuf.FrameBuffer(bytearray(
    b'\xff\xfe\xfc\xf8\xfe\xfc\xf8\xf0\xfc\xf8\xf0\xe0\xf8\xf0\xe0\xc0\xf0\xe0\xc0\x80\xe0\xc0\x80\x80\x20\xc0\xc0\xc0\xe0\xf0\x80\x80'),
    32, 8, framebuf.MONO_VLSB)

display = max7219.Matrix8x8(spi,cs,num_of_matrix)
display.brightness(10)
display.fill(0)
display.blit(fb,0,0)
display.show()

点灯式

サムネイルがネタばらしになってますが、ちょっと仕掛けということで、写り込みのするツルツルした面に貼り付けて

点いたー!🎄

どうでしょうか、控えめながらも存在感があって、なかなか良い感じじゃないでしょうか?

無事にコンテストの応募にまにあわせることができました、入賞すると良いな〜。

それでは、素敵なクリスマスをお過ごしください🎅