[Arduino 線上教程] 第八篇: 液晶顯示器

更新於 發佈於 閱讀時間約 9 分鐘

前導

好,這次不用接線,請直接在右側零件選單選擇 Arduino。

raw-image

在裡面找到 LCD 後把它拖拉出來。

raw-image

好,現在開始介紹如何使用:


LCD 模組有完整的控制指令,我們透過引入函式庫進行 LCD 的控制。

#include <Adafruit_LiquidCrystal.h>

主要的指令方法說明如下:

begin(columns, rows)初始化 LCD 顯示器,設置顯示器的行數與列數。

lcd.begin(16, 2);  // 假設是 16 行 2 列的 LCD 顯示器

clear(): 清除 LCD 顯示器上的所有文字。此函式會發送清除命令到 LCD 控制器,將顯示器所有字元位置清空,並將游標重設到左上角(位置 0,0)。

lcd.clear();

home() :將游標移回顯示器的起始位置(0,0)。

lcd.home();

setCursor(col, row):設定游標位置,從指定的列與行開始輸出資料。

lcd.setCursor(5, 1);  // 將游標移至第 6 行、第 2 列(索引從 0 開始)

print():將文字、數字或其他資料以字串形式輸出到 LCD 上。

lcd.print("Hello, World!");

write():將單一字符(或原始位元)寫入 LCD。

lcd.write('A');

除了上述方法外,許多 LCD 庫還提供控制顯示的方法,例如:

display(): 打開 LCD 顯示器,將儲存於顯示記憶體中的資料顯示出來。

lcd.display();

noDisplay() : 關閉 LCD 顯示器,但不清除記憶體,資料依然存在,只是不顯示出來。

lcd.noDisplay();

cursor()noCursor()啟用或隱藏 LCD 顯示器上的游標。

blink()noBlink()啟用或關閉 LCD 上的游標閃爍功能。


好,接下來我們都以實際操作來學習如何使用。

首先,你會發現現在按下模擬已經會顯示東西,所以我們要來解釋現在其提供的程式碼:

#include <Adafruit_LiquidCrystal.h>

int seconds = 0;

Adafruit_LiquidCrystal lcd_1(0);

void setup()
{
lcd_1.begin(16, 2);

lcd_1.print("hello world");
}

void loop()
{
lcd_1.setCursor(0, 1);
lcd_1.print(seconds);
lcd_1.setBacklight(1);
delay(500); // Wait for 500 millisecond(s)
lcd_1.setBacklight(0);
delay(500); // Wait for 500 millisecond(s)
seconds += 1;
}

說明如下:

int seconds = 0;
  • 定義一個整數變數 seconds,初始值設為 0,用來記錄經過的秒數。

Adafruit_LiquidCrystal lcd_1(0);
  • 建立一個名為 lcd_1Adafruit_LiquidCrystal 物件。
  • 括號中的 0 代表 LCD 模組的地址或初始化參數,這裡改成0x20也可以。

void setup()
{
lcd_1.begin(16, 2);
lcd_1.print("hello world");
}

lcd_1.begin(16, 2);

  • 功能: 初始化 LCD 顯示器,並設定它的尺寸為 16 行、2 列。

lcd_1.print("hello world");

  • 功能: 將字串 "hello world" 輸出到 LCD 上。(從位置 (0,0) 開始)

void loop()
{
lcd_1.setCursor(0, 1);
lcd_1.print(seconds);
lcd_1.setBacklight(1);
delay(500); // Wait for 500 millisecond(s)
lcd_1.setBacklight(0);
delay(500); // Wait for 500 millisecond(s)
seconds += 1;
}
  • lcd_1.setCursor(0, 1);
    • 功能: 將 LCD 的游標移到第 2 列(列索引從 0 開始,所以 1 表示第二列)。
    • 結果: 接下來輸出的內容將從第二列最左邊開始顯示。
  • lcd_1.print(seconds);
    • 功能: 將變數 seconds 的數值以文字形式輸出到 LCD 上。
    • 結果: 每次 loop() 都會將目前的秒數或計數值顯示在第二列上。
  • lcd_1.setBacklight(1);
    • 功能: 開啟 LCD 的背光,讓顯示內容更加明亮可見。
    • 結果: 背光亮起。
  • delay(500);
    • 功能: 程式停頓 500 毫秒,這段期間 Arduino 不會執行其他程式碼。
  • lcd_1.setBacklight(0);
    • 功能: 關閉 LCD 的背光。
    • 結果: 背光熄滅。
  • delay(500);
    • 功能: 程式再停頓 500 毫秒。
  • seconds += 1;
    • 功能: 將變數 seconds 的值增加 1。
    • 結果: 下一次 loop() 時顯示的數字會比上一次大 1。

好,在本單元結束前,我們實作一個小專案,為此,我們需要從元件中拉出 TMP36 溫度傳感器。

其中,最左邊的腳位是Vcc,中間的腳位是引腳產生與溫度成正比(線性)的類比電壓。它應該連接到類比 (ADC) 輸入。而最右邊的腳位是GND。

而要將電壓轉換為溫度,只需使用基本公式:

  • 溫度 (°C) = (Vout – 0.5) * 100
  • 例如,如果電壓輸出為 1V,則表示溫度為 (1 – 0.5) * 100 = 50 °C

最後把接線接好,如下圖:

raw-image

接下來撰寫程式碼:

#include <Adafruit_LiquidCrystal.h>

// 建立 LCD 物件
Adafruit_LiquidCrystal lcd(0x20);

// 定義 TMP36 感測器連接的類比腳位
#define sensorPin A0

void setup() {
// 初始化 LCD 為 16 列 2 行
lcd.begin(16, 2);
// 選擇顯示背光
lcd.setBacklight(1);

// 初始化序列監視器(僅用於除錯)
Serial.begin(9600);

// 顯示一個啟動訊息,等待 2 秒後清除
lcd.print("TMP36 Sensor");
delay(2000);
lcd.clear();
}

void loop() {
// 讀取 TMP36 輸出(類比值介於 0 ~ 1023)
int reading = analogRead(sensorPin);

// 將讀取值轉換為電壓值
// 若使用 5V ,換算係數為 (5.0 / 1024.0)
float voltage = reading * (5.0 / 1024.0);

// 利用 TMP36 的特性將電壓轉換為攝氏溫度
float temperatureC = (voltage - 0.5) * 100;

// 將攝氏轉換為華氏溫度
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;

// 清除 LCD 顯示,並將結果輸出到 LCD
lcd.clear();

// 第一行顯示攝氏溫度
lcd.setCursor(0, 0); // 第一列,第 0 行
lcd.print("T: ");
lcd.print(temperatureC, 1); // 顯示 1 位小數
lcd.write(0xB2); // 顯示度數符號 (°)
lcd.print("C");

// 第二行顯示華氏溫度
lcd.setCursor(0, 1); // 第二列,第 0 行
lcd.print("F: ");
lcd.print(temperatureF, 1);
lcd.write(0xB2); // 顯示度數符號 (°)
lcd.print("F");

// 同時將結果輸出到序列監視器(方便除錯)
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print("\xB0");
Serial.print(" C | ");
Serial.print(temperatureF);
Serial.print("\xB0");
Serial.println(" F");

delay(1000); // 每隔 1 秒更新一次讀取結果
}

本頻道持續更新中(內容涵蓋前端程式設計入門、大學必備程式設計入門、電子系專業課程入門、數學微積分題解)如果身旁有相關科系的學生,不妨推薦一下喔~

相信這裡會是家教或線上課程之外,高中、大學生系統性綜合學習的好選擇。

最後感謝您的觀看!

在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!
本篇將帶你進階學習 四位數七段顯示器(4-Digit 7-Segment Display) 的控制方法。與單位元顯示器不同,四位元顯示器可同時顯示完整數字。透過本篇,你將掌握並真正打開 Arduino 在數字資訊視覺呈現上的應用能力。
本篇將教你如何使用 Arduino 控制 七段顯示器,這是實作各種 數字顯示設備(如電子鐘、倒數計時器、計步器)不可或缺的基礎技能。 透過本篇的學習,你將了解如何從控制單一 LED 發展到數字輸出顯示邏輯,奠定日後製作 電子錶、分數顯示器、數字輸入介面 等裝置的核心能力。讓你創造的電路「會說話」!
本篇將帶你實作一個結合可變電阻與 PWM的應用,學會如何讓 Arduino 根據模擬輸入來控制輸出裝置的亮度或速度,例如 LED 的亮暗。 透過本篇,你將掌握 類比輸入與類比輸出 在 Arduino 中的整合技巧,並進一步強化你對嵌入式系統中 感測器輸入 → 控制輸出 流程的理解。
串列埠(Serial Port)是一種用來依序(bit-by-bit)傳輸數據的通訊介面。與並列埠一次傳輸多個位元不同,串列埠一次只傳輸一個位元,但可以利用較少的硬體連線進行長距離傳輸。 本章節除了教讀者基本的用法,在文末還提供了一個較具應用、挑戰性的小項目。
本篇將帶你學會如何使用 按鈕開關(Push Button) 控制 Arduino 的輸出裝置,如 LED 燈、蜂鳴器、馬達 等,這是互動式電子設計的第一步。你將了解按鈕在電路中如何工作,如何透過程式讀取開關狀態,並根據使用者輸入做出對應的控制反應。
本章節主要著重在程式碼上。讓讀者練習一些邏輯的推演,也藉此更了解Arduino的語法。
本篇將帶你進階學習 四位數七段顯示器(4-Digit 7-Segment Display) 的控制方法。與單位元顯示器不同,四位元顯示器可同時顯示完整數字。透過本篇,你將掌握並真正打開 Arduino 在數字資訊視覺呈現上的應用能力。
本篇將教你如何使用 Arduino 控制 七段顯示器,這是實作各種 數字顯示設備(如電子鐘、倒數計時器、計步器)不可或缺的基礎技能。 透過本篇的學習,你將了解如何從控制單一 LED 發展到數字輸出顯示邏輯,奠定日後製作 電子錶、分數顯示器、數字輸入介面 等裝置的核心能力。讓你創造的電路「會說話」!
本篇將帶你實作一個結合可變電阻與 PWM的應用,學會如何讓 Arduino 根據模擬輸入來控制輸出裝置的亮度或速度,例如 LED 的亮暗。 透過本篇,你將掌握 類比輸入與類比輸出 在 Arduino 中的整合技巧,並進一步強化你對嵌入式系統中 感測器輸入 → 控制輸出 流程的理解。
串列埠(Serial Port)是一種用來依序(bit-by-bit)傳輸數據的通訊介面。與並列埠一次傳輸多個位元不同,串列埠一次只傳輸一個位元,但可以利用較少的硬體連線進行長距離傳輸。 本章節除了教讀者基本的用法,在文末還提供了一個較具應用、挑戰性的小項目。
本篇將帶你學會如何使用 按鈕開關(Push Button) 控制 Arduino 的輸出裝置,如 LED 燈、蜂鳴器、馬達 等,這是互動式電子設計的第一步。你將了解按鈕在電路中如何工作,如何透過程式讀取開關狀態,並根據使用者輸入做出對應的控制反應。
本章節主要著重在程式碼上。讓讀者練習一些邏輯的推演,也藉此更了解Arduino的語法。
你可能也想看
Google News 追蹤
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
開啟零件環境並選擇任一平面進入草圖模式 (詳Lesson 1),下圖以連續線作說明
Thumbnail
實時繪圖(一)-安裝ComfyUI+krita心得與教學繼這一篇安裝完畢後,就是開始挑戰電商產品圖製作,意外的簡單,基本上素材找好,在調整個2分鐘,就完成了 接下來我就把我做的方法與步驟分享給大家巴 首先先找好的你的透明素材產品,那麼免費的素材網站我已經幫你找好了,可以商用,請注意一定要用去背的
Thumbnail
我们在熟练地使用另一种“写”的能力,可以理解成打字的能力,在屏幕上绘制并辨识的能力,并且真的创造出巨量的模拟物。
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建
Thumbnail
3D 電腦繪圖 壓克力電腦切割機 結構組裝成微型屋 內裝列印 外牆噴漆 社區馬路街景
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
開啟零件環境並選擇任一平面進入草圖模式 (詳Lesson 1),下圖以連續線作說明
Thumbnail
實時繪圖(一)-安裝ComfyUI+krita心得與教學繼這一篇安裝完畢後,就是開始挑戰電商產品圖製作,意外的簡單,基本上素材找好,在調整個2分鐘,就完成了 接下來我就把我做的方法與步驟分享給大家巴 首先先找好的你的透明素材產品,那麼免費的素材網站我已經幫你找好了,可以商用,請注意一定要用去背的
Thumbnail
我们在熟练地使用另一种“写”的能力,可以理解成打字的能力,在屏幕上绘制并辨识的能力,并且真的创造出巨量的模拟物。
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建
Thumbnail
3D 電腦繪圖 壓克力電腦切割機 結構組裝成微型屋 內裝列印 外牆噴漆 社區馬路街景