Home Made Garbage

Adafruit NeoMatrixライブラリを堪能

お父ちゃん お父ちゃん  2018.11.8 
ホーム
電子工作
Raspberry Pi
IOT
WEB

前回、LEDマトリクスをDMA駆動で光らせてみたのですが、LEDマトリクス用のライブラリが便利だったので改めて色々試してみました。

DMA駆動でLチカ ~Adafruit Itsy Bitsy M0 Express~

構成

 LEDデータ入力はデジタル5ピン。電源はVhiピンを接続。

部品

Adafruit Itsy Bitsy M0 Expressについての詳細は以下参照ください。

Adafruit ItsyBitsy M0 Express で目ん玉ペンダント

Arduinoライブラリ

LEDマトリクス点灯のために以下3つのライブラリを使用します。

  1. グラフィックをディスプレイに表示するためのライブラリ
    https://github.com/adafruit/Adafruit-GFX-Library
     
  2. NeoPixel用ライブラリ
    https://github.com/adafruit/Adafruit_NeoPixel
     
  3. NeoPixelマトリクス用ライブラリ
    https://github.com/adafruit/Adafruit_NeoMatrix

    前回使用したDMA駆動用のNeoPixelマトリクスライブラリもあります。
     https://github.com/adafruit/Adafruit_NeoMatrix_ZeroDMA
    ここでは、通常のマトリクスライブラリを使用しました。

文字スクロール

Arduinoコード

マトリクスライブラリのプログラム例のmatrixtest.pdeを参考に、”Hello”とスクロール表示します。

8〜11行目でマトリクスのサイズや始点や配置方向を指定してます。

第1、第2引数:マトリクスの幅と高さを指定します。ここでは8✕8のLEDマトリクスを使用しますので、それぞれ8とします。

第3引数:Neopixelの入力ピンを指定。ここではデジタル5ピン。

第4引数:マトリクスの始点と配置方法を指定します。
最初のLEDピクセルは4つのコーナーの1つにある必要があります。 始点はNEO_MATRIX_TOPまたはNEO_MATRIX_BOTTOMとNEO_MATRIX_LEFTまたはNEO_MATRIX_RIGHTのいずれかで指定できます。マトリクス配置は、行方向、列方向のNEO_MATRIX_COLUMNSまたはNEO_MATRIX_ROWSで指定し、進行方向はNEO_MATRIX_PROGRESSIVEまたはNEO_MATRIX_ZIGZAGで指定します。

これらを”+”でつないで一つの引数とします。ここで使用したマトリクスはピクセルの始点が右上で行方向にジグザグに進行するので

NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG

となります。

第5引数:NeoPixelライブラリ同様に使用されているLEDピクセルのタイプを示します。

動作

簡単に文字スクロールができちゃいました!

フォント追加

Adafruit-GFX-Libraryのfontconvertを使用してフォントを追加して表示することが可能です。

実行ファイル生成

ダウンロードしたGFXライブラリのfontconvertフォルダへ移動してターミナルで以下を実行すると実行ファイル fontconvertが生成されます。

フォント生成

ここでは以下のフォントをダウンロードして表示してみます。
 https://fontmeme.com/jfont/celtic-hand-font/

以下をターミナルで実行するとフォントののヘッダファイルが生成されます。

5はフォントサイズでこの値で生成するフォントのサイズを指定できます。

以下で生成されたフォントを確認することができます。
 https://tchapi.github.io/Adafruit-GFX-Font-Customiser/

Original font file欄に生成されたヘッダファイルの内容をコピペして”Extact”ボタンをクリックします。すると各文字が表示されます。

表示されたドットの文字は修正することも可能です。修正後、”Process and create file”をクリックすると修正されたファイルが生成されます。

生成したヘッダファイル名はファイル内のPROGMEM前の名前を使用します。

ここではCELTICHD5pt7b.hとしてGFXライブラリのFontsフォルダにコピーします。

Arduinoコード

以下2行を追加するだけで追加したフォントの表示が可能です。

  1. フォントをインクルード
  2. setup()内で以下追加

動作

まぁデフォルトのフォントのほうが読みやすいね。。。けどこのようにフォントの追加も可能です!

グラフィック表示

ここまでできると次は絵を出してみたくなりますよね。ここでは絵を2枚つくって交互にLEDマトリクスを表示します。

絵の作成

ミニドット絵メーカーで8✕8ピクセルの絵を2枚作りました。
 http://neutralx0.net/dot/

画像のバイト配列生成

image2cppというツールで画像データからバイト配列を生成します。
 http://javl.github.io/image2cpp/

“ファイル選択”で画像を指定します。

Invert image colorsにチェックを入れます。

“Generate code”をクリックでバイト配列が生成されます。

Arduinoコード

image2cppのサンプルコードoled_example.inoを参考にプログラムしました。myBitmap1、myBitmap2で生成したバイト配列を指定しています。

動作

作成した2枚の絵が交互に表示されています。簡単でいいですねぇ。

終わりに

Adafruit NeoMatrixライブラリを使用して文字とグラフィックの表示を試してみました。便利なツールもあって簡単にカスタマイズできて色々広がりそうです。

次の目標はフルカラーのグラフィック表示ですね!

参考

Related Posts

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

TOP