MAX7219 LED Dot Matrix Module を M5Stackから使いたい!せっかくだから、俺はこの赤い M5Stack FIRE で使ってみたい!
M5Stack FIREには、外部接続用の端子として、ポートA / ポートB / ポートC の3つのGROVE端子が付いています。
それぞれにはピン番号が割り振られ、ポートごとに役割が決まっている感じです。
ポートAはI2C(G21/G22)、ポートBはI/O(G26/G36、G36はINPUTのみ)、ポートCはUART(G16/G17)です。
この割り振りだと、汎用I/Oに仕えそうなのはポートBだけ。しかも、OUTPUTに使えるピンはG26ピンだけです。MAX7219 LED Dot Matrix Moduleを使うには、3本必要なので、繋ぐのは無理ですね…。
ポートAとポートCも、汎用の用途に使えないだろうかと、M5Stack FIRE買ってからいろいろ試してみていたのですが、結果としては、I2C用のポートAの2本、UART用のポートCの2本とも、汎用I/Oとして使うことができました。
I2Cの2本は、内部的に9軸センサモジュールMPU9250と繋がっているので、このピンを汎用I/Oで使うと、なんらかの誤動作を引き起こす可能性はあります。最悪、故障する可能性もなくは無いかと思います。UARTの方は…本来の目的に使ったことが無いので、正直よくわからないのですが、指定外の使い方なので、何か誤動作が起きるかもしれないです。
少なくとも、内蔵のMPU9250を使いたい時は、ポートAはI2Cとして使わないとダメでしょうね。
(画像は https://m5stack.github.io/m5-docs/#/en/product_documents/m5stack-core/m5core_fire より)
このあたりは「自分で楽しむだけなので、少々誤動作しても別にOK!最悪、壊れたとしても、そのときはそのとき!また買えばいい!」ぐらいの割り切った気持ちでやっております。
あと、上の図では、GROVEケーブルの色順が「黒・赤・黄・白」ですが、一般的なGROVEケーブルだと「黒・赤・白・黄」になってますので、注意してくださいー。
前置きが長かったですが、ということで、 ポートBのG26、ポートCの G16 / G17 を使って、MAX7219 LED Dot Matrix Module に繋いでみます!
接続したら、プログラムをピンに合わせて書き換え。
LedControl lc=LedControl(16,26,17,1);
これでコンパイルしてみたところ、「avr/pgmspace.h」が見つからないエラーが出ました。検索してみると事例が。
解決方法としては、LedControl.h の
#include <avr\pgmspace.h>
を
#if (defined(__AVR__)) #include <avr\pgmspace.h> #else #include <pgmspace.h> #endif
に変更。これでコンパイル成功しました。実行!
あっさりと動きましたー。
M5Stack Gray も、同じピンに繋いで動作できました!
コントロールできるようになったので、美咲フォント使って日本語表示してみます。
美咲フォントライブラリも、「avr/pgmspace.h」が見つからないエラーが出ますので、上と同じように修正しておきます。
#include "LedControl.h" #include <M5Stack.h> #include <misakiUTF16.h> LedControl lc=LedControl(16,26,17,1); byte buf[8]; void drawJPChar(char *pUTF8) { uint16_t pUTF16[256]; int strLength = 0; strLength = Utf8ToUtf16(pUTF16, pUTF8); for(int index = 0;index < strLength;index++){ getFontDataByUTF16(buf, utf16_HantoZen(pUTF16[index])); for(int i = 0;i < 8;i++){ lc.setRow(0, i, buf[i]); } delay(500); } } void setup() { M5.begin(); delay(1000); lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); drawJPChar("さらば愛しきルパンよ"); } void loop() { }
M5Stack から MAX7219 LED Dot Matrix Module をコントロールして、美咲フォントでの漢字表示。GROVEポートBのG26、ポートCのG16/G17での接続です。 pic.twitter.com/pySSMwqlcO
— Nochi (@shikarunochi) 2018年11月28日
♪ちゃららら~ん!テレッテレテレッテレッテッテッテー!