128×64モノクログラフィックLCDシールドサポートページ(3)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) (6) 次のページへ
128×64モノクログラフィックLCDシールド 商品名 128×64モノクログラフィックLCDシールド
税抜き小売価格 3600円
販売店 スイッチサイエンス
2016年07月21日 暫定公開。
2016年08月18日 正式公開。

6.128×64モノクログラフィックLCDシールドを制御するスケッチの作り方

128×64モノクログラフィックLCDシールドを制御するためのスケッチの作り方を説明します。まず画面に"Hello, World!"と表示するスケッチを紹介して、次にスケッチの作り方の基礎的な事項の説明をし、最後にシールドの制御に使うMGLCDライブラリの主な関数の説明をします。

6-1.Hello, World!を画面に表示する

画面に"Hello, World!"と表示するには、Arduino IDEにリスト1のスケッチを入力し、128×64モノクログラフィックLCDシールドを装着したArduinoにスケッチを書き込んでください。

注:スケッチの書き込みの手順は、動作確認の際の手順を参考に してください。手順3でdemoスケッチを開く代わりに、リスト1を入力してください。

リスト1、"Hello, World"を表示するスケッチCOPY
#include <MGLCD.h>
#include <MGLCD_SPI.h>
#include <SPI.h>

#define CS_PIN   10
#define DI_PIN    9
#define MAX_FREQ (7400*1000UL)

MGLCD_GH12864_20_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);

void setup() {
  MGLCD.Reset();
  MGLCD.println("Hello, World!");
}

void loop() {
}

リスト1を書き込むと、写真20の様に、画面に"Hello, World!"と表示されます。

写真20、リスト1の実行結果
↑ 画像をクリックすると拡大
写真20、リスト1の実行結果

リスト1の動作の説明は、次の節以降で説明します。

6-2.ヘッダファイルのインクルード

128×64モノクログラフィックLCDシールドを制御するスケッチを作るには、MGLCD.hMGLCD_SPI.hSPI.hの3つのヘッダファイルをスケッチの最初でインクルードする必要があります。"Hello, World,"を表示するスケッチ(リスト1)と同様、スケッチの先頭で、リスト2の様にインクルードしてください。

リスト2、ヘッダファイルのインクルードCOPY
#include <MGLCD.h>
#include <MGLCD_SPI.h>
#include <SPI.h>

6-3.MGLCD_GH12864_20_SPI型オブジェクト変数の宣言

ヘッダファイルをインクルードしたら、次に、MGLCD_GH12864_20_SPI型のオブジェクト変数を宣言する必要があります。"Hello, World,"を表示するスケッチ(リスト1)と同様、リスト3の様に宣言してください。

リスト3、MGLCD_GH12864_20_SPIオブジェクトの宣言COPY
#define CS_PIN   10
#define DI_PIN    9
#define MAX_FREQ (7400*1000UL)

MGLCD_GH12864_20_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);

複雑な宣言の様ですが、意味を考えずに、決まり文句としてこのままスケッチに書き込んで結構です。

一応リスト3の内容を説明すると、次の様になります。

128×64モノクログラフィックLCDシールドではGH12864-20というグラフィックLCDモジュールを使っていますが、MGLCDライブラリでは、そのLCDモジュールの信号線の内、/CS信号とD/I信号の2つは、Arduinoの、どのI/Oピンに接続するかを選択できる様になっています。

注:信号線の割り当てが変更できるのは、GH12864-20を直接Arduinoに接続する場合のみです。128×64モノクログラフィックLCDシールドを使う場合は、/CS信号とD/I信号は、それぞれ10番ピンと9番ピンにシールド内で配線されているため、これらのピン番号を指定する必要があります。

#define CS_PIN   10

は、/CS信号をArduinoの10番ピンに接続するように指定するための宣言です。128×64モノクログラフィックLCDシールドでは/CS信号をArduinoの10番ピンに接続する様に設計されていますので、この様な宣言になっています。

#define DI_PIN    9

は、D/I信号をArduinoの9番ピンに接続するように指定するための宣言です。128×64モノクログラフィックLCDシールドではD/I信号をArduinoの9番ピンに接続するように設計されていますので、この様な宣言になっています。

#define MAX_FREQ (7400*1000UL)

は、SPIバスの上限周波数を設定します。128×64モノクログラフィックLCDシールドは、最高約7.4MHz(7400,000Hz)のSPIバスの周波数で動作するので、このような宣言になっています。

単に

#define MAX_FREQ 7400000UL

としてもかまいませんが、7400000ULと書くと0の数が多くて桁を間違えやすいため、(7400*1000UL)と表記しています。なお、数字の後のULはunsigned long型の定数を表します。

仮に何らかの事情で、遅い速度で128×64モノクログラフィックLCDシールドを動作させる必要がある場合は、MAX_FREQの値を小さくします。

MGLCD_GH12864_20_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);

で、MGLCDというMGLCD_GH12864_20_SPI型のオブジェクト変数を宣言しています。これ以降、128×64モノクログラフィックLCDシールドを制御するには、このMGLCDという変数を用います。

なお、変数の名前はMGLCDではなく、何でもいいのですが、別の変数名にした場合は、後述の描画処理において、その変数名を使うことになります。

6-4.初期化処理

128×64モノクログラフィックLCDシールドを使うには、まず初期化処理を行う必要があります。初期化するにはReset関数を用い、

MGLCD.Reset();

と記述します。

初期化処理は通常、全ての処理の前に1回行うだけでいいので、setup関数の中で行います。しかし、使用中に何らかの事情でもう一度初期化を行いたい場合は、複数回Reset関数を呼んでもかまいません。

6-5.描画処理

初期化処理が終わったら、128×64モノクログラフィックLCDシールドを使う準備が完了しました。描画用の関数を用いて、画面に文字や図形を表示する事ができます。

例えば、画面に"Hello, World!"と表示する場合は、println関数を用いて、

MGLCD.println("Hello, World!");

とします。

なお、MGLCD_GH12864_20_SPI型のオブジェクト変数を宣言する場合に、MGLCD以外の変数名、例えばhogeを使って

MGLCD_GH12864_20_SPI hoge(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);

とした場合、"Hello, World!"を表示するには

hoge.println("Hello, World!");

とします。

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

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

関連ページ

関連製品

122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス
サポートページ
GLCD学習シールドキット 商品名 GLCD学習シールドキット
税抜き小売価格 1410円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。