Banggood で入手したLEDマトリックスの表示器でサンプルを動かすのにも苦労したので,ライブラリLEDMatrixDriverの使用法について記しておく.
物はこれ
https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in-1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=USA
・32×8ドットLEDマトリックス(1088AS 4つ使用) Max7219を使ったスタンダートなものです.
私が買ったときは¥453でした.
ネット上で検索するといくつかLEDマトリックスをドライブするライブラリが見つかるが,
ArduinoIDEの「ライブラリを管理..」メニューからライブラリマネージャでMax7219で検索すれば6個ほど候補が表示されるので,こちらを使うことにした.
この中からバージョンは0.2.2と低いが「LEDMatrixDriver」を選び,インストール.
LEDマトリックスをマイコンなどから駆動する場合,Max7219と1088ASの接続がデバイスによって異なっているため,その部分の設定を合わせなければならない.
下記の通り必要な設定をして,
const uint8_t LEDMATRIX_CS_PIN = 10; //チップセレクト(CS)をつないだArduinoのピン番号
// Number of 8x8 segments you are connecting
const int LEDMATRIX_SEGMENTS = 4; //1088ASの数
const int LEDMATRIX_WIDTH = LEDMATRIX_SEGMENTS * 8; //1088AS 1個当たりの横方向LEDの数が8.(通常は編集不要でしょうね)
さっそくスケッチ例から「LEDMatrixDriver-DrawSprites」を開き,書き込み・実行してみる.
が,表示はされるものの,なにかおかしい.
LEDマトリックスをスクロールする文字をしばらく眺めてみると,4つある1088ASの左右方向の配置が逆になっていることに気がついた.
ネット上で調べるもあまり日本語の情報がなく,LEDMatrixDriver.cppとLEDMatrixDriver.hppとにらめっこ...
で,
以下の通り LEDMatrixDriverのコンストラクタでオプショナルな引数を渡すことで設定できた.
サンプルのMarqueeTextはプログラムの変数宣言部の中で次のようにコンストラクタを呼んでいる
// The LEDMatrixDriver class instance
LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN);
このコンストラクタはオプションで第3,第4引数を渡すことが可能なので,次のようにする.
// The LEDMatrixDriver class instance
LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN, 2);
第3引数の意味は,LEDMatrixDriver.hppの中に書いてあり
const static uint8_t INVERT_SEGMENT_X = 1; //各1088ASでの左右表示反転(鏡文字になります)
const static uint8_t INVERT_DISPLAY_X = 2; //1088ASの左右の並びを反転
const static uint8_t INVERT_Y = 4; //上下反転
ビットマスクした整数をfragとして使う.
ちなみに第4引数はフレームバッファのポインタを渡せますが,あまり使うことはないかも.
お名前を見るとライブラリ作成者さんはロシア系の方でしょうかね.
ネット上でもロシア語の情報が散見されました.
ちなみにフォントはプロポーショナルではなく等幅です.記号とアルファベット大文字のみとなっています.
プロポーショナル・フォントを使いたい場合は次のライブラリを使用
https://qiita.com/Lathe/items/4d8fc9145053106bba1f
引用サイト
https://github.com/bartoszbielawski/LEDMatrixDriver
https://www.youtube.com/watch?v=GfHsCDpe6q0