第20/31課:使用LCD1602配合Arduino顯示文字 | Robojax
簡介
LCD1602係Arduino項目中最受歡迎嘅字母數字顯示屏之一,當佢配搭I2C背板嘅時候,用起上嚟就非常簡單。喺呢個教學入面,你會學到點樣顯示文字、數字同自訂字符,仲有點樣令文字喺屏幕上滾動。我哋亦都會示範點樣將LCD同其他感測器結合,整出實用嘅監測工具。呢個指南係更廣泛嘅Arduino課程嘅一部分,目的係幫你整啲對屋企、學校或者工作坊有用嘅裝置。
以下係一啲你可以用呢啲知識整嘅實用構思:
- 用喺溫室或者爬蟲類飼養箱嘅溫度濕度監測器。
- 一個簡單嘅電壓錶,用嚟檢查你項目入面嘅電池電量。
- 一個用嚟做泊車輔助或者智能垃圾桶(顯示有幾滿)嘅距離感測器。
硬件概覽
LCD1602係一個16字符乘2行嘅顯示屏。後面嗰個模組係I2C(或者I²C)轉接器,佢將標準並行連接所需嘅線數減少到得四條:Ground、VCC、SDA同SCL。咁樣令接線簡單好多,亦都釋放咗Arduino上面好多數碼引腳。
呢個顯示屏有背光功能,可以透過軟件開關。佢喺I2C模組上面亦都有一個細細嘅可變電阻嚟調節對比度。如果你開咗電源但係乜都睇唔到,只要擰吓呢粒螺絲直到文字出現就得(影片02:47)。
呢款顯示屏有唔同版本,例如LCD2004有20字符同4行。I2C地址亦都可以透過焊接模組上面嘅A0、A1同A2跳線嚟更改(影片03:51)。預設地址通常係0x27,但係都可能唔同,所以最好都係行一個I2C掃描器嚟搵出你嗰個模組嘅正確地址。
硬件組件
要跟住呢條影片入面嘅主要示範,你需要以下組件:
- Arduino Uno(或者任何兼容板)
- LCD1602連I2C模組
- 麵包板同跳線
至於後面嘅章節,你仲會需要一個DHT11感測器、一個可變電阻或者一個超聲波感測器,視乎你想整邊個項目。
接線指南
連接LCD好簡單。接線圖清楚顯示咗連接方法。
將I2C模組上面嘅引腳連接到你嘅Arduino,方法如下:
- GND 連到 Arduino GND
- VCC 連到 Arduino 5V
- SDA 連到 Arduino A4
- SCL 連到 Arduino A5
如果你嘅Arduino板有專用嘅SDA同SCL引腳,你都可以連去嗰啲(影片05:47)。
安裝程式庫
呢個模組需要「Arduino Liquid Crystal I2C」程式庫。你可以喺影片描述入面提供嘅連結或者Robojax網站度下載。下載之後,喺你嘅Arduino IDE入面,去Sketch > Include Library > Add .ZIP Library,然後揀返你下載嘅檔案嚟安裝(影片06:41)。
程式碼解釋
由於冇提供程式碼片段,我哋會解釋影片入面所用程式碼嘅一般結構。
程式碼首先包含所需嘅程式庫:用於I2C通訊嘅Wire.h,同埋用於顯示屏嘅LiquidCrystal_I2C.h程式庫。最關鍵嘅部分係為LCD建立一個物件。你需要設定正確嘅I2C地址同你顯示屏嘅尺寸:
// 將LCD地址設定為0x27,用於16字符2行顯示
LiquidCrystal_I2C lcd(0x27, 16, 2);
如果你嘅顯示屏乜都唔顯示,你可能需要將0x27改做0x3F或者你嘅I2C掃描器搵到嘅另一個地址。嗰個16同2代表你顯示屏嘅行數同列數。
喺setup()函數入面,你初始化LCD並開啟背光:
void setup() {
lcd.init();
lcd.backlight();
}
要打印文字,你用lcd.setCursor(column, row)函數嚟定位光標,然後用lcd.print()嚟顯示你嘅數據。例如,要喺第二行打印,你會用lcd.setCursor(0, 1)。影片亦都解釋咗點樣用lcd.write(223)嚟打印度數符號等特殊字符(影片31:42)。
示範
影片示範咗LCD嘅幾個主要功能。首先,佢展示基本嘅「Hello World」文字打印,以及點樣用lcd.scrollDisplayLeft()函數令文字喺屏幕上移動。之後,佢將LCD同DHT11感測器結合嚟顯示溫度同濕度,用可變電阻嚟顯示電壓,仲有用超聲波感測器嚟顯示距離。
至於溫度顯示,程式碼讀取感測器並打印數值。要顯示冇小數點嘅整數,你可以將浮點數值轉換做整數,好似影片入面示範咁(影片32:21)。
對於電壓錶,程式會讀取電位器嘅模擬值,將佢縮放到0-5V嘅電壓範圍,然後顯示喺屏幕上(影片34:31位置)。
最後嘅示範將LCD同超聲波感測器結合,用嚟顯示以厘米計嘅量度距離(影片37:55位置)。
呢條影片嘅相關項目
呢條影片仲包含其他項目教學。你可以喺呢度搵到佢哋:
章節
- [00:00] LCD1602簡介同課程概覽
- [01:30] LCD1602同I2C模組嘅硬件概覽
- [02:47] 調整顯示對比度同背光
- [03:14] 引腳連接同I2C地址選擇
- [05:28] LCD嘅接線圖
- [06:16] 安裝所需嘅函式庫
- [07:24] 打印文字嘅基本程式碼
- [11:10] 閃爍游標示例
- [13:46] 自訂字符同打印特殊符號
- [18:51] 串列顯示示例
- [23:16] 喺LCD上滾動文字
- [36:51] 將LCD同超聲波感測器結合
/*
Lesson 20/31: Displaying text on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
/*
This is code for LCD1602 Display with I2C module
* watch the video for this code https://youtu.be/q9YC_GVHy5A
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purpose only.
* This library is based on work done by DFROBOT (www.dfrobot.com).
*/
/*
* This code has been modefied from the Arduino library
* Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
* in Ajax, Ontario, Canada
* for Robojax.com
*
* This is code for LCD1602 Display with I2C module
* which can display text on the screen.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
//lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
lcd.clear();
lcd.setCursor (0,0);
lcd.print("SunFounder ");
lcd.setCursor (0,1);
lcd.write(244);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Common Course Links
Common Course Files
你可能需要嘅嘢
-
亞馬遜Buy LCD1602-I2C from Amazonamzn.to
-
亞馬遜SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
亞馬遜
-
亞馬遜
-
亞馬遜
-
易贝Purchase LCD1602-I2C from eBayebay.us
-
阿里巴巴速卖通Purchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
資源與參考資料
-
文件记录Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
外部LCD library from RoboJax (ZIP)robojax.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