Arduino MD_Parola.h ライブラリとは?
Arduinoのライブラリ「MD_Parola.h」は、LEDマトリックスディスプレイを制御するための強力なツールです。このライブラリは、スクロール、アニメーション、エフェクトなどの機能を簡単に実装するために設計されています。特に、8×8 LEDマトリックスモジュールを使ったプロジェクトに便利です。
MD_Parolaライブラリの特徴
- スクロールとアニメーション:
- 水平・垂直スクロール
- テキストエフェクト(スライド、ワイプ、オープン、閉じるなど)
- カスタムエフェクトの作成
- 多言語対応:
- ラテン文字だけでなく、他の言語の文字も表示可能
- Unicodeサポート
- 柔軟なレイアウト:
- 複数のディスプレイモジュールを直列または並列に接続可能
- レイアウトの変更も簡単
- タイミング制御:
- 非同期更新
- ディスプレイの更新を制御するための柔軟なタイミングオプション
基本的な使用方法
ライブラリのインストール
Arduino IDEを開き、ライブラリマネージャーから「MD_Parola」をインストールします。
配線
8×8 LEDマトリックスモジュールをArduinoに接続します。一般的には、SPI通信を使用します。例として以下のように配線します:
- DIN → 11 (MOSI)
- CS → 10 (SS)
- CLK → 13 (SCK)
- GND → GND
- VCC → 5V
※ピン番号はArduinoやラズパイPicoなどの機種によって異なります。
初期化と設定
begin()
- 説明: ライブラリの初期化を行います。ディスプレイの接続と設定を行うために使用されます。
- 使用例:
myDisplay.begin();
setIntensity(uint8_t intensity)
- 説明: ディスプレイの輝度を設定します。
intensity
は0から15の範囲で指定します。 - 使用例:
myDisplay.setIntensity(5);
setZone(uint8_t zone, uint8_t startModule, uint8_t endModule)
- 説明: ディスプレイをゾーンに分割し、それぞれのゾーンに異なる表示を行うために使用されます。
- 使用例:
myDisplay.setZone(0, 0, 1); // ゾーン0をモジュール0から1に設定
myDisplay.setZone(1, 2, 3); // ゾーン1をモジュール2から3に設定
テキスト表示
displayText(const char *pText, textPosition_t align, uint16_t speed, uint16_t pause, textEffect_t effectIn, textEffect_t effectOut)
- 説明: テキストをディスプレイに表示します。テキストの位置、スクロール速度、停止時間、表示エフェクトを指定します。
- パラメータ:
pText
: 表示するテキストalign
: テキストの位置(例:PA_LEFT
,PA_CENTER
,PA_RIGHT
)speed
: スクロール速度(ミリ秒単位)pause
: 停止時間(ミリ秒単位)effectIn
: テキストの表示エフェクトeffectOut
: テキストの消去エフェクト- 使用例:
myDisplay.displayText("Hello", PA_CENTER, 100, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
displayClear()
- 説明: ディスプレイの内容をクリアします。
- 使用例:
myDisplay.displayClear();
アニメーション制御
displayAnimate()
- 説明: アニメーションを更新します。
loop()
内で繰り返し呼び出す必要があります。 - 戻り値: アニメーションが完了した場合に
true
を返します。 - 使用例:
void loop() {
if (myDisplay.displayAnimate()) {
myDisplay.displayReset();
}
}
displayReset()
- 説明: アニメーションをリセットし、次のテキストを表示する準備をします。
- 使用例:
if (myDisplay.displayAnimate()) {
myDisplay.displayReset();
}
その他の関数
getTextAlignment()
- 説明: 現在のテキストの配置を取得します。
- 戻り値: 現在のテキスト配置(
PA_LEFT
,PA_CENTER
,PA_RIGHT
) - 使用例:
textPosition_t alignment = myDisplay.getTextAlignment();
setTextAlignment(textPosition_t align)
- 説明: テキストの配置を設定します。
- 使用例:
myDisplay.setTextAlignment(PA_CENTER);
getPause()
- 説明: 現在の停止時間を取得します。
- 戻り値: 停止時間(ミリ秒単位)
- 使用例:
uint16_t pause = myDisplay.getPause();
setPause(uint16_t pause)
- 説明: 停止時間を設定します。
- 使用例:
myDisplay.setPause(1000); // 1秒停止
エフェクトの例
MD_Parolaライブラリには多数のエフェクトが用意されています。以下にいくつかのエフェクトを示します:
PA_PRINT
: テキストを静止して表示PA_SCROLL_LEFT
: 左にスクロールPA_SCROLL_RIGHT
: 右にスクロールPA_SLICE
: テキストをスライスして表示PA_MESH
: メッシュ状に表示PA_FADE
: フェードイン・フェードアウト
各エフェクトは、表示効果や消去効果に使用できます。エフェクトを組み合わせることで、より多彩なアニメーションを実現できます。
「MD_MAX72xx.h」と「MD_Parola」の連携
ArduinoプロジェクトでLEDマトリックスディスプレイを制御する際に、「MD_MAX72xx.h」と「MD_Parola」の両方のライブラリを利用することがよくあります。これらのライブラリはそれぞれ異なる役割ですが、連携して動作することでより高度な制御が可能になります。
MD_MAX72xxライブラリの役割
「MD_MAX72xx」ライブラリは、MAX7219またはMAX7221チップを使用してLEDマトリックスディスプレイを直接制御するための基本的な制御を行います。このライブラリは、ディスプレイモジュールの低レベルな制御を行い、以下のような基本操作をサポートします
- ハードウェアの初期化: ディスプレイモジュールの初期化と設定を行います。
- ピクセル操作: 各LEDのオン・オフを制御します。
- ディスプレイの更新: ディスプレイに表示される内容を更新します。
- 文字表示: シンプルな文字や数字を表示します。
主な関数
begin()
: ディスプレイの初期化。clear()
: ディスプレイをクリア。setIntensity(uint8_t intensity)
: 輝度の設定。setRow(uint8_t device, uint8_t row, uint8_t value)
: 指定した行のピクセルを設定。setColumn(uint8_t device, uint8_t col, uint8_t value)
: 指定した列のピクセルを設定。
MD_Parolaライブラリの役割
「MD_Parola」ライブラリは、「MD_MAX72xx」ライブラリの上に構築されており、LEDマトリックスディスプレイに対する高レベルな機能を提供します。このライブラリは、テキストのスクロール、アニメーション、エフェクトなど、複雑な表示を簡単に実現するための便利なツールを提供します。
- テキストアニメーション: テキストのスクロールやエフェクトを簡単に設定・制御できます。
- エフェクト: 多様な表示エフェクト(スライド、フェード、ワイプなど)をサポート。
- ゾーン制御: 複数のディスプレイモジュールをゾーンに分割し、それぞれに異なるコンテンツを表示可能。
- 多言語対応: 多言語の文字セットをサポート。
主な関数
begin()
: ディスプレイの初期化。displayText(const char *pText, textPosition_t align, uint16_t speed, uint16_t pause, textEffect_t effectIn, textEffect_t effectOut)
: テキストの表示設定。displayAnimate()
: アニメーションの更新。displayClear()
: ディスプレイのクリア。setIntensity(uint8_t intensity)
: 輝度の設定。
具体的な例
以下に、両方のライブラリを使ってシンプルなテキストアニメーションを表示する例を示します:
#include <MD_Parola.h>
#include <MD_MAX72XX.h>
#include <SPI.h>
// 定数の定義
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 10
// インスタンスの作成
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup() {
myDisplay.begin(); // ディスプレイの初期化
myDisplay.setIntensity(0); // 輝度設定
myDisplay.displayText("Hello World", PA_CENTER, 100, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop() {
if (myDisplay.displayAnimate()) {
myDisplay.displayReset();
}
}
この例では、「MD_MAX72XX」ライブラリが低レベルのハードウェア制御を行い、「MD_Parola」ライブラリが高レベルのテキスト表示とアニメーション制御を提供しています。
まとめ
- MD_MAX72xxライブラリ: LEDマトリックスディスプレイの低レベルなハードウェア制御を担当。
- MD_Parolaライブラリ: テキストアニメーションや表示エフェクトなどの高レベルな機能を提供。
これらのライブラリを組み合わせることで、LEDマトリックスディスプレイに対する柔軟な制御が可能となります。
コメント