iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0

Arduino的程式設計

Arduino 是專為快速原型(Rapid Prototyping)開發而生的開源 嵌入式系統(Embedded Systems) 平台,能幫助我們快速達成概念驗證(PoC)。

在程式語言支援方面,官方主要採用與 C/C++ 相仿的主流語法(後續文章若有提及將統稱Arduino C);如果你偏好 Python,官方也推出了實驗性專案Arduino Lab for MicroPython——這是一款獨立於 Arduino IDE 2.x 的輕量級編輯器,支援開發板連接、程式碼上傳、檔案傳輸,並提供互動式 REPL 介面。

以下我們先介紹Arduino C的主要架構


當開啟Arduino IDE會看到以下畫面,依照Arduino官方稱為Sketch。
https://ithelp.ithome.com.tw/upload/images/20230910/20124678bMG6DvA4YC.png
裡面有setup()與loop()函數,以下分別介紹兩者的用途:

  • setup(): sketch開始時呼叫該函數。使用它來初始化變數、腳位模式、開始使用程式庫...等。該功能只會在每次 Arduino 板上電或重置後執行一次。
  • loop(): 創建初始化和設置初始值的函數後,該函數會精確地執行其名稱所暗示的操作,並連續地迴圈,從而允許程式進行更改和回應。使用它來主動控制開發板。

Arduino 的 main function 在哪?!

具備 C 家族語言背景的您,第一次使用 Arduino 時是否也曾好奇:main() 入口點(Entry Point)到底藏在哪裡?

其實 Arduino 依然遵循標準 C/C++ 規範,只是將 main() 封裝在底層庫中。它的定義位於 cores/arduino/main.cpp。
在 Windows 系統中該檔案的絕對路徑為: C:\Users\<使用者名稱>\AppData\Local\Arduino15\packages\<平台安裝package名稱>\hardware\<硬體名稱>\<硬體版本>\cores\arduino\main.cpp
https://ithelp.ithome.com.tw/upload/images/20230910/20124678cTa1uj7Gw7.png

結論

上述 setup() 與 loop() 的程式結構,在嵌入式系統中稱為裸機(Bare Metal)開發。這種架構主要依賴「無限迴圈 + 中斷服務常式(ISR)」運作,非常適合邏輯單純、資源有限的輕量級設備。然而,當專案複雜度提升、需要同時處理多項即時工作時,開發者通常會導入具備核心(Kernel) 的 即時作業系統(Real-Time operating system, RTOS),透過任務(Task)調度與優先級分配,實現更高效的多任務管理。

除了技術架構的演進,另一個核心重點是角色的切換——從這裡開始,我們將正式從使用者(User)轉變為開發者(Developer)。

如下圖所示,開發者主導的是整個系統的核心「處理(Process)」環節:

  • 開發者視野:必須掌握整個架構,對「輸入(Input)」與「輸出(Output)」的資料流向與細節瞭如指掌。
  • 使用者視野:位於處理環節之外,僅操作介面,無法釐清內部的具體執行流程。
    https://ithelp.ithome.com.tw/upload/images/20230911/20124678KzfoBYVQly.png

上一篇
Arduino IDE 2.x的安裝與設定
下一篇
沒有開發板?用線上模擬器輕鬆學 Arduino
系列文
實戰 Arduino 相容開發板 - 使用 Arduino IDE 2.x 共 9 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言