每次用VS Code建立新的Arduino程式專案,都需要執行下列步驟:
- 新增儲存Arduino專案程式的資料夾
- 執行Arduino: Initialize命令、建立.ino檔
- 編輯c_cpp_properties.json設置檔
- 開始編寫Arduino程式
底下以編寫閃爍LED的程式為例,說明VS Code的使用方法。
使用VS Code編寫LED閃爍程式
Arduino IDE要求.ino原始檔必須存在同名的資料夾之內,假設要建立名叫blink.ino的程式檔,請先建立名叫blink的資料夾。
接著,把新增的資料夾“blink”拖入VS Code的「檔案總管」窗格,或選擇「檔案→開啟資料夾」命令,打開“blink”資料夾。
按F1功能鍵,在「命令面板」輸入並執行“Arduino: Initialize”命令,初始化VS Code的Arduino程式開發環境。
VS Code將回應在此資料夾找不到同名的.ino檔;請輸入“blink.ino”再按下Enter鍵。
接著,VS Code將詢問控制板類型,此例請選擇Arduino Uno。
最後,VS Code將自動產生:
- 一個包含空白setup()和loop()函式的程式檔。
- 一個“.vscode”資料夾,並在其中存入兩個JSON格式的設定檔。
但是,空白的Arduino程式檔(此例為blink.ino)會出現兩個錯誤。先不用理會這些錯誤提示,等一下再來修正它們。
編輯c_cpp_properties.json設定檔
“cpp”代表”C Plus Plus”,也就是C++程式語言,在VS Code編寫C或C++程式時,專案資料夾裡面都要有c_cpp_properties.json檔,裡面記載了編譯器的路徑、C語言的版本、程式庫路徑…等,驗證與編譯程式的必備資訊。
我們必須手動編輯其中的一些設定,底下是編寫Atmel AVR系列處理器的控制板程式(例如,採Atmel ATmega328處理器的Arduino Uno控制板)的c_cpp_properties.json設置內容範例:
其中的“includePath”(包含路徑)屬性,標示了程式庫的所在位置,“forcedInclude”(強制包含)屬性的“Arduino.h”檔,則定義了Arduino語言的核心指令和常數,例如HIGH, LOW, pinMode, …等等。
底下的 c_cpp_properties.json 原始碼假設Arduino IDE安裝在預設的C磁碟Program Files (x86) 路徑:
{ "configurations": [ { "name": "Arduino Uno", "includePath": [ "${workspaceFolder}/**", "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino", "C:/Program Files (x86)/Arduino/tools/**", "C:/Program Files (x86)/Arduino/hardware/arduino/avr/**", "C:/Program Files (x86)/Arduino/hardware/tools/**", "C:/Program Files (x86)/Arduino/libraries/**", "C:/Users/${env:Username}/Documents/Arduino/libraries/**" ], "forcedInclude": [ "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/Arduino.h" ], "defines": [ "USBCON", "ARDUINO=10809" ], "intelliSenseMode": "clang-x64", "compilerPath": "C:/Program Files (x86)/Arduino/hardware/tools/avr/bin/avr-gcc.exe", "cStandard": "c11", "cppStandard": "c++17" } ], "version": 4 }
編輯並儲存c_cpp_properties.json檔案之後,原本VS Code編輯器出現的程式錯誤提示將會消失。
附帶一提,底下是在Windows系統上,用C/C++語言編寫Windows應用程式的c_cpp_properties.json設定檔:
其中的defines定義了“UNICODE”和“_UNICODE”兩個巨集(macro),它們都代表程式採用Unicode編碼,或許是微軟不同部門的程式開發團隊沒有協調好,才發生命名不一致的情況。
選擇連接控制板的序列埠
先把Arduino Uno控制板用USB線接上電腦,然後在VS Code的「命令面板」輸入“Arduino: Select Serial Port”命令,或點擊VS Code視窗右下角的 “Select Serial Port”:
接著選擇Arduino Uno控制板連接的序列埠名稱:
VS Code將在“.vscode”資料夾裡的arduino.json檔,自動填入本專案採用的Arduino控制板類型、連接的序列埠和程式原始檔名,我們不用修改它。
編寫、編譯與上傳Arduino程式
在blink.ino檔輸入閃爍LED的程式碼,其中的LED_BUILTIN常數,代表控制板內建LED的連接腳位,其值在Uno控制板是13、在Wemos D1 Mini (ESP8266) 是2。(註:若控制板採用AVR處理器,例如:Arduino Uno,此常數定義在Arduino IDE安裝路徑裡的“hardware\arduino\avr\variants\standard”當中的pins_arduino.h檔。)
存檔後,在「命令面板」輸入“Arduino: Upload”,或者按編輯器視窗右上角的「上傳程式」鈕,VS Code將驅使Arduino IDE的工具軟體開始編譯並上傳程式到Arduino板。
老師請問一下,在MAGE 2560的板子情況下會出現Serial1~3未定義的情況,且Arduino IDE有安裝Teensy但到了Visual Studio Code其他諸如ESP等等的都有出現唯獨Teensy的選項沒出現,請問有什麼方法解決嗎?
我手邊沒有Teensy,MEGA 2560板,建議使用Arduino官方新推出的Arduino Pro IDE試試(目前仍在早期開發階段),對AVR微控器有語法提示功能。
thanks,
jeffrey
你好請問一下
“includePath”: [
“D:\\Work Program\\arduino-1.8.10\\**”,
“C:\\Users\\${env:Username}\\Documents\\Arduino\\libraries\\**”
這樣可以嗎?
只要你測試OK就可以。
thanks,
jeffrey
#include AccelStepper.h
void setup()
{
程式碼….
}
void loop(){
程式碼….
}
遇到 : 偵測到 #include 錯誤。請更新您的 includePath
請問怎麼解決?謝謝
請參閱上文說明,手動修改c_cpp_properties.json檔裡的includePath路徑。
thanks,
jeffrey
您好,已解決上述問題,但是再請教您,切換到 serial Monitor 沒有告知讀取都沒有出現
如下程式碼的Hello! 、Please visit: test
void setup() {
Serial.begin(9600);
Serial.println(“Hello! “);
delay(100);
Serial.println(“Please visit: test”);
}
void loop() {
}
請問是哪裡要設定嗎?謝謝
應該是鮑率設定的問題,按一下狀態列上的鮑率值,調整成9600:
或者按F1或Ctrl+shift+p,輸入修改鮑率的命令:
Arduino: Change Baud Rate
如果沒有反應,按一下狀態列上的鮑率旁邊的X關閉Serial Monitor,再重新開啟。
或者按F1或Ctrl+shift+p,輸入關閉、開啟序列埠監控視窗的命令:
Arduino: Close Serial Monitor
Arduino: Open Serial Monitor
thanks,
jeffrey
您好:
在終端機輸入Arduino:Verify
得到以下訊息:
Arduino:Verify : 無法辨識 ‘Arduino:Verify’ 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含
路徑的話,請確認路徑是否正確,然後再試一次。
位於 線路:1 字元:1
+ Arduino:Verify
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Arduino:Verify:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
請問是不是需要改變哪一部分的路徑?
我剛剛在VS Code中,新增一個Arduino Uno板專案,按F1開啟命令面板,執行Arduino:Verify命令,測試無誤,終端機輸出:
[Starting] Verifying sketch ‘blink.ino’
[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README.
載入組態…
初始化套件…
正在準備開發板…
驗證中…
[Done] Verifying sketch ‘blink.ino’
thanks,
jeffrey
你好想請問
我手動修改c_cpp_properties.json檔裡的includePath路徑,
我加入”${workspaceRoot}\\src_”之後按下Arduino:Verify,
剛剛加入的”${workspaceRoot}\\src_”就消失了,有甚麼辦法可以讓她不要消失嗎? 謝謝
感谢老师,配了很久VScode环境,终于在老师这里找到答案了
不客气