メリークリスマス!
M5Stack主催のクリスマスコンテストが開催されていたので、参加してみることにしました。
twitter.com🎄🎄🎄M5Stack Christmas Contest🌟🌟🌟
— M5Stack (@M5Stack) 2022年12月9日
Christmas is coming! Light up your Christmas with M5Stack!🎊✨🌼
Join our contest according to the rules in the picture to win your gift card and ATOM S3🎁🎀🎈
At the same time, you can enjoy benefits via https://t.co/By4WVWNv98 🏄🎪🔔 pic.twitter.com/YvKVr0uxfb
M5Stack製品でクリスマスをライトアップするものを作って、ハッシュタグ#M5StackXmas2022をつけてSNSでシェアするというお題です。
何をつくろう?
コンテストに気づいたときには、もう締め切り1週間を切っていたので、手持ちの材料でできるものを考えることにしました。
「何かいいものあったかなー」とぼんやり考えていると、そういえばつい最近、MAX7219をM5 ATOMでドライブしたことを思い出しました。
そうそう、M5 ATOMでもちゃんと電源を電源ピンに繋いだらなんの問題もなく動いた
— アツユキ (@aaa_tu) 2022年12月15日
直挿しするためにGPIOをGND代わりに使っだもんだから、電源品質が激悪ゆえのグリッチィだったんなだなー
とはいえ、そのおかげでイケてるノイズエフェクトを作ることができたわけだから結果オーライということで pic.twitter.com/rhnm125bUN
お、これは使えそうだぞ!
あんまり考えている時間もないので、とにかく手を動かすことにします。
図案をつくる
まずは8x32のキャンバスに、こんなピクセルアートを描きました。
これをMicroPythonで扱えるように、フレームバッファデータに変換します。
使うのはこのMicropython Bitmap Tool、画像を読み込ませるとフレームバッファのPythonコードに変換してくれる便利ツールです。
これに先ほどのピクセルアートを読み込ませるとこうなります。
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に差し替えました。
MAX7219モジュールをひとマスだけ付け替えて pic.twitter.com/dI8EWRM6Us
— アツユキ (@aaa_tu) 2022年12月20日
そうしたら、このようにM5 ATOMと結線します。
M5 Atomを繋いで pic.twitter.com/pGT28c3r2y
— アツユキ (@aaa_tu) 2022年12月20日
MAX7219 M5 ATOM VCC ------ 5V GND ------ G DIN ------ 19 CS ------ 23 CLK ------ 33
ソフトを仕上げる
あとは、フレームバッファを表示するプログラムを用意します。
方法はこの記事と同じですが、ピン番号をM5 ATOMに合わせて変えてあります。
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()
点灯式
サムネイルがネタばらしになってますが、ちょっと仕掛けということで、写り込みのするツルツルした面に貼り付けて
ツルツルなところに貼り付けたら準備は終わり
— アツユキ (@aaa_tu) 2022年12月20日
電源を入れると... pic.twitter.com/8je1dvTPyi
点いたー!🎄
どうでしょうか、控えめながらも存在感があって、なかなか良い感じじゃないでしょうか?
無事にコンテストの応募にまにあわせることができました、入賞すると良いな〜。
それでは、素敵なクリスマスをお過ごしください🎅