ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付
前回の続き
引き続きチュートリアルに沿って電子工作入門していく
LCD DISPLAY
使用する機器
- (1) x Elegoo Uno R3
- (1) x LCD1602 module
- (1) x Potentiometer (10k)
- (1) x 830 tie-points Breadboard
- (16) x M-M wires (Male to Male jumper wires)
LCD DISPLAY
セット内の LCD DIsplay は「LCM1602A」という LCD にコントローラーをつけてモジュール化したもの
データシート - datasheetspdf.com
LCD とは Liquid Crystal Display の略で液晶ディスプレイのこと
液晶ディスプレイはバックライトが発する光を偏光フィルター、カラーフィルター、液晶を通過させることで色付きの光として出力されます
液状ディスプレイは、制御するためのタイミングチャート、表示させるための文字コード、文字やその他表示制御用のインスラクション等を意識する必要があるが
Arduino にはライブラリにより抽象化されているためほとんど意識しなくても扱うことができる
LCDに文字を表示させるプログラミング - monoist.atmarkit.co.jp
インストラクションによる液晶表示器の設定 - infoseek_rip.g.ribbon.to
このモジュールでは16ピンあり、それぞれ
- VSS: グランドに接続するピン
- VDD: + 5V 電源に接続するピン
- VO: LCD1602 のコントラストを調整するピン
- RS: LCD のメモリ内のどこにデータを書き込むかを制御するレジスタ選択ピン 画面に表示されている内容を保持するデータレジスタ、または命令のレジスタ(LCD のコントローラが次に何をするかの指示を参照する)を選択できます
- R/W: 読み出しモードまたは書き込みモードを選択する読み出し/書き込みピン
- E: ローレベルのエネルギーが供給されると、LDC モジュールに関連する命令を実行させるイネーブルピン
- D0-D7: データを読み書きするためのピン
- A and K: LED バックライトを制御するピン
となっている
ポテションメータ
上記のと見た目は違うがセットに含まれてるのは PT-15 というポテンションメータ(ノブ付き)
PT06PT15トリマーポテンショメータ (ノブ付き) - japanese.alibaba.com
ポテンションメータとは抵抗値を任意の値に変更できる可変抵抗器のこと
オーディオのボリューム調整といったアナログ電圧の制御・設定から、カメラのズームレンズ制御といった位置・角度検出センサまでと、幅広い用途で用いられている電子部品
またボリューム等のように位置が変化することにより抵抗値、電圧が変わるため変位センサとしても利用される
ワイパで機械的に位置を変化させ、その変位量と出力された電圧から距離・寸法などを測定する、というように
カメラのズームレンズの制御や工作・建設機械などのアーム操作の角度検出などに用いられる
LCDディスプレイの本チュートリアルではバックライトの調整に使う
ポテンションメータのピンは3本あり、2本に電圧をかけて真ん中のピンから出力結果を得ます
出力ピンはアナログ出力
左ピンが VCC、、右ピンが GND になっている
10k とは 10kΩのことで、最小0Ω、最大10kΩの調整が可能ということ
構成
ポテンションメータの出力先は LCD の VO ピンにつなげる
RS、E、D4~D7 の制御用はすべてがデジタル入出力に繋げる
いつもどおりサンプルコードをデプロイすると
※必要により LiquidCrystal ライブラリを追加する。多くの場合デフォルトである
‘hello、world’というメッセージが表示され、その後にゼロからカウントアップする数字が表示されます。
※メッセージが出ない場合、ポテンションメータによってコントラストが低すぎる場合があるので動かしてみると見える場合もある
コードを見てみるとライブラリ様々でシンプル
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Hello, World!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
ピンの割当宣言と LiquidCrystal lcd()
処理の setup はlcd.begin()
で使用する LCD の行数と列数を指定しlcd.print()
で表示させる文字を指定している
2行目への文字は loop 内で指定している
lcd.setCursor()
が表示行の指定だね
静的な文字の表示であれば setup と loop を分ける必要は無いが
サンプルコードでは動的に変化する文字を表示しようとしている lcd.print(millis() / 1000)
ため
Loop 側に記述することで 処理されるたびに表示される値が変わるよう動的表示を制御している
センサー等のデータから表示を動的に変えたい場合はこのやりかたが必要ってことかな
本レッスンでサラッと登場したポテンションメータも、左右に弄ってみると液晶の表示具合の変化を確認できる
ポテンションメータではなく普通の抵抗器でもできるし、無くても(つまり0Ω状態)大丈夫
またなんで LCD の D0 から配線していないのか?という点については
下記リファレンスにもあるとおり D0 ~ D3 はオプションになっており
LiquidCrystal() - Arduino 日本語リファレンス
動作モードによって使うピンが変わるからである
4つのデータピンを使用する4ビットモード(d4-d7)と8つのデータピンすべてを使用する8ビットモード(d0-d7)の2つの主要な動作モードがあり
利用するディスプレイがどちらの動作モードをサポートしているかによって選択したり
動作モードの違いにより Arduino の利用できるピン数も減ってしまうためそのへんの選択で変わってきます
4bit モードと 8bit モードの違いは単純に表示速度ですが
マイクロチップコントローラーの発展や色々と時代の経緯やなんやかんやがあるようです
マイクロコントローラ - Wiki
液晶表示モジュールを4ビットモードで使ったときの空きピン処理 - act-ele.c.ooco.jp
ちょっとガチで勉強しないと何言ってるのか、何が問題なのかわからないのでふーんくらいで流しておきます
今まではデジタル出力、アナログ出力共に Arduino IDE 等からシリアル出力結果を観測していたが
今後はこの LCD を利用して表示すると良いかもしれない
今まで単一の回路を動かしていたのが
いろんな回路、機器を組み合わせて使うようになった
今まで先にすすめるため流していた基礎知識部分も流せなくなってきたため
調べ物しながらゆっくりと進めていこうと思う
なによりディスプレイの登場で見た目的に動作がわかるのはやっぱりいいですね
とりあえず今回はここまで
多分次回に続く