#author("2017-11-01T13:56:01+09:00","default:nari","nari") #author("2017-11-01T13:56:16+09:00","default:nari","nari") [[FrontPage]] * HSES-LMC1のプログラミング [#vb112ea9] LEDマトリックスコントローラHSES-LMC1には、ESP8266が搭載されており、 ESP8266にプログラムを書き込むことで、ネットワークから取得した 情報をLEDマトリックスモジュールに表示することが可能です。 このページでは HSES-LMC1のプログラムを作成する際に必要な情報を 提供します。 ** 関連文書 [#r49b1089] - [[Humblesoft_GFXのドキュメント:https//github.com/h-nari/Humblesoft_GFX/blob/master/README.md]] - [[Humblesoft_GFXのドキュメント:https://github.com/h-nari/Humblesoft_GFX/blob/master/README.md]] - [[Adafruit_GFXのプログラミング:https://github.com/h-nari/Humblesoft_GFX/blob/master/doc/adafruit_gfx_programing.md]] - [[Humblesoft_GFX, Adafruit_GFXのメソッド一覧:https://github.com/h-nari/Humblesoft_GFX/blob/master/doc/methods.md]] ** ESP8266-Arduino 開発環境 [#q62ca4cc] HSES-LMC1では、プログラム開発環境として esp8266-arduino を使用します。 インストール方法は、下記ページを参照して下さい。 - [[ESP8266 Arduinoのインストール]] ** HSES-LMC1用ライブラリ [#aa458736] ESP8266 Arduinoから HSES-LMC1を使ってLEDマトリックスへの描画、表示を 行うためにGitHubというサイトで、ライブラリHumblesoft_LedMatを提供しております。 - https://github.com/h-nari/Humblesoft_LedMat GitHubからArduinoのライブラリのインストールの仕方については [[Arduinoライブラリのインストール]]のページを御覧ください。 Humblesoft_LedMatは、他のArduinoライブラリを使用しています。 下記の3つのライブラリもインストールして下さい。 - https://github.com/adafruit/Adafruit-GFX-Library - https://github.com/h-nari/Fontx - https://github.com/h-nari/Humblesoft_GFX ** プログラム例 [#qb7de4a5] LEDに文字と枠を表示する簡単なプログラム例lello.inoで説明します。 プログラムはHumblesoft_LedMatライブラリのexamplesに収められていますので、 Arduino-IDEのスケッチの例で呼び出せます。 以下のページでも参照、ダウンロード可能です。 - [[Humblesoft_LedMat/hello.ino at master · h-nari/Humblesoft_LedMat:https://github.com/h-nari/Humblesoft_LedMat/blob/master/examples/hello/hello.ino?ts=2]] このプログラムの動作した様子の動画です。 #youtube(IpKsGaTyxJI) ** ライブラリのインクルード [#k0311ae6] #include <Adafruit_GFX.h> #include <Fontx.h> #include <Humblesoft_GFX.h> #include <Humblesoft_LedMat.h> 使用するライブラリのヘッダファイルをインクルードします。 ** イメージバッファの確保 [#o28c4499] uint8_t imgBuf[1024*4]; Humblesoft_LedMatライブラリでは、LEDモジュールに表示するイメージを ESP8266側に持ち、そこに文字や図形等を描画し、まとめて全部 表示用サブCPU側にSPIで転送します。 イメージバッファのサイズは、使用するLEDモジュールの数、サイズ、プレーン数で 変化します。最大サイズのバッファを確保してしまうと、他の目的でメモリを使用 できなくなってしまいますので、ライブラリの外で明示的に確保、使用するようになっています。 必要なサイズは、下の式で計算できます。 必要なサイズ[byte] = LEDの数÷2 × プレーン数 例えば、 64x32dot LEDモジュール2枚を1プレーン(1階調8色表示)で使用すると 64 × 32 × 2 ÷ 2 × 1 = 2048 [byte] 2048byte必要となります。 64x32dot LEDモジュール6枚、4プレーン(16階調4096色表示)で使用すると 64 × 32 × 6 ÷ 2 × 4 = 24,576 [byte] 24,576byte必要になります。 大体、これが上限で これ以上のサイズを確保しようとすると、 コンパイル時に警告が出るようになります。 ** 初期化 [#ye4b9ad4] LedMat.begin(LMMT64x32s16); LedMat.setLedMode(1); LedMat.setImgBuf(imgBuf, sizeof imgBuf); - bool begin(LMModuleType mtype=LMMT64x32s16, uint8_t col =1, uint8_t row=1,LMLayoutType lt=LT_Normal);&br; LedMat.begin()で LEDモジュールの種類、列数、行数、折り返しの有無を指定します。 &br; LEDモジュールの種類は以下の3つが指定可能です -- LMMT32x16s8: 32x16dot スキャン8のLEDモジュール -- LMMT32x32s16: 32x32dot スキャン16のLEDモジュール -- LMMT64x32s16: 64x32dot スキャン64のLEDモジュール &br; 折り返しの種類は以下の2つが指定可能です。 -- LT_Normal: 折り返し無し -- LT_Turnback: 折り返し有り - void setLedMode(uint8_t mode);&br; setLedMode()は、RGBの配置が特殊なLEDモジュール対策の設定です。&br; HSLM-6432P4Bの場合は1を指定して下さい。&br; 通常は指定の必要はありません。 - void setImgBuf(uint8_t *buf, uint32_t length); イメージバッファを設定します。&br; 設定しないとLEDに何も表示されません。 ** 描画 [#x0bf5ab8] LedMat.println("Hello"); LedMat.display(); println(), print(), printf()で文字がイメージバッファに書き込まれ、&br; display()でイメージバッファが表示用サブCPUに転送されてLEDに表示されます。 uint16_t fg = LedMat.rgb(colors[ci]); LedMat.clear(); LedMat.setTextColor(fg); LedMat.setCursor(4,8); LedMat.println(colors[ci]); LedMat.drawRect(0, 0, LedMat.width(), LedMat.height(), fg); LedMat.display(); - clear()でイメージバッファがクリア - setTextColor()で文字の色の指定 - setCursor()で文字描画位置の指定 - println()で文字を描画 - drawRectで長方形を描画 - display()でイメージを表示用サブCPUに転送し、LEDに表示されます。 ** 監視機能 [#ia7bd0a1] LedMat.checkSubcon(); - checkSubcon()は、表示用サブCPUの状態を確認し、電源容量不足によりリセットされていた場合、表示パラメータの再設定、表示輝度の低下などを行います。 ** 他の話題 [#c8973cb5] - 描画機能について詳細 -- [[Humblesoft_GFX文書:https://github.com/h-nari/Humblesoft_GFX/blob/master/README.md]] - 日本語の描画