しなぷすのハード製作記

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用ブートローダスケッチライタシールドキット
税抜き小売価格 1200円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 2200円
販売店 スイッチサイエンス 妙楽堂
サポートページ
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記