レッスン20/31:LCD1602に超音波距離を表示する
このプロジェクトでは、HC-SR04超音波距離センサーとI2C対応LCD1602ディスプレイを組み合わせて、リアルタイム距離測定システムを作成する方法を紹介します。このガイドを最後まで読むと、物体までの距離をセンチメートル単位で継続的に測定して表示する動作デバイスが完成します。これは、センサー入力と視覚出力を組み合わせるため、Arduinoエレクトロニクスにおける基礎的なスキルです。
この実用的なセットアップは、以下のようなさまざまな実世界のアプリケーションで使用できます。
- 壁や別の車両までの距離を測るのに役立つスマート駐車アシスタントの作成。
- タンクの上部から水面までの距離を測定して、簡単な液面レベルモニターを構築する。
- 物体が近づくと開く自動手指消毒液ディスペンサーや非接触ゴミ箱の開発。
- 特定のゾーンに誰かが入ると作動する基本的なセキュリティアラームの構築。
ハードウェアとコンポーネント
このプロジェクトを構築するには、以下のコンポーネントが必要です。
- Arduinoボード(例:Uno)
- I2Cインターフェースモジュール付きLCD1602ディスプレイ
- HC-SR04超音波距離センサー
- ジャンパーワイヤー
- ブレッドボード(接続を簡単にするためのオプション)
LCD1602とI2Cの理解
LCD1602は、2行にわたって各行16文字を表示できる人気のあるディスプレイです。背面の「I2C」モジュールは大きな利点であり、ディスプレイの制御に必要なピン数を6以上から、通信用の2本(SDAとSCL)と電源用の2本(VCCとGND)だけに減らします。この簡素化により、配線がはるかにきれいになり、このプロジェクトで使用する超音波センサーなどの他のセンサーのために、Arduinoの貴重なデジタルピンを解放できます。(ビデオの01:30で説明)
I2Cモジュールには、ディスプレイのコントラストを調整するための小さなポテンショメータも備わっています。ディスプレイに電源を入れても何も表示されない場合は、テキストが見えるようになるまでこのネジを回してみてください。(ビデオの02:47で説明)
配線ガイド
コンポーネントの接続は簡単です。LCDのI2CモジュールにはArduinoに接続する必要がある4つのピンがあります。超音波センサーにも4つのピンがあります。
接続の内訳は次のとおりです。
LCD1602 I2CモジュールからArduinoへ:
- GNDをArduinoのGNDへ
- VCCをArduinoの5Vへ
- SDAをArduinoのA4へ
- SCLをArduinoのA5へ
HC-SR04超音波センサーからArduinoへ:
- VCCをArduinoの5Vへ
- TrigをArduinoのデジタルピン12へ
- EchoをArduinoのデジタルピン11へ
- GNDをArduinoのGNDへ
このプロジェクトの配線図はビデオで参照されています。
必要なライブラリのインストール
このプロジェクトは2つの重要なライブラリに依存しています。1つ目はLiquidCrystal_I2Cで、LCDを制御するために必要であり、Arduino IDEにはデフォルトで含まれていません。ビデオの説明またはRobojaxウェブサイトに記載されているリンクからダウンロードできます。(ビデオの06:16で説明)
2つ目のライブラリであるNewPingは、超音波センサーとのインターフェースに使用されます。これは、pingを送信してエコー時間を読み取るプロセスを簡素化します。両方のライブラリは、Arduino IDEのライブラリマネージャーからSketch -> Include Library -> Manage Librariesに移動して名前を検索することでインストールできます。
コードの説明
このスケッチは、LCDと超音波センサーの機能を組み合わせています。コードは、特定のセットアップに合わせて簡単に設定できるように構成されています。
コードの先頭には、調整が必要な可能性のある主要な変数があります。
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters).
- LCDアドレス(0x27):これはLCDモジュールのI2Cアドレスです。ほとんどのモジュールは
0x27を使用しますが、一部は0x3Fを使用する場合があります。ディスプレイに何も表示されない場合は、I2Cスキャナースケッチを実行して正しいアドレスを見つけ、この値を更新する必要があるかもしれません。(ビデオの08:11で説明) - TRIGGER_PINとECHO_PIN:これらは、超音波センサーのTrigピンとEchoピンに接続されたArduinoのデジタルピンを定義します。異なるピンを使用する場合は、これらの定義を変更してください。
- MAX_DISTANCE:これは、センサーが測定する最大距離をセンチメートル単位で設定します。HC-SR04は最大400〜500cmまで測定できますが、値を低く設定すると、特に短い距離での読み取りの精度と信頼性が向上します。
loop()関数では、コードは次の手順を実行します。
sonar.ping_cm()関数を使用して距離を測定し、その値をdistance変数に格納します。- LCDをクリアし、1行目に「Robojax.com」というテキストを表示します。
- 次に、カーソルを2行目に移動し、「Distance: 」と表示します。
- 最後に、カーソルを2行目の位置10に移動して、測定した
distanceの値の後に「cm」を表示します。
ループの最後にあるdelay(200)は、センサーが新しい測定値を取得してディスプレイを更新する頻度を制御します。
コードのデモンストレーション
コードがArduinoにアップロードされると、LCDが点灯し、距離の表示を開始します。手や物体を超音波センサーに近づけたり遠ざけたりして、セットアップをテストできます。画面の数値はリアルタイムで更新され、距離がセンチメートル単位で表示されます。(ビデオの38:07時点)
このビデオからの関連プロジェクト
- レッスン20/31: LCD1602をArduinoで使用してテキストを表示 | Robojax
- レッスン20/31: DHT11の温度と湿度をLCD画面に表示
- レッスン20/31: LCD1602に電圧を表示
チャプター
- [00:00] LCD1602とプロジェクト概要の紹介
- [01:30] LCD1602のハードウェアとI2Cモジュールの説明
- [03:14] LCDのピン配置とI2Cアドレスの設定
- [05:28] LCD1602の配線図
- [06:16] 必要なLCDライブラリのインストール
- [07:24] LCDにテキストを表示する基本コード
- [08:11] LCDのI2Cアドレスを見つける
- [11:10] LCDの例: 点滅カーソルとカスタム文字
- [18:51] LCDの例: シリアル表示とスクロールテキスト
- [24:36] DHT11の温度と湿度をLCDに表示
- [33:00] ポテンショメータからの電圧をLCDに表示
- [35:56] 超音波センサーのコードとLCDの組み合わせ
- [38:07] 超音波距離表示のデモンストレーション
This code has not been parsed yet. Please return to the admin panel to parse it.
必要かもしれないもの
-
アマゾンSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
アマゾン
-
アマゾン
-
アマゾン
リソースと参考文献
-
ドキュメンテーションSunFounder 3 in 1 IoT/スマートカー/学習キットのドキュメントdocs.sunfounder.com
-
外部SunFounderの3-in-1スマートカー学習キットを購入するsunfounder.com
ファイル📁
Arduinoライブラリ(zip)
-
SunFounderの3-in-1スマートカー学習キットソースコード
3in1-kit-main-v2.zip12.80 MB
ユーザーマニュアル
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB