とりあえずMGLCDを使ってS12832ASLB-GBの画面に何か表示してみたいという人のために、HelloWorld.inoというサンプルスケッチを用意しました。Arduino IDEからファイル->スケッチの例->MGLCD->mglcd_SG12864->HelloWorldメニューを選択してください。
そうすると、HelloWorld.inoが開きます。
このスケッチは、コメントや条件コンパイル(#ifdefなどを使ったコンパイル)が多く、ソースコードが見にくいですが、実行には不要な行を取り除くと、以下のようなシンプルなスケッチになります。
#include <mglcd.h>
static const TLcdPinAssignTable PinAssignTable={
A0_DI : A3, // A0 for SG12232, D/I for SG12864
CS1_E1 : A0, // CS1
CS2_E2 : A1, // CS2
E : A4,
RW : A2,
DB0 : 8 ,
DB1 : 9 ,
DB2 : 10,
DB3 : 11,
DB4 : 4 ,
DB5 : 5 ,
DB6 : 6 ,
DB7 : 7
}; // PinAssignTable;
static mglcd_SG12864 MGLCD(PinAssignTable);
void setup()
{
while(MGLCD.Reset());
MGLCD.print("Hello World!");
} // setup
void loop()
{
MGLCD.Locate(0,1);
MGLCD.print(millis());
} // loop
最初に、MGLCDのヘッダファイルをインクルードしています。
#include <mglcd.h>
次に、ピン接続の宣言を行っています。TLcdPinAssignTalbe型の定数の構造体に、LCD側のピンとArduino側のピンの対応表を記述します。(static const TLcdPinAssignTableとなっていますが、staticを取ってconst TLcdPinAssignTableとしても構いません) 構造体定数の名前は何でもいいのですが、ここではPinAssignTableとしています。
static const TLcdPinAssignTable PinAssignTable={
A0_DI : A3, // A0 for SG12232, D/I for SG12864
CS1_E1 : A0, // CS1
CS2_E2 : A1, // CS2
E : A4,
RW : A2,
DB0 : 8 ,
DB1 : 9 ,
DB2 : 10,
DB3 : 11,
DB4 : 4 ,
DB5 : 5 ,
DB6 : 6 ,
DB7 : 7
}; // PinAssignTable;
次に、mglcd_SG12864型のオブジェクト変数を宣言します。
static mglcd_SG12864 MGLCD(PinAssignTable);
他のファイル(ライブラリなど)との名前の衝突を避けるためにstatic宣言していますが、staticを取っても構いません。MGLCDというのが、オブジェクト変数の名前です。このように宣言すると、前述のPinAssignTableにしたがって配線したLCDを制御できるようになります。この宣言以降、MGLCD.関数名(引数,…)という形式で、LCDの制御関数が使えるようになります。
上記の例では変数名がMGLCDとなっていますが、他の変数名でも結構です。例えば
static mglcd_SG12864 hoge(PinAssignTable);
と宣言するとhogeが変数名になりますが、この場合はLCDの制御関数をhoge.関数名(引数,…)という形式で呼び出すことになります。
setup関数の中では、まず次の様にLCDの初期化をしています。
while(MGLCD.Reset());
MGLCD.Reset()
が初期化の関数です。SG12864ASLB-GBをArduinoから直接制御する場合Reset関数は必ず0を返しますので、
MGLCD.Reset();
としても問題ありません。ただ、Arduino用122X32モノクログラフィックLCDシールド等とソフトの互換性を持たせるために、while文でループを回しています。詳しい話はこのページの中ほどに書いてあります。
次の
MGLCD.print("Hello World!");
で、画面にHello World!と表示しています。
loop関数では、画面の2行目に、経過時間をミリ秒単位で表示しています。
MGLCD.Locate(0,1);
は、表示位置を2行目の先頭に移動する事を表わしています。
MGLCD.print(millis());
は、経過時間をミリ秒単位で表示することを表わしています。millis()は、Arduinoの標準関数で、スケッチが起動してからの経過時間をミリ秒単位で返します。
以上の処理で、次の様な画面になります。
次のページでは、MGLCDライブラリのテキスト表示関数について説明します。
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |