第20/31課:將超聲波距離顯示在LCD1602上
呢個項目示範咗點樣將 HC-SR04 超聲波距離感測器同埋支援 I2C 嘅 LCD1602 顯示屏結合埋一齊,整一個即時距離測量系統。跟住呢份指南做,你就會有一個可以持續測量並以厘米顯示物件距離嘅裝置。呢個係 Arduino 電子學入面一個基礎技能,因為佢結合咗感測器輸入同視覺輸出。
呢個實用嘅設置可以用喺好多真實世界嘅應用度,包括:
- 整一個智能泊車輔助器,幫你判斷同牆壁或者其他車輛嘅距離。
- 透過量度由頂部到表面嘅距離,整一個簡單嘅液體水平監測器畀水箱用。
- 開發一個自動感應洗手液機或者一個無接觸垃圾桶,當有物件靠近時就會打開。
- 整一個基本嘅保安警報器,當有人進入特定範圍時就會觸發。
硬件同零件
要整呢個項目,你需要以下零件:
- Arduino 板(例如 Uno)
- 帶有 I2C 接口模組嘅 LCD1602 顯示屏
- HC-SR04 超聲波距離感測器
- 杜邦線
- 麵包板(可選,方便接線)
了解 LCD1602 同 I2C
LCD1602 係一個好受歡迎嘅顯示屏,可以喺兩行上面每行顯示 16 個字元。佢背面嘅「I2C」模組係一個好大嘅優勢,因為佢將控制顯示屏所需嘅引腳由 6 個或以上減少到只需要 2 個用嚟通訊(SDA 同 SCL)同 2 個用嚟供電(VCC 同 GND)。呢個簡化令接線乾淨好多,亦都釋放咗 Arduino 上面寶貴嘅數碼引腳畀其他感測器用,好似呢個項目用到嘅超聲波感測器咁。(影片 01:30 位置)
I2C 模組仲有一個細細嘅可變電阻嚟調整顯示屏嘅對比度。如果你開咗電但係乜都睇唔到,試吓擰呢粒螺絲直到文字變得清晰可見。(影片 02:47 位置)
接線指南
連接零件係好直接嘅。LCD 嘅 I2C 模組有四個引腳需要連接到 Arduino。至於超聲波感測器,佢都有四個引腳。
以下係連接嘅詳細說明:
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
呢個項目嘅接線圖喺影片入面有提到。
安裝所需嘅函式庫
呢個項目依賴兩個好重要嘅函式庫。第一個係 LiquidCrystal_I2C,用嚟控制 LCD,而且 Arduino IDE 預設冇包含佢。你可以喺影片描述入面提供嘅連結或者 Robojax 網站度下載佢。(影片 06:16 位置)
第二個函式庫係 NewPing,用嚟同超聲波感測器溝通。佢簡化咗發送 ping 同讀取回聲時間嘅過程。兩個函式庫都可以透過 Arduino IDE 嘅 Library Manager 安裝,方法係去 Sketch -> Include Library -> Manage Libraries 然後搜尋佢哋嘅名稱。
程式碼解釋
呢個 sketch 結合咗 LCD 同超聲波感測器嘅功能。程式碼嘅結構令你可以好容易噉針對自己嘅設置嚟設定。
喺程式碼最頂部,你會搵到可能需要調整嘅關鍵變數:
// 將 LCD 地址設定為 0x27,用於 16 字元 2 行顯示
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
#define TRIGGER_PIN 12 // Arduino 引腳連接到超聲波感測器嘅 trigger 引腳。
#define ECHO_PIN 11 // Arduino 引腳連接到超聲波感測器嘅 echo 引腳。
#define MAX_DISTANCE 190 // 我哋想 ping 嘅最大距離(以厘米計)。
- LCD 地址(0x27): 呢個係你 LCD 模組嘅 I2C 地址。大部分模組用
0x27,但係有啲可能用0x3F。如果你嘅顯示屏乜都唔顯示,你可能需要執行一個 I2C 掃描 sketch 嚟搵出正確地址,然後更新呢個數值。(影片 08:11 位置) - TRIGGER_PIN 同 ECHO_PIN: 呢啲定義咗連接到超聲波感測器 Trig 同 Echo 引腳嘅 Arduino 數碼引腳。如果你用唔同嘅引腳,就要改呢啲定義。
- MAX_DISTANCE: 呢個設定感測器會量度嘅最大距離(以厘米計)。HC-SR04 可以量度到 400-500cm,但係設定一個較低嘅數值可以改善讀數嘅準確度同可靠性,特別係對於較短嘅距離嚟講。
喺 loop() 函數入面,程式碼會執行以下步驟:
- 佢用
sonar.ping_cm()函數嚟度距離,然後將佢儲存喺distance變數度。 - 佢清咗LCD,然後喺第一行印出文字「Robojax.com」。
- 跟住佢將游標設到第二行,印出「Distance: 」。
- 最後,佢將游標移到第二行嘅第10個位置,印出度到嘅
distance數值,後面跟住「cm」。
循環尾段嘅delay(200)控制感應器幾耐度一次新讀數同更新顯示。
程式示範
一旦程式上傳到Arduino,LCD就會著燈,開始顯示距離。你可以將手或者物件移近同移遠超聲波感應器嚟測試個設定。螢幕上嘅數字應該會即時更新,顯示以厘米計嘅距離。(喺影片38:07度)
呢條影片嘅相關項目
章節
- [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] 喺LCD顯示DHT11溫度同濕度
- [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
-
亞馬遜
-
亞馬遜
-
亞馬遜
資源與參考資料
-
文件记录Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
外部Purchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
文件📁
Arduino 函式庫 (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
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