許多人學習過Arduino,通常是買一本書,然後買一片Arduino系統電路板,就開始照書本操作,或者也不用買電路板,直接用推演軟體(Simulator)來學習,只要不是用到很特別的電路,推演軟體多半可以支援。
若學習Arduino的人是第一次接觸程式語言(很多是如此,因為Arduino最初是設計給美術、藝術創作者使用),可能不知道他照書本操作的程式語言,其實正式名稱叫Processing,而用來撰寫、編譯Processing程式語言的開發工具軟體,其實也叫Processing,有時為了區別,後者會叫Processing IDE(IDE=Integrated Device Environment,整合開發環境)。
對已有一些程式語言基礎的人來說,或許會以為Arduino的程式語言是C語言,因為語法很像,而有的Arduino學習書裡頭多會說Processing程式語言是以Java程式語言為基礎所發展成,但其實Processing程式語言也很像C++語言。開發者撰寫的Arduino程式,副檔名會叫做 .ino(更早之前則為 .pde),根據他人的研究,若把副檔名改成 .cpp(C++程式語言的副檔名),會發現兩者高度相通。
不只有AVR MCU可用,關鍵在Wiring
另一個大家可能不知道的是,Arduino雖然多是用Atmel公司的AVR系列微控制器晶片,但其實也有許多相容Arduino的系統電路板,是使用其他公司或其他系列、架構的微控制器,或微處理器。例如可以用TI的MSP430系列,Microchip的PIC24/32系列,ARM的Cortex-M3核心(尚未完全支援)等,從8位元、16位元、32位元均可。
為何可以用不同位元、不同廠牌、不同架構的微處理器、微控制器,都可以相容執行Processing程式語言呢?其實這是Arduino另一個專案的功勞,叫Wiring。
由於Arduino是透過一個翻譯軟體來翻譯Processing程式語言,只要改寫這個翻譯軟體,就可以讓原有的Processing程式語言完全不用修改,改在其他Arduino系統電路板上執行,且動作全然相同。
而Wiring專案,就是撰寫出各種不同的翻譯軟體,有供TI MSP430使用的,有供Microchip PIC23/32使用的,不同CPU/MCU的Arduino系統電路板,用不同的Wiring專案完成的翻譯軟體,就可以相容執行。
不用Wiring也行,自己練功
有趣的是,Intel的Quark(夸克)處理器是IA-32/x86架構,也可以相容執行Processing程式語言。這其實是Intel自己撰寫出翻譯軟體的,而不是由Wiring專案所撰寫的,並用在Intel推出的Arduino相容的系統電路板Galileo(伽利略)上,使其能直接相容執行Arduino程式。
不過,Intel的伽利略有經過Arduino的認證,另一個也是IA-32/x86架構的處理器公司瞻營全,則自行提出86Duino專案,也是自行開發撰寫翻譯軟體,以相容執行Processing程式,但86Duino尚未通過認證。
另外,MediaTek提出的LinkIt One平台,也宣稱相容Arduino,但使用的處理器核心則為ARM7EJ-S,一樣不在Wiring專案現有支援的範疇內,因此估是MediaTek自行改寫,或可能由商業合作夥伴改寫,如Seeed Studio等。
與Processing、Wiring相關的專案還有Fritzing,此即是前述的Arduino推演軟體,不過Arduino推演軟體相當多種,Fritzing只是其一,也有完全線上網頁版的,如123d Circuits。
總之,Arduino有許多更深、更廣的層面值得探索,或許可以到GitHub網站,直接閱讀Arduino相關的原始程式碼唷,不需要帳號密碼登入也可以閱讀。
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28
- 【Qualcomm Inside】12TOPS Edge AI單板RUBIK Pi規格剖析 - 2024/10/20
- TinyML潛力股!MicroFlow挑戰TensorFlow Lite for Microcontrollers - 2024/10/15