商品名 | 128×64モノクログラフィックLCDシールド | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス |
2016年07月21日 | 暫定公開。 |
2016年08月18日 | 正式公開。 |
128×64モノクログラフィックLCDシールドを制御するためのスケッチの作り方を説明します。まず画面に"Hello, World!"と表示するスケッチを紹介して、次にスケッチの作り方の基礎的な事項の説明をし、最後にシールドの制御に使うMGLCDライブラリの主な関数の説明をします。
画面に"Hello, World!"と表示するには、Arduino IDEにリスト1のスケッチを入力し、128×64モノクログラフィックLCDシールドを装着したArduinoにスケッチを書き込んでください。
注:スケッチの書き込みの手順は、動作確認の際の手順を参考に してください。手順3でdemoスケッチを開く代わりに、リスト1を入力してください。
#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!"と表示されます。
リスト1の動作の説明は、次の節以降で説明します。
128×64モノクログラフィックLCDシールドを制御するスケッチを作るには、MGLCD.h、MGLCD_SPI.h、SPI.hの3つのヘッダファイルをスケッチの最初でインクルードする必要があります。"Hello, World,"を表示するスケッチ(リスト1)と同様、スケッチの先頭で、リスト2の様にインクルードしてください。
#include <MGLCD.h>
#include <MGLCD_SPI.h>
#include <SPI.h>
ヘッダファイルをインクルードしたら、次に、MGLCD_GH12864_20_SPI型のオブジェクト変数を宣言する必要があります。"Hello, World,"を表示するスケッチ(リスト1)と同様、リスト3の様に宣言してください。
#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ではなく、何でもいいのですが、別の変数名にした場合は、後述の描画処理において、その変数名を使うことになります。
128×64モノクログラフィックLCDシールドを使うには、まず初期化処理を行う必要があります。初期化するにはReset関数を用い、
MGLCD.Reset();
と記述します。
初期化処理は通常、全ての処理の前に1回行うだけでいいので、setup関数の中で行います。しかし、使用中に何らかの事情でもう一度初期化を行いたい場合は、複数回Reset関数を呼んでもかまいません。
初期化処理が終わったら、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!");
とします。
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |