[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 秒更新一次讀取結果
}

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

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

最後感謝您的觀看!

留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
9會員
215內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/04/01
本篇將帶你學會如何使用 ESP32 控制 OLED 顯示器,顯示不只是文字,還能呈現圖像、圖示、數據曲線,甚至製作簡易動畫。OLED 是現代微控制器專案中常見的高解析低功耗顯示元件,適合用於物聯網設備、穿戴裝置、感測儀錶板等應用。 透過本篇,你將能夠掌握 OLED 顯示技術的使用方法。
Thumbnail
2025/04/01
本篇將帶你學會如何使用 ESP32 控制 OLED 顯示器,顯示不只是文字,還能呈現圖像、圖示、數據曲線,甚至製作簡易動畫。OLED 是現代微控制器專案中常見的高解析低功耗顯示元件,適合用於物聯網設備、穿戴裝置、感測儀錶板等應用。 透過本篇,你將能夠掌握 OLED 顯示技術的使用方法。
Thumbnail
2025/04/01
透過本篇,你將能實作簡單的聲音控制應用。 本篇將教你如何實作 「鋼琴聲音」,進行簡單的 聲音與控制互動。
Thumbnail
2025/04/01
透過本篇,你將能實作簡單的聲音控制應用。 本篇將教你如何實作 「鋼琴聲音」,進行簡單的 聲音與控制互動。
Thumbnail
2025/04/01
從這一單元開始,我想換另一個軟體進行電路模擬,此軟體叫做wokwi。 並且,我們要嘗試使用另一種開發版 ESP32 進行小專案開發。 而本章節我會解釋溫濕度感測器的程式碼原理,讓你實際了解如何使用。
Thumbnail
2025/04/01
從這一單元開始,我想換另一個軟體進行電路模擬,此軟體叫做wokwi。 並且,我們要嘗試使用另一種開發版 ESP32 進行小專案開發。 而本章節我會解釋溫濕度感測器的程式碼原理,讓你實際了解如何使用。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
開啟零件環境並選擇任一平面進入草圖模式 (詳Lesson 1),下圖以連續線作說明
Thumbnail
開啟零件環境並選擇任一平面進入草圖模式 (詳Lesson 1),下圖以連續線作說明
Thumbnail
實時繪圖(一)-安裝ComfyUI+krita心得與教學繼這一篇安裝完畢後,就是開始挑戰電商產品圖製作,意外的簡單,基本上素材找好,在調整個2分鐘,就完成了 接下來我就把我做的方法與步驟分享給大家巴 首先先找好的你的透明素材產品,那麼免費的素材網站我已經幫你找好了,可以商用,請注意一定要用去背的
Thumbnail
實時繪圖(一)-安裝ComfyUI+krita心得與教學繼這一篇安裝完畢後,就是開始挑戰電商產品圖製作,意外的簡單,基本上素材找好,在調整個2分鐘,就完成了 接下來我就把我做的方法與步驟分享給大家巴 首先先找好的你的透明素材產品,那麼免費的素材網站我已經幫你找好了,可以商用,請注意一定要用去背的
Thumbnail
分享一些Googlefonts上面,我覺得好用又好看的歐文字體。
Thumbnail
分享一些Googlefonts上面,我覺得好用又好看的歐文字體。
Thumbnail
我们在熟练地使用另一种“写”的能力,可以理解成打字的能力,在屏幕上绘制并辨识的能力,并且真的创造出巨量的模拟物。
Thumbnail
我们在熟练地使用另一种“写”的能力,可以理解成打字的能力,在屏幕上绘制并辨识的能力,并且真的创造出巨量的模拟物。
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建
Thumbnail
這是一個簡單的工作流,可以對輸入的圖片進行3D重建
Thumbnail
3D 電腦繪圖 壓克力電腦切割機 結構組裝成微型屋 內裝列印 外牆噴漆 社區馬路街景
Thumbnail
3D 電腦繪圖 壓克力電腦切割機 結構組裝成微型屋 內裝列印 外牆噴漆 社區馬路街景
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News