【Arduino入門】Arduino設計入門

Arduino設計入門

Arduino程式設計基礎主要是基於C/C++語言,其開發環境Arduino IDE提供了一個用戶友好的界面,讓使用者可以更輕鬆地開發和上傳代碼到Arduino板。編寫Arduino程式主要包括兩個函數:setup()和loop()。其中,setup()函數用於初始化設置,只在程式開始時運行一次;而loop()函數則在setup()運行完畢後,不斷循環執行。

以下是一個典型的Arduino程式範例,用於控制一個LED燈的閃爍:

在上述程式中:

  • pinMode (LED_BUILTIN, OUTPUT); 用於設置LED_BUILTIN(13號引腳)為輸出模式,以控制LED。
  • digitalWrite (LED_BUILTIN, HIGH); 和 digitalWrite(LED_BUILTIN, LOW); 用於控制LED的亮與暗,HIGH代表通電,LOW代表斷電。
  • delay(1000); 用於讓Arduino等待1000毫秒(=1秒),在這期間LED保持當前狀態(亮或暗)。

編寫好代碼後,通過Arduino IDE將程式上傳至Arduino板,就能看到Arduino Uno pin 13 的LED燈按照指定的節奏閃爍。這個基本的範例包含了Arduino編程的一些核心概念,例如輸入/輸出控制、使用函數和時間控制等。透過學習和實踐更多類似的範例,你可以漸漸掌握Arduino程式設計的基本技巧。

Arduino程式的架構說明

所有Arduino程式都是由setup()和loop()兩大區塊所組成,這區塊的正式名稱叫做函式(function)。

setup()函式的作用是設定一開始的程式參數,舉例指定那一個接腳做為[輸出]或[輸入],而這段函式只會在開機後執行一次。

loop()函式”{” & “}”裏頭的程式則會一直重覆執行,直到電源關閉為止。

函式名稱前的”void”代表[沒有回傳值],詳細說明會在之後提到。

接腳的輸入/輸出設定工作模式

要Arduino控制某個數位接腳的元件,先把該接腳設定成[輸出](output)模式,反之,如要從這感測器元件上讀取到訊息時,則將這接腳設定成[輸入](input)模式,使Arduino知道這支腳的作用是要輸出功能或讀取功能。

本篇一開始使用這Arduino範例中的LED Blink(閃爍)做為範例,在它setup()函式中,設定pinMode()函式為這Arduino開發板上內建的13腳(參考:Arduino開發板腳位說明),在這13腳旁的LED燈指定名稱”LED_BUILTIN”為輸出(OUTPUT),你也可以將這”LED_BUILTIN”換成”13″,這LED閃爍程式也一樣可以執行,這是變數的功能,後續會再補充說明。

接著在loop()函式中,”digitalWrite(LED_BUILTIN, HIGH);” digitalWrite指的是輸出指令,輸出在括號中的LED_BUILTIN腳為HIGH(高電位),Arduino則會在輸出5V電壓給13腳LED,讓它亮著;”delay(1000);” delay是停留的指令,停留時間以括號中的毫秒時間計算;接著要關閉LED燈,則將digitalWrite函式的LED燈模式換成”LOW”,讓它輸出低電位0V,這樣子LED燈就會關閉,而關閉停留時間設定為1000毫秒,那這段程式就會由上至下重覆的執行,如底下影片所示。

可以試著將停留時間做改變,再將程式上傳到Arduino中,觀察LED燈依你的修改後的閃爍停留時間。

使用[變數]來管理相應程式碼

在上面LED Blink程式設計中,變數是用來存儲和表示資料的基本單位。你可以將變數想像成是存儲資料的容器。在Arduino或其他編程語言中,定義變數時,需要設定其資料型態、名稱和初值。

1. 資料型態

變數的資料型態確定了它可以存儲的資料類型和大小。例如,Arduino中的”int”型態可用於存儲整數,而”float”可用於存儲浮點數。

2. 變數命名

變數的名稱應該具有描述性,使得其他人閱讀你的程式碼時可以容易理解它的用途。例如,如果你想存儲LED的狀態,可以命名為”LED_BUILTIN”。

3. 初始化變數

當你定義變數時,可以給它一個初始值。例如:”int LED_BUILTIN = 13;”,這樣”LED_BUILTIN”變數就被初始化為13。

現在在這LED Blink程式中,這變的定義如下詳細說明:

int LED_BUILTIN = 13; // 定義一個名為LED_BUILTIN的變數,並初始化為13,表示LED連接到13號腳位
int delayTime = 1000; // 定義一個名為delayTime的變數,用於存儲延遲時間(毫秒)

void setup() {
pinMode(LED_BUILTIN, OUTPUT); // 設定LED_BUILTIN為輸出模式
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 將LED_BUILTIN腳位設為高電位,LED亮
delay(delayTime); // 延遲delayTime毫秒

digitalWrite(LED_BUILTIN, LOW); // 將LED_BUILTIN腳位設為低電位,LED熄滅
delay(delayTime); // 延遲delayTime毫秒
}

在上述程式中,我們定義了兩個變數:”LED_BUILTIN “和”delayTime”。” LED_BUILTIN”變數存儲了我們要控制的LED的腳位號碼,而"delayTime"變數則存儲了LED亮和熄滅之間的延遲時間。

利用這兩個變數,我們可以方便地更改LED的連接腳位或閃爍速度,而不需要修改其他部分的程式碼。例如,如果想要更改LED的閃爍速度,只需更改"delayTime"的值即可。

因此變數在程式設計中扮演著極為重要的角色,它使我們的程式碼更加靈活和易於維護。當開發更複雜的項目時,合理地使用和命名變數將使得程式碼更加清晰和組織化。

變數命名相關規定

當命名變數時,遵循一定的規定和慣例是很重要的,它確保了程式碼的可讀性和維護性。以下是變數命名的一些基本規定:

  1. 首字符限制:變數名稱的首字符必須是字母(a-z,A-Z)或底線(_)。數字不可以作為首字符。
  2. 不使用保留字:不能使用語言的保留字或關鍵字作為變數名稱。
  3. 區分大小寫:變數名稱是區分大小寫的。例如,`myVariable`和`MyVariable`是兩個不同的變數。
  4. 避免使用單一字符:使用具有描述性的名稱,而不是單一字符,如i、j、k。例如,使用`index`或`counter`而不是簡單的`i`。
  5. 描述性命名:變數名稱應該反映其用途或所存儲的資料,例如`temperature`、`speed`、`totalAmount`。
  6. 避免特殊字符:除了底線(_),避免在變數名稱中使用其他特殊字符,如@、#、$、%等。
  7. 名稱長度:盡量選擇適中的名稱長度,過長的名稱可能使程式碼讀起來複雜,而過短則可能不夠描述性。
  8. 使用名稱慣例:遵循某種命名慣例,如駝峰式命名(camelCase)或下劃線命名(snake_case)。
  9. 避免數字後綴:除非有特定的理由,否則避免在變數名稱中使用數字後綴,如`variable1`、`variable2`。
  10. 避免冗餘:避免使用冗餘的詞語或前綴,例如使用`name`而不是`theName`或`myName`。
  11. 避免使用縮寫:除非縮寫非常常見,否則儘量避免。例如,使用`number`而不是`num`。
  12. 避免使用Arduino程式函數[保留字]來命名:例如’print’是Arduino內建的保留字輸出文字函數,而使用這些保留字時,程式在驗證時,會出現不正確訊息,是無法上傳使用的;這些相關詳細的Arduino保留字可以參考官網上的明細,請參閱:https://www.arduino.cc/reference/en/

遵循這些基本規定和慣例,可以確保你的程式碼更加整潔、清晰,並且容易維護和協作。

資料類型

資料類型是程式設計中的一個基本概念,用於指定變數、常數或函式可以存儲或處理的資料的性質和類型。不同的程式語言可能有其專屬的資料類型,但大部分語言都具有一些常見的基本資料類型。以下是資料類型的基本介紹:

  1. 整數型 (int):用於存儲整數值,例如:5、-15、1000。在多數程式語言中,它可能進一步細分為短整數、長整數等,具體取決於可以存儲的位數。
  2. 浮點型(float):用於存儲具有小數部分的數值。例如:3.14、-0.001。浮點數可以表示非常大或非常小的數字,但可能存在精度問題。
  3. 字元型(char):通常用於存儲單個字符,例如:’A’、’1’、’%’。
  4. 字符串型(str):由多個字符組成的資料類型。例如:”Hello, World!”、”Arduino”。
  5. 布林型(boolean):只有兩個可能的值:真(True)或假(False)。布林型常用於條件判斷或迴圈控制。
  6. 陣列(“[]”):用於存儲多個相同資料類型的元素的集合。例如,可以使用整數型陣列來存儲一系列整數。

不同的程式語言可能提供特定的資料類型,且同一資料類型在不同語言中的實現也可能略有差異。了解資料類型是理解和有效使用程式語言的關鍵。

轉換資料類型

在程式設計中,資料轉換是指將一種資料類型的值轉換為另一種資料類型的過程。

常見的資料轉換範例:

1. 整數轉浮點數:

這是一個常見的轉換,通常在算數運算中發生。例如:`double result = 5 / 2.0;` 這裡的整數`5`會被轉換為浮點數進行運算。

2. 浮點數轉整數:

這種轉換可能會導致資料損失,因為浮點數的小數部分會被捨去。例如:`int value = (int) 3.14;` 這裡的`value`將獲得`3`。

3. 字串轉數字:

在需要從輸入或文件中讀取數字時,可能需要將字串轉換為數字。例如:在Java中,可以使用`Integer.parseInt(“123”)`將字串`”123″`轉換為整數。

4. 數字轉字串:

在需要將數字格式化為可顯示的格式時,可能需要此轉換。例如:`String str = Integer.toString(456);`。

資料轉換是程式設計中的基本技能。在進行轉換時必須確保其正確性和安全性,避免可能出現的錯誤或未定義的行為。

自設定不變的[常數]方式

當存放固定、不變數值的容器,稱為[常數]。如在數字上這"π"。建立常數方式:

  • 使用"const"指令定義常數。
  • 常數名稱中的字母通常寫成大寫。
  • 常數設定後,這數值就不可被更改。

舉例:程式中定義PI常數為3.14159

const float PI = 3.14159;    //設浮點數PI常數為3.14159

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端