LCD1602およびLCD2004のI²Cアドレスを設定する方法とI²Cスキャナの使い方
このチュートリアルでは、LCD1602およびLCD2004ディスプレイのI²Cアドレスを設定する方法と、I²Cスキャナの使い方を解説します。I²C通信を理解することは、これらのLCDモジュールをArduinoプロジェクトに組み込む際に重要であり、効率的なデータ伝送と制御を可能にします。このガイドを終える頃には、LCDのI²Cアドレスを正しく特定し、正常に動作していることを確認できるようになります。


このプロジェクトでは、I²C通信で動作するBMP-180センサーを使用します。センサーは温度と気圧の読み取り値を提供し、LCD1602またはLCD2004のいずれかに表示できます。本チュートリアルには配線方法、コードスニペット、および期待される結果の実演が含まれます。視覚的にわかりやすくするため、関連ビデオ(ビデオ内 00:00)も必ずご確認ください。
ハードウェア解説
このプロジェクトの主な構成要素は、BMP-180センサー、LCD1602またはLCD2004ディスプレイ、そしてArduinoボードです。BMP-180はI²Cプロトコルで通信するデジタル気圧センサーで、SDA(データ線)とSCL(クロック線)の2本の信号線のみを必要とします。LCDディスプレイもI²C対応で、同じ通信プロトコルを用いて容易に制御できるため、配線がすっきりした効率的な構成が可能です。
BMP-180は1.8V〜3.6Vの電源電圧で動作します。つまり、より高い電圧源を使用している場合は電圧レギュレータを介して給電できます。一方でLCDディスプレイは通常5Vで動作するため、追加の部品なしでArduinoボードと容易に接続できます。
データシートの詳細
| 製造元 | ボッシュ |
|---|---|
| 部品番号 | BMP-180 |
| ロジック/入出力電圧 | 1.8~3.6V |
| 電源電圧 | 1.8~3.6V |
| 出力電流(チャンネルごと) | 3.6 µA |
| ピーク電流(チャネルあたり) | 1 mA |
| PWM周波数に関するガイダンス | 該当なし |
| 入力論理閾値 | 該当なし |
| 電圧降下 / Rドレイン-ソース(オン) / 彩度 | 該当なし |
| 熱限界 | -40~+85℃ |
| パッケージ | 3.6×3.8 mm |
| 備考/バリエーション | 温度・圧力センサー |
- 適切な電圧を供給してください:BMP-180の電源は1.8V~3.6Vにしてください。
- SDA と SCL ラインにはプルアップ抵抗を使用して、I²C 通信を安定させてください。
- 信号の劣化を避けるため、配線は短くしてください。
- スキャン中に正しいI²Cアドレスであるか確認してください。
- BMP-180の温度監視範囲:-40〜+85 °C
配線手順

BMP-180センサーとLCDディスプレイをArduinoに配線するには、次の手順に従ってください。

まず、BMP-180のVnピンをArduinoの5V出力に接続します。次に、GNDBMP-180のピンをArduinoのGND(グラウンド)に接続します。そのSDABMP-180のピンはArduinoのものに接続されるべきですA4ピン、一方でSCLピンは接続されるA5.
LCD1602またはLCD2004の場合、接続してくださいVCCArduinoの5Vピンに接続し、そしてGNDピンもグラウンドに接続する。そのSDALCDのピンは…にも接続する必要がありますA4(BMP-180と共有されており)、そしてそのSCLピンは〜に接続する必要がありますA5。
この構成により、両方のデバイスが同じI²Cバス上で通信でき、配線がすっきりした効率的なセットアップが可能になります。
コード例と解説
I²Cアドレスをスキャンするために、簡単なコードスニペットを使用します。以下の抜粋はI²C通信を初期化し、シリアルモニタを準備します:
#include
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
このコードはI²C通信のためにWireライブラリを初期化し、出力のためにシリアルモニタを設定します。これはデバッグおよびI²Cデバイスが認識されていることを確認するために不可欠です。
loop 関数は I²Cバス上のデバイスをスキャンし、それらのアドレスを表示します:
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0) Serial.println("No I2C devices found\n");
delay(5000); // wait 5 seconds for next scan
}
このループは1から127までの各アドレスをチェックし、存在するデバイスと通信を試みます。デバイスが応答した場合、そのアドレスがシリアルモニタに表示されます。これはお使いのLCDやその他の接続デバイスのI²Cアドレスを特定するための重要な手順です。
デモンストレーション/期待できること
I²Cスキャナを実行すると、シリアルモニタにI²Cデバイスが見つかったかどうかを示すメッセージが表示されるはずです。成功した場合、出力には接続されているデバイスのアドレスが16進数で表示されます(例:「アドレス0x27でI2Cデバイスが見つかりました」)。デバイスが見つからない場合は、それに応じたメッセージが表示されます。
デバイスの検出に問題が生じないよう、すべての接続が確実であり、正しい電圧レベルが供給されていることを確認することが重要です(ビデオの05:30)。
必要かもしれないもの
-
アマゾンAmazonでLCD1602-I2Cを購入するamzn.to
-
アリエクスプレスAliExpressから10個のLCD1602-I2Cを購入するs.click.aliexpress.com
-
アリエクスプレスAliExpressからLCD1602-I2Cを購入するs.click.aliexpress.com
リソースと参考文献
まだリソースはありません。
ファイル📁
Arduinoライブラリ(zip)
-
RobojaxのLCD1602 LCD Arduinoライブラリ
robojax-LCD1602-I2C-library-master.zip0.01 MB
フリッツィングファイル
-
LCD2004-I2C
LCD2004-I2C.fzpz0.02 MB