「Arduinoの基礎 - SC1602」の版間の差分
編集の要約なし |
編集の要約なし |
||
66行目: | 66行目: | ||
また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。<br> | また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。<br> | ||
[[ファイル:Arduino SC1602 05.jpg|フレームなし|中央]] | [[ファイル: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本のピンは、上からGnd、Vcc、SDA、SCLである。<br> | |||
<br> | |||
I2CインターフェイスSDA、SCLは、Arduino UnoではそれぞれA4、A5である。<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> | |||
LiquidCrystal_I2Cライブラリは[https://github.com/marcoschwartz/LiquidCrystal_I2C ここ]からダウンロードできる。<br> | |||
Arduiono IDEの[スケッチ] -[ライブラリをインクルード] - [.zip形式のライブラリをインスト-ル]にてLiquidCrystal_I2Cライブラリを取り込む。<br> | |||
<br> | |||
取り込んだライブラリは、C:\Users\[ユーザ名]\Documents\Arduino\librariesに保存される。<br> | |||
もし、同一の名前のライブラリが同じシステム内に存在してコンパイルが失敗する場合は、不要なライブラリを削除する。<br> | |||
<br> | |||
以下にサンプルコードを記述する。<br> | |||
<source lang="c++"> | |||
#include <LiquidCrystal_I2C.h> | |||
LiquidCrystal_I2C lcd(0x27,16,2); | |||
void setup() | |||
{ | |||
lcd.init(); | |||
lcd.backlight(); | |||
lcd.setCursor(0, 0); | |||
lcd.print("Hello, world!"); | |||
} | |||
void loop() | |||
{ | |||
} | |||
</source> | |||
<br> | |||
[[ファイル:Arduino SC1602 08.jpg|フレームなし|中央]] | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Arduino]] | [[カテゴリ:Arduino]] |
2019年7月26日 (金) 19:39時点における版
LCDに文字を表示する
概要
ここでは、ArduinoにLCD(SC1602)を接続して、文字を表示する方法を記載する。
SC1602の定格とピン配置は下図の通りである。
ピン番号が1から順番に、VSS, VDD, ...と表示している。
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へ接続する。
次の表と図を参考に接続する。
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 |
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()
{
}
また、ArduinoとLCDを接続して、スケッチをダウンロードすると次のようになる。
SC1602 I2Cアダプタを利用する
上記では、 SC1602を直接制御して文字を表示したが、電源や制御信号、データ信号の送信等のために約10本の配線が必要であるが、
GPIOピンが少ないマイコンを使用する時は扱い辛い。
そこで、SC1602 I2Cアダプタを使用すると、電源とI2C(SDA/SCL)で接続が可能となり単純化できる。(I2Cはプルアップが必要)
ここでは、SC1602 I2Cアダプタの使用方法を記載する。
まず、I2Cアダプタは次のようなものである。上がSC1602、下がSC1602 I2Cアダプタである。
(同様のモジュールが各社から販売されているが、各社の仕様は違う可能性があるのでデータシートをよく読むこと)
SC1602 I2Cアダプタのピンアサインは次の通りである。
左側のGnd/Vccは、基本的にジャンパでショートされているが、バックライトを無効化する場合はオープンにする。
オープンにすると必ずバックライトがオンになるのではなく、プログラムから制御が可能である。
中央のポテンショメータは画面のコントラスト調整用である。
ジャンパA0 - A2はアドレス選択用で、全てオープンにすると0x27となる。
ジャンパの設定により、A2 - A0で表される3ビット値を0x27から引いたアドレスにシフトする。
例えば、A2をショート(1)、A1をオープン(0)、A0をショート(1)にした場合、0b101 = 0x5なので、0x27 - 0x5 = 0x22となる。
右側の4本のピンは、上からGnd、Vcc、SDA、SCLである。
I2CインターフェイスSDA、SCLは、Arduino UnoではそれぞれA4、A5である。
Arduino Uno R3 | |||||
---|---|---|---|---|---|
SDA | A4 | ||||
SCL | A5 |
また、I2Cはプルアップが必要である。
次の項目では、LiquidCrystal_I2Cライブラリが内部でWireライブラリを使用しているが、
これは、SDA / SCLピンについて、Arduinoの内部プルアップをアクティベートするものである。
LiquidCrystal_I2C ライブラリ
I2Cアダプタを使用するサンプルコードでは、LiquidCrystal_I2Cライブラリを使用する。
LiquidCrystal_I2Cライブラリはここからダウンロードできる。
Arduiono IDEの[スケッチ] -[ライブラリをインクルード] - [.zip形式のライブラリをインスト-ル]にてLiquidCrystal_I2Cライブラリを取り込む。
取り込んだライブラリは、C:\Users\[ユーザ名]\Documents\Arduino\librariesに保存される。
もし、同一の名前のライブラリが同じシステム内に存在してコンパイルが失敗する場合は、不要なライブラリを削除する。
以下にサンプルコードを記述する。
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
}
void loop()
{
}