Arduinoの基礎 - SC1602

提供:MochiuWiki : SUSE, EC, PCB
2021年11月17日 (水) 07:51時点におけるWiki (トーク | 投稿記録)による版 (文字列「<source」を「<syntaxhighlight」に置換)
ナビゲーションに移動 検索に移動

LCDに文字を表示する

概要

ここでは、ArduinoにLCD(SC1602)を接続して、文字を表示する方法を記載する。
SC1602の定格とピン配置は下図の通りである。
ピン番号が1から順番に、VSS, VDD, ...と表示している。

Arduino SC1602 01.png
Arduino SC1602 02.png



ArduinoとLCDを接続する

SC1602への接続方法を以下に記載する。
まず、電源は1番ピン~3番ピン、VSSとV0はGnd、VDDは+5.0[V]、バックライトの電源は15番ピン~16番ピン、
LED+(A)は+5.0[V]、 LED-(K)はGndにそれぞれ接続する。
5番ピンのR/Wは、LCDに表示(書き込み)を行うので、Gndに接続する。
7番ピン~10番ピンのDB0 - DB3は、4ビットで操作する(DB5 - DB8だけで制御する)ので使用しない。
その他のピンは、Arduinoへ接続する。

Arduino SC1602 03.png


次の表と図を参考に接続する。

LCDピン Arduinoピン 説明
RS 4 Register Select Signal
E 6 Operation (データ R/W) Enable Signal
DB4 10 Data Bus Line
DB5 11 Data Bus Line
DB6 12 Data Bus Line
DB7 13 Data Bus Line
Arduino SC1602 04.png



LCDに文字を出力する

ArduinoからLCDを利用するために、LiquidCrystalライブラリを使用する。
リファレンスを参照すると、LiquidCrystalのコンストラクタで次のようにピン番号を指定すればよい。

LiquidCrystal(rs, enable, d4, d5, d6, d7)


以下に、LiquidCrystalライブラリを使用して、ArduinoからLCDに文字を出力するサンプルコードを記述する。

 #include <LiquidCrystal.h>
 
 LiquidCrystal lcd(4, 6, 10, 11, 12, 13);
 
 void setup()
 {
    lcd.begin(16, 2);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Hello, world!");
 }
 
 void loop()
 {
 
 }
 </source>
<br>
またArduinoとLCDを接続してスケッチをダウンロードすると次のようになる<br>
[[ファイル:Arduino SC1602 05.jpg|フレームなし|中央]]
<br><br>

== SC1602 I2Cアダプタを利用する ==
上記では SC1602を直接制御して文字を表示したが電源や制御信号データ信号の送信等のために約10本の配線が必要であるが<br>
GPIOピンが少ないマイコンを使用する時は扱い辛い<br>
そこでSC1602 I2Cアダプタを使用すると電源とI2C(SDA/SCL)で接続が可能となり単純化できる(I2Cはプルアップが必要)<br>
<br>
ここではSC1602 I2Cアダプタの使用方法を記載する<br>
まずI2Cアダプタは次のようなものである上がSC1602下がSC1602 I2Cアダプタである<br>
(同様のモジュールが各社から販売されているが各社の仕様は違う可能性があるのでデータシートをよく読むこと)<br>
[[ファイル:Arduino SC1602 06.jpg|フレームなし|中央]]
<br>
SC1602 I2Cアダプタのピンアサインは次の通りである<br>
[[ファイル:Arduino SC1602 07.png|フレームなし|中央]]
左側のGnd/Vccは基本的にジャンパでショートされているがバックライトを無効化する場合はオープンにする<br>
オープンにすると必ずバックライトがオンになるのではなくプログラムから制御が可能である<br>
<br>
中央のポテンショメータは画面のコントラスト調整用である<br>
<br>
ジャンパA0 - A2はアドレス選択用で全てオープンにすると0x27となる<br>
ジャンパの設定によりA2 - A0で表される3ビット値を0x27から引いたアドレスにシフトする<br>
例えばA2をショート(1)A1をオープン(0)A0をショート(1)にした場合0b101 = 0x5なので0x27 - 0x5 = 0x22となる<br>
<br>
右側の4本のピンは上からGndVccSDASCLである<br>
<br>
I2CインターフェイスSDASCLはArduino UnoではそれぞれA4A5である<br>
<center>
{| class="wikitable"
!colspan="6"|Arduino Uno R3
|-
| SDA || A4
|-
| SCL || A5
|}
</center>
<br>
またI2Cはプルアップが必要である<br>
次の項目ではLiquidCrystal_I2Cライブラリが内部でWireライブラリを使用しているが<br>
これはSDA / SCLピンについてArduinoの内部プルアップをアクティベートするものである<br>
<br><br>

==== LiquidCrystal_I2Cライブラリ ====
I2Cアダプタを使用するサンプルコードではLiquidCrystal_I2Cライブラリを使用する<br>
<br>
LiquidCrystal_I2Cライブラリのインストール手順を以下に示す<br>
# まず、Arduino IDEから[ツール]メニューバー - [ライブラリを管理...]を選択してライブラリマネージャを起動する。
# 次に、検索欄に"LiquidCrystal I2C"と入力して、"LiquidCrystal I2C by Frank de Brabander"をインストールする。<br>また、以下に示すGitHubからダウンロードすることもできる。
#: https://github.com/marcoschwartz/LiquidCrystal_I2C
# Arduiono IDEから、[スケッチ]メニューバー - [ライブラリをインクルード] - [.zip形式のライブラリをインストール]を選択して、<br>LiquidCrystal_I2Cライブラリを取り込む。<br><br>取り込んだライブラリは、以下のディレクトリに保存される。
#* Linux
#*: ~/Arduino/libraries
#* Windows
#*: C:\Users\ユーザ名\Documents\Arduino\libraries
# もし、同一の名前のライブラリが同じディレクトリに存在しており、コンパイルが失敗する場合は、不要なライブラリを削除する。
<br>
以下にサンプルコードを記述する<br>
 <syntaxhighlight lang="c++">
 #include <LiquidCrystal_I2C.h>
 
 LiquidCrystal_I2C lcd(0x27, 16, 2);  // LCD : 16x2, IC : PCF8574T
 // LiquidCrystal_I2C lcd(0x3F, 16, 2);  // LCD : 16x2, IC : PCF8574AT
 // LiquidCrystal_I2C lcd(0x27, 20, 4);  // LCD : 20x4, IC : PCF8574T
 // LiquidCrystal_I2C lcd(0x3F, 20, 4);  // LCD : 20x4, IC : PCF8574AT
 
 void setup()
 {
    lcd.init(); 
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Hello, world!");
 }
 
 void loop()
 {
 
 }


Arduino SC1602 08.jpg