●Arduinoで1602 I2C液晶モジュールを使う

■ディスプレイとI2C液晶モジュールの接続

I2Cシリアルインターフェイスモジュールと1602ディスプレイ
KKHMF DC 5V 1602 LCD ディスプレイモジュール 16×2キャラクタ LCDブルーブラックライト
EasyWordMall 1602 LCD ブラック IIC/I2C/TWI/SPI シリアル インタフェース ボード モジュール
この二つをAmazonで購入しました。


背中合わせにしてこの様に取り付けます


裏から見た図


はんだ付けで取り付けました。



■Arduinoとの接続

I2Cシリアルインターフェイスモジュールから出ているVCCをArduinoの5Vに、GNDをArduinoのGNDに接続します。
VCCとGNDを逆に接続すると壊れますので注意が必要です。
ArduinoにSDAとSCLのピンが無い場合にはA4、A5の汎用ピンを使いI2C通信を行います
A4、A5はライブラリによって指定されているようです。

GNDをArduinoのGND
VCCをArduinoの5V
SDAをArduinoのA4
SCLをArduinoのA5

以上の4本の線を接続します。
これでArduinoとの接続ができました。


■ライブラリの準備

LiquidCrystal I2Cライブラリを利用することで簡単に文字を出力することができます。

開発環境のArduino IDEを起動させて、メニューのツール→ライブラリを管理...を開くとライブラリマネージャが起動します。
検索をフィルタ...の所に LiquidCrystal I2C を入れて
LiquidCrystal I2C by Frank de Brabander
を探してインストールボタンを押します。

これでライブラリの準備ができました。


■動作させるプログラム

#include <LiquidCrystal_I2C.h>

//アドレス0x27 16文字2行の液晶
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("abc");
  lcd.setCursor(3, 1);
  lcd.print("DEF");
}

void loop() {
}

上記のプログラムを実行すると、LCDに文字が現れます。
もし、動作しない場合にはI2Cアドレスが間違っているかもしれません(赤文字の部分)
チップの違いによりアドレスが違いますので、0x3Fに変更すると動作するかもしれません。



■数字を表示する

文字は表示できましたが変数の値が表示できないと意味がありません。
そこで数字を表示したいと思います。

lcd.print(i,進数);
とすると変数 i が進数に従って出力されます。
進数はHEXやDECやBINと入力しても良いですが、任意の数字を入れると見かけない進数でも出力されます。


▼10進数の表示

符号付きと符合無しが自動的に判断されるみたいです。
#include <LiquidCrystal_I2C.h>

//アドレス0x27 16文字2行の液晶
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  int i=0xFFFF;
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print(i,DEC);
  lcd.setCursor(0, 1);
  lcd.print((unsigned int)i,DEC);
}

void loop() {
}




▼16進数と8進数の表示

#include <LiquidCrystal_I2C.h>

//アドレス0x27 16文字2行の液晶
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  unsigned int i=0xFFFF;
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print(i,OCT);
  lcd.setCursor(0, 1);
  lcd.print(i,HEX);
}

void loop() {
}




▼2進数と5進数の表示

任意の数字を入れると任意の進数で表示されます。
#include <LiquidCrystal_I2C.h>

//アドレス0x27 16文字2行の液晶
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  unsigned int i=0xA5;
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print(i,BIN);
  lcd.setCursor(0, 1);
  lcd.print(i,5);
}

void loop() {
}




▲トップページ > マイコンなど