ArudinoでグラフィックLCDを動かす(SG12864ASLB-GB編)(4)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

10.MGLCDライブラリでHello World

とりあえずMGLCDを使ってS12832ASLB-GBの画面に何か表示してみたいという人のために、HelloWorld.inoというサンプルスケッチを用意しました。Arduino IDEからファイル->スケッチの例->MGLCD->mglcd_SG12864->HelloWorldメニューを選択してください。

図12、HelloWorldスケッチを開く
図12、HelloWorldスケッチを開く

そうすると、HelloWorld.inoが開きます。

図13、開いたHelloWorldスケッチ
図13、開いたHelloWorldスケッチ

このスケッチは、コメントや条件コンパイル(#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の標準関数で、スケッチが起動してからの経過時間をミリ秒単位で返します。

以上の処理で、次の様な画面になります。

写真15、HelloWorldスケッチの実行結果
写真15、HelloWorldスケッチの実行結果

次のページでは、MGLCDライブラリのテキスト表示関数について説明します。

目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。