第6章 Arduino 程式設計基礎:變數、資料型別、運算子與 if 判斷教學

發布日期: |更新日期:
文章主圖:第6章 Arduino 程式設計基礎:變數、資料型別、運算子與 if 判斷教學

學習目標

本章將介紹 Arduino 程式設計的基本觀念,帶你理解程式架構、註解、變數、常數、資料型別、運算子與條件判斷。

這些基礎將用於後續的 LED、按鍵、感測器與其他電子元件控制。

  • 了解 Arduino 程式的組成方式。
  • 認識變數與常數。
  • 學會常見資料型別。
  • 理解運算子與條件判斷。
  • 為後續控制 LED、按鍵與感測器建立程式基礎。

為什麼要學 Arduino 程式設計?

Arduino 是一塊可以控制電子元件的開發板,但真正決定開發板要執行什麼工作的,是寫入其中的程式。

LED 是否亮起、馬達何時轉動、LCD 顯示什麼文字,以及按下按鍵後要執行什麼動作,全部都由程式決定。

Arduino 使用以 C/C++ 為基礎的程式語言,並由官方提供大量容易使用的函式,因此學習門檻通常比直接學習一般 C++ 更低。

Arduino 程式的基本架構

每支 Arduino 程式至少包含 setup() 與 loop() 兩個函式。

void setup()
{
}

void loop()
{
}
  • setup():負責初始化,開發板啟動或重新啟動後只執行一次。
  • loop():負責主程式流程,會持續重複執行。

這種結構讓 Arduino 可以持續監控感測器、更新顯示器或控制輸出,因此很適合即時控制應用。

使用註解說明程式

註解不會被 Arduino 執行,其用途是協助自己或其他人理解程式內容。

單行註解

// LED 接在 D13

多行註解

/*
 Arduino
 Complete Course
*/

建議每完成一段功能,就加入簡短而明確的註解。幾個月後再次閱讀程式時,良好的註解能節省大量理解時間。

變數是什麼?

變數是用來儲存資料的名稱。程式可以透過變數名稱讀取或修改其中的值。

int ledPin = 13;

這行程式建立一個名為 ledPin 的整數變數,並把數值 13 存入其中。之後程式看到 ledPin,就能知道它代表 D13 腳位。

為什麼不要直接寫腳位數字?

直接把腳位數字寫在函式中雖然可以執行,但當程式規模變大或需要更換腳位時,會變得難以閱讀與修改。

digitalWrite(13, HIGH);

較好的做法是先使用有意義的名稱定義腳位,再在程式中統一使用該名稱。

const int LED_PIN = 13;

digitalWrite(LED_PIN, HIGH);

這樣不但能提高程式可讀性,也方便日後更換硬體腳位。

常數的用途

當一個值在程式執行期間不應被改變時,建議使用 const 宣告為常數。

const int buttonPin = 2;

這能讓編譯器與閱讀程式的人清楚知道該值不應被修改,也能降低程式誤改的風險。

Arduino 常見資料型別

資料型別決定變數可以儲存什麼內容。以下整理 Arduino 初學階段常見的資料型別。

Arduino 常見資料型別
型別 用途 範例
bool 真/假 true、false
char 單一字元 'A'
int 整數 100
unsigned int 不含負數的整數 500
long 較大的整數 100000
float 小數 25.5
String 字串 "Arduino"

bool:表示真或假

bool 適合表示只有兩種狀態的資料,例如 LED 開或關、按鍵按下或放開,以及 Relay 啟用或停用。

bool ledState = true;

int:儲存整數

int 是 Arduino 程式中最常使用的資料型別之一,可用來儲存感測器讀值、計數值或腳位編號。

int sensorValue;

sensorValue = analogRead(A0);

float:儲存小數

當資料需要保留小數時,可以使用 float。例如 DHT22 溫溼度感測器的溫度值可能包含小數。

float temperature = 26.35;

若改用 int 儲存 26.35,小數部分會遺失,只保留整數部分。

String:儲存文字

String 可以儲存一段文字,並可用於 LCD、OLED 或 Serial 輸出。

String name = "Arduino";

在記憶體較小的 AVR 開發板,例如 Arduino Uno R3 上,String 雖然方便,但大量進行動態字串操作可能造成記憶體碎片。初學階段可以先使用,後續再學習 char 陣列的適用時機。

指派運算子與算術運算子

指派運算子 =

在 Arduino 程式中,單一等號 = 不是數學中的相等,而是把右邊的值存入左邊的變數。

int ledPin = 13;

這行程式的意思是把數值 13 存入 ledPin。

常用算術運算子

Arduino 常用算術運算子
運算子 功能
+ 加法
- 減法
* 乘法
/ 除法
% 取餘數
int a = 10;
int b = 3;

Serial.println(a % b);

10 除以 3 的餘數是 1,因此 Serial Monitor 預期會輸出 1。

比較運算子

Arduino 常用比較運算子
運算子 功能
== 等於
!= 不等於
> 大於
< 小於
>= 大於等於
<= 小於等於

常見錯誤是把 = 與 == 混淆。= 用來指定值,== 才是比較兩個值是否相等。

if (sensorValue > 500)
{
  Serial.println("Bright");
}

當 sensorValue 大於 500 時,程式會在 Serial Monitor 顯示 Bright。

使用 if 進行條件判斷

if 可以根據條件是否成立,決定要不要執行某段程式。這是 Arduino 控制按鍵、感測器與輸出裝置時最常使用的語法之一。

if (digitalRead(buttonPin) == LOW)
{
  digitalWrite(LED_PIN, HIGH);
}

這段程式表示:如果讀取到的按鍵狀態是 LOW,就把 LED_PIN 設為 HIGH,讓 LED 亮起。

實際按鍵是否在按下時呈現 LOW,仍取決於接線方式與 pinMode() 設定。使用 INPUT_PULLUP 時,按下按鍵通常會讀到 LOW。

本章重點整理

  • Arduino 程式主要由 setup() 與 loop() 組成。
  • 註解可提高程式的可讀性與維護性。
  • 變數用來儲存可能改變的資料,常數用來保存不應改變的值。
  • bool、char、int、unsigned int、long、float 與 String 適合不同類型的資料。
  • = 是指派運算子,== 才是比較是否相等。
  • if 可以根據按鍵或感測器狀態決定程式要執行的動作。
  • 使用有意義的變數與常數名稱,比直接在程式中寫入數字更容易維護。

本章實作練習

  1. 建立 const int LED_PIN = 13;,並修改 Blink 程式,讓程式統一使用 LED_PIN。
  2. 宣告 int sensorValue;,練習接收 analogRead(A0) 的回傳值。
  3. 宣告 bool ledState = false;,並思考它可以代表哪些硬體狀態。
  4. 嘗試使用 if (sensorValue > 500),在 Serial Monitor 顯示不同訊息。

下一章預告

下一章將進入 GPIO 與 Digital I/O 深入解析,正式開始使用 Arduino 控制硬體。

  • pinMode()
  • digitalWrite()
  • digitalRead()
  • INPUT
  • OUTPUT
  • INPUT_PULLUP
  • 按鍵與 LED 的實際控制

後續教材的實作內容

從第 7 章開始,教材將逐步加入知識卡、完整接線圖、程式逐行解析、常見錯誤排除與延伸挑戰。

延伸挑戰可能包含按一次按鍵切換 LED 狀態,或加入蜂鳴器提示音,讓學習從閱讀進一步進入實際操作。

相關資源與文章匯出
下載 Arduino 入門基礎教材 下載 DOCX PDF/列印

← 回文章列表