ArduinoでI2C液晶ディスプレイ(LCD1602)を動かす!配線・スケッチ・日本語表示まで完全解説
「液晶ディスプレイを使いたいけど、配線が多くて難しそう…」そう思っていませんか?
実は、I2C接続のLCD1602を使えば、たった4本の配線だけでArduinoに文字を表示できます。センサーの値や自作メッセージをリアルタイムに画面出力できると、電子工作がグッと楽しくなりますよね。
この記事では、LCD1602(I2Cモジュール付き)をArduinoにつなぐところから、スクロール表示・カスタムキャラクター(日本語対応の工夫)まで、ステップごとに丁寧に解説します。
🎯 対象読者:Arduino初心者〜中級者。Lチカは経験済みで、次のステップとしてディスプレイ出力を学びたい方
I2C接続のLCD1602とは?

LCD1602は16文字×2行のキャラクター液晶ディスプレイです。英数字・記号をサクッと表示できる、電子工作の定番モジュールです。
通常の「パラレル接続版」だと、Arduinoのデジタルピンを6〜8本も使います。でもI2Cモジュールが背面についているタイプ(I2Cアダプター付きLCD1602)なら、使うピンはたった4本!配線ミスも減って初心者にやさしい設計です。
イメージとしては、「多い配線を1本の信号線にまとめてArduinoと会話する仕組み」がI2Cです。SDA(データ)とSCL(クロック)の2本で通信するので、他のI2Cセンサーと同じバスに並列接続することもできます。
用意するもの
- ✅ Arduino UNO(またはNano・Mega)
- ✅ I2Cアダプター付き LCD1602(Amazonや秋月電子で安価に入手可)
- ✅ ジャンパーワイヤー(オス-メス)×4本
- ✅ USBケーブル(PCとArduino接続用)
⚠️ LCDのI2Cモジュールが別売りの場合は、はんだ付けが必要です。最初から一体になっているものを選ぶと楽ですよ。
STEP 1:配線する(4本だけ!)
配線はとてもシンプルです。下の表の通りにつなぐだけです。
| LCD1602(I2Cモジュール) | Arduino UNO |
|---|---|
| GND | GND |
| VCC | 5V |
| SDA | A4 |
| SCL | A5 |
📌 Arduino Megaを使っている場合は、SDAがピン20・SCLがピン21になります。Nanoの場合はUNOと同じA4/A5でOKです。
配線が終わったら、LCDモジュール背面の青いポテンショメーター(可変抵抗)でコントラストを調整できます。文字が見えにくいときはここをドライバーで回してみてください。
STEP 2:ライブラリをインストールする
I2C接続のLCDを扱うには、LiquidCrystal_I2Cライブラリを使います。Arduino IDEからインストールしましょう。
- Arduino IDEを開く
- メニューから「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」
- 検索欄に「LiquidCrystal I2C」と入力
- Frank de Brabander製のライブラリをインストール
これで準備完了です。
STEP 3:I2Cアドレスを確認する
LCDのI2Cアドレスは製品によって異なります。多くは0x27ですが、0x3Fの場合もあります。まずはI2Cスキャナースケッチで確認するのがおすすめです。
// I2Cアドレスを調べるスキャナースクリプト
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("I2C Scanner 起動中...");
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2Cデバイスが見つかりました!アドレス: 0x");
if (address < 16) Serial.print("0");
Serial.println(address, HEX);
}
}
}
void loop() {
// 何もしない
}
シリアルモニター(通信速度9600bps)を開くと、接続されているデバイスのアドレスが表示されます。表示されたアドレスを次のスケッチで使いましょう。
STEP 4:文字を表示してみよう!
いよいよ本題です。「Hello, World!」をLCDに表示してみましょう。
// 基本の文字表示スケッチ
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// アドレス0x27、16文字×2行の設定
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // LCD初期化
lcd.backlight(); // バックライトON
lcd.setCursor(0, 0); // 1行目の先頭に移動
lcd.print("Hello, World!"); // テキスト表示
lcd.setCursor(0, 1); // 2行目の先頭に移動
lcd.print("Arduino LCD"); // テキスト表示
}
void loop() {
// displayは常時表示なので何もしない
}
ポイントをまとめるとこんな感じです:
lcd.init():LCD初期化。setup()内で必ず最初に呼ぶlcd.backlight():バックライトをONにする(省くと暗くて見えない)lcd.setCursor(列, 行):表示位置を指定。左上が(0, 0)、2行目先頭は(0, 1)lcd.print():文字列を表示。Serial.print()と同じ感覚で使えます
STEP 5:スクロール表示でセンサー値を動かす
16文字を超えるメッセージや、センサー値を流し表示したい場合はスクロールが便利です。
// 横スクロール+センサー値リアルタイム表示スケッチ
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
// アナログピンA0の値を読み取る(センサー等を接続した場合)
int sensorValue = analogRead(A0);
// 1行目にスクロールメッセージ
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Value:");
// 2行目にセンサー値を表示
lcd.setCursor(0, 1);
lcd.print(sensorValue);
delay(500); // 0.5秒ごとに更新
// 長い文字列を1文字ずつ左スクロール
String msg = " -- Arduino I2C LCD Scroll Demo -- ";
lcd.clear();
for (int i = 0; i < msg.length(); i++) {
lcd.setCursor(0, 0);
lcd.print(msg.substring(i, i + 16));
delay(300);
}
}
センサーが接続されていない状態でも動作します。A0を浮かせていると適当な値が入ってくる様子も、それはそれで「動いてる感」があって楽しいですよ😄
日本語(カタカナ)を表示したい場合は?
LCD1602はハードウェアレベルでJIS X 0201(半角カタカナ)に対応しているものが多いです。ただし、日本語文字はUnicodeではなくROMコードで扱います。
たとえば「ア」は文字コード0xB1です。
// カタカナをコードで表示するサンプル
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
// 「アルドゥイーノ」をカタカナコードで表示
// ア=0xB1, ル=0xC3, ド=0xC4, ゥ=0xB3, ィ=0xB2, |=0xB0, ノ=0xC8
byte katakana[] = {0xB1, 0xC3, 0xC4, 0xB3, 0xB2, 0xB0, 0xC8};
for (int i = 0; i < sizeof(katakana); i++) {
lcd.write(katakana[i]);
}
lcd.setCursor(0, 1);
lcd.print("Arduino LCD");
}
void loop() {}
文字コード表はネット上で「HD44780 文字コード表」と検索すると一覧が見つかります。よく使うカタカナのコードをメモしておくと便利ですよ。
⚠️ 漢字・ひらがなはLCD1602のハードウェアROMには含まれていません。カスタムキャラクター機能(createChar())を使えば5×8ピクセルで自作文字を最大8種類登録できますが、複雑な漢字には向きません。シンプルな用途ではカタカナで十分実用的です。
うまく動かないときのチェックリスト
「何も表示されない…」という場合、よくある原因はこのあたりです。確認してみてください。
- 🔍 アドレスが合っているか:I2Cスキャナーで確認(0x27か0x3F)
- 🔍 SDA・SCLの配線が逆になっていないか
- 🔍 バックライトはONになっているか:
lcd.backlight()を忘れずに - 🔍 コントラストが適切か:背面のポテンショメーターを回して調整
- 🔍 ライブラリのバージョン:LiquidCrystal_I2Cは複数の製作者版があるため、Frank de Brabander版を使う
まとめ
今回はI2C接続のLCD1602をArduinoにつなぎ、文字表示・スクロール・カタカナ表示まで一通り体験しました。
配線は4本、ライブラリを入れればlcd.print()でSerialと同じ感覚で使えます。「むずかしそう」と思っていたディスプレイ表示が、意外とシンプルだと感じてもらえたんじゃないでしょうか😊
次は温湿度センサー(DHT11)やRTCモジュールと組み合わせて、温度計・時計ディスプレイなどに発展させると一気に実用度が上がります。ぜひ試してみてください!
こちらも読まれています
📡 Arduinoをもっと深く学ぼう!
Arduino・ラズパイ・ロボットプログラミングを体系的に学びたい方へ。おすすめのUdemyコースや電子部品もまとめています。
📚 関連商品・おすすめ書籍
※本記事にはアフィリエイトリンクが含まれます。





