今回はLCD(Liquid Crystal Display/液晶ディスプレイ)について学びます。
ライブラリの導入が終わっている前提で進めます。まだの場合↓
LCD表示のサンプルコード
LDCが使われているコードを見てみましょう。
ファイル>スケッチ例から「FaBo_213_LCD_mini_AQM0802A」を探してHelloWorldとCustomCharacterの2つをそれぞれ実行してください。
うまくいくと文字の表示や棒人間の表示を確認することができます。
I²C液晶の機能とコマンド
これらの機能を組み合わせることで、LCDに様々な内容を表示させることができます。
機能 | コマンド例 |
---|---|
LCDセットアップ | begin(); // LCD使用前に初期化 |
文字列を表示(8文字まで) | print(“Hello”); |
16進数で1文字表示 | write(0b10110001); // ‘ア’を表示 |
カーソル移動 | setCursor(0, 1); //桁,行の順 |
右へ1文字スクロール | scrollDisplayRight(); |
左へ1文字スクロール | scrollDisplayLeft(); |
カーソルを表示 | cursor(); // 非表示は noCursor(); |
カーソルを点滅 | blink(); // 復帰は noBlink(); |
画面非表示 | noDisplay(); // 復帰は display(); |
画面消去 | clear(); |
ここからこれらを使って様々な文字をLCDで表示させていきます。
文字の表示
文字の表示には主に2種類存在します。print()とwrite()です。
print()で出力(表示)できるのは英数字のみです。そのため、カタカナや記号を表示したい場合はwrite()を使う必要があります。
print("ここに半角英数字を入力/8文字まで");
write(ここにバイナリを入力);
上のコマンドの章にも合った通り、print()はコーテーションで出力したい文字を囲います。write()は少し特殊なので解説します。
例えば、「ア」を表示したい場合、以下のように記述します。
write(0b10110001); //アを表示
下の表の列「1011」、行「0001」を指定すると「ア」が指定できていることが分かります。
ちなみに、2進数の前にある「0b」は2進数の表現をするために使われます。
接頭辞 | 頭文字の意味 | 進数 |
---|---|---|
0b | Binary | 2進数 |
0o | Oct | 8進数 |
0x | Hex | 16進数 |
カスタム文字
サンプルコードにもありましたが、上の表以外の文字も表現することができます。
// ライブラリの呼び出し
#include <Wire.h>
#include <FaBoLCDmini_AQM0802A.h>
// lcdライブラの初期化
FaBoLCDmini_AQM0802A lcd;
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
void setup() {
// lcdのセットアップ
lcd.begin();
// カスタム文字のセットアップ
lcd.createChar(0, heart);
}
void loop() {
lcd.setCursor(0, 0); // 最初の行に移動
lcd.print("I "); // "I "を表示
lcd.write(byte(0)); // カスタム文字(ハート)を表示
delay(1000); // 1秒待機
lcd.setCursor(0, 1); // 2行目に移動
lcd.print(" Arduino"); // "Arduino"を表示
delay(2000); // 2秒待機
lcd.clear(); // LCDをクリア
}
配列heartがポイントです。配列はLCDのドットと対応しています。
1がドットの表示、0が非表示で表現できます。
課題
- 0行目に「hello」、1行目に「world!」を表示せよ
- 0行目に自身の苗字、1行目に名前を表示せよ
- カスタム文字を使って名前の後ろに任意の記号を追加せよ