LCD1602(I2C)ディスプレイを使用したMPU-6050用Arduinoコード
このチュートリアルでは、MPU-6050(加速度計・ジャイロスコープ)を I2C 通信で LCD1602 ディスプレイと接続する方法を学びます。MPU-6050 は角度測定値を提供し、それを LCD に表示します。このプロジェクトは MPU-6050 の角度をリアルタイムで可視化することで、センサーデータとディスプレイのインターフェースに対する理解を深めるのに役立ちます。


このチュートリアルの最後までには、LCD画面にX、Y、Zの角度が表示される動作するセットアップが完成します。これは、Arduinoプロジェクトでセンサーデータと表示技術に実践的に触れるのに最適な方法です。さらに詳しくは、動画の00:00をご確認ください。
ハードウェア解説
このプロジェクトの主な構成要素はMPU-6050センサーとLCD1602表示モジュールです。MPU-6050は3軸加速度計と3軸ジャイロスコープを組み合わせた多用途のセンサーで、リアルタイムの角度測定を提供します。I2Cで通信し、Arduinoとシームレスに統合できます。
LCD1602ディスプレイはI2Cプロトコルも使用しており、配線を簡素化し、通信に必要なピン数を減らします。I2Cインターフェースでは複数のデバイスを同じバスに接続できるため、複数のセンサーやコンポーネントを用いるプロジェクトで効率的です。
データシートの詳細
| 製造元 | インベンセンス |
|---|---|
| 部品番号 | MPU-6050 |
| ロジック/入出力電圧 | 3.3 V / 5 V |
| 供給電圧 | 3.3 V から 5 V |
| 出力データレート | 1 kHz(最大) |
| ジャイロスコープの範囲 | ±250、±500、±1000、±2000 °/s |
| 加速度計の範囲 | ±2g、±4g、±8g、±16g |
| パッケージ | QFNパッケージ |
| 備考 / バリエーション | デジタルモーションプロセッサー(DMP)を搭載 |
- I2Cアドレスを確認してください(デフォルトは0x68です)。
- 適切な電源電圧(3.3 V または 5 V)を確認してください。
- ボードに既に搭載されていない場合は、SDAおよびSCLラインにプルアップ抵抗を使用してください。
- 安定性を確保するために、電源ピンの近くにデカップリングコンデンサを配置することを検討してください。
- 通信トラブルを避けるため、配線の接続を確認してください。
配線手順

MPU-6050 と LCD1602 ディスプレイを Arduino に配線するには、次の接続を行ってください:
- 接続してください
VCCMPU-6050のピンを〜へ5VArduinoのピン。 - 接続する
GNDMPU-6050のピンを〜へGNDArduinoのピン。 - 接続する
SDAMPU-6050のピンを…にA4Arduinoのピン。 - 接続してください
SCLMPU-6050のピンを〜へA5Arduino上のピン。 - LCD1602ディスプレイの場合は、次のように接続してください
VCCにピン留めする5VArduino上で。 - 接続する
GNDLCD1602のピンを〜へGNDArduinoのピン。 - 接続する
SDALCD1602のピンを同じにするA4MPU-6050で使用されるピン。 - 接続してください
SCLLCD1602のピンを同じにするA5MPU-6050用のピン。
接続を必ず再確認してください。誤った配線は機器の誤動作や正常に通信できなくなるおそれがあります。
コード例と解説
コードはまずMPU-6050とLCDディスプレイに必要なライブラリをインクルードすることから始まります。以下の抜粋はMPU-6050の初期化方法を示しています:
MPU6050 mpu6050(Wire);ここでは、...をインスタンス化しますMPU6050オブジェクトはセンサーからデータを読み取るために使用されます。次に、デバイスを…に設定する必要がありますsetup()機能:
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
lcd.begin();
lcd.backlight();
}このコードはシリアル通信、I2Cバス、およびMPU-6050センサーを初期化します。また、LCDを初期化してバックライトを点灯します。ループには角度を更新して表示するためのロジックが含まれています:
void loop() {
mpu6050.update();
lcd.clear();
lcdDisplay(0, 0, "X:", 2, 0, mpu6050.getAngleX());
lcdDisplay(13, 0, "Y:", 0, 1, mpu6050.getAngleY());
lcdDisplay(7, 1, "Z:", 9, 1, mpu6050.getAngleZ());
delay(100);
}このループでは、X、Y、Zの角度が更新され、LCDに表示されます。関数lcdDisplay()出力を正しく整形するために使用されます。記事の下に完全なコードが掲載されています。
デモンストレーション/期待できること
セットアップが完了してコードがアップロードされると、LCDにX、Y、Zの角度がリアルタイムで表示されるはずです。配線が正しく行われていれば表示は100ミリ秒ごとに更新され、MPU-6050の現在の向きが表示されます。
よくある落とし穴としては、I2C接続が正しいことと電源が安定していることを確認する必要がある点です。MPU-6050が正しく初期化されていないと、LCDに誤ったデータが表示されるか、まったく表示されないことがあります(ビデオの01:15)。
必要かもしれないもの
-
アマゾンPurchase LCD1602-I2C from Amazonamzn.to
-
アマゾンPurchase MPU-6050 from Amazonamzn.to
-
イーベイPurchase LCD1602-I2C from eBayebay.us
-
アリエクスプレスPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
リソースと参考文献
-
外部メーカーのウェブサイトinvensense.com
ファイル📁
Arduinoライブラリ(zip)
-
RobojaxのLCD1602 LCD用Arduinoライブラリ
robojax-LCD1602-I2C-library-master.zip0.01 MB -
Arduino library for MPU9250
application/zip3.38 MB
フリッツィングファイル
-
LCD LCD1602-I2C module with 4 wires
application/zip0.01 MB -
MPU-6050 Board GY-521
application/zip0.01 MB