こんにちは、ENGかぴです。
Arduinoのソフト開発はArduino IDEを使用しますがVSCodeの拡張機能でArduinoを追加するとVSCodeでArduinoのソフト開発ができます。VSCodeにArduino機能を追加する手順をまとめています。対象OSはWindows10とします。VSCodeの準備
VSCodeのダウンロードやインストールの方法やにC/C++のコンパイラーであるMinGWのインストール方法ついては下記記事を参考にしてください
以下はこれらの2つがインストールされていることを前提とします。
拡張機能でArduinoを追加する
Arduinoの開発環境に対応した拡張機能をインストールします。
VSCodeを起動して横の機能拡張欄をクリックすると拡張するための検索パネルが表示されます。選択肢を絞るために検索欄に「Arduino」を入力します。「Arduino for Visual Studio Code(Microsoft)」を追加インストールします。
参考例はインストール済なのでインストールの表示はされていません。インストールするとVSCodeでArduinoのソフト開発ができるようになります。

新規ファイルを追加
新規ファイルを作成する前に作業用のフォルダー(今回の例ではtestフォルダーを作成)を準備します。VSCodeをファイルの編集用に使用するのみであればファイルを開いて作業してもよいのですが、コンパイルやAPIのリンクを使用する場合はフォルダーで開く必要があります。
VSCodeを起動しファイル欄から新規ファイルを選択してファイルを作成します。ファイルを作成しただけではArudinoファイルとして認識しないため名前を付けて保存を選択し拡張子を「.txt」から「.ino」に変更して保存します。
保存先はあらかじめ準備していた「test」フォルダの直下にしています。
Arduinoファイルとして保存しますが保存先はC(C++)のコンパイラーとしてインストールしているMinGWで指定している場所にしておく必要があります。
Arduinoファイルとして保存した後はVSCodeでフォルダを開くを選択してファイルを編集していきます。フォルダーを開いていない場合はエクスプローラー上で開いているフォルダーがありませんと通知がされます。
test.inoファイルはtestフォルダ内にあるのでVSCodeのファイル欄からフォルダーを開くを選択して「test」フォルダをクリックして選択して開きます。
フォルダーで開いた後は、VSCodeのエディタの下のステータスバー欄の設定を行います。
<Select Programmer>にはAVRISP mkllを設定し、<Select Board Type>にはArduino Unoを選択し、<Select Serial Port>にはArduino Unoのポート番号として指定してされているCOM番号を選択します。
設定はArduino IDEに合わせるとよいので上記以外に設定している場合はArduino IDEの設定を確認ながらVSCodeの設定に反映するとよいでしょう。
選択すると自動でVSCodeの設定ファイルとしてtestフォルダー内に.vscodeフォルダーが生成されarduino.jsonが作成されます。次にArduinoライブラリやコンパイルのための設定ファイルを追加します。
バージョンによってはc_cpp_properties.jsonファイルの作成はVerifyを行うと作成されます。ファイルが空であってもでエラーがあってもVerifyを行うことで作成されるためボード設定やprogrammerの設定が完了したらVerifyをするとよいでしょう。
test.ino内にコーディングしていきますが、新規でファイルを作成した場合はArduino IDEのようにsetup()やloop()が準備されていないのでコーディングして関数内に処理を追加していきます。
void setup(){
//初期化に関する処理を入れる
}
void loop(){
//メインとして動作させる処理を入れる
}
エディター上にARDUINO EXAMPLESがあり、スケッチ例が参照できるためコピーしながら流用するとよいでしょう。
既存のArduinoファイルを置き換える場合
Arduino IDEで作成したファイルをVSCodeで編集したい場合も対象のArduinoファイルが保管されているフォルダーを開くことでVSCodeでの編集が可能となります。
フォルダーで開いた後の設定は新規ファイルを作成したときの手順と同じです。VSCodeのエディタの下のステータスバー欄の設定を行うことで対象のフォルダー内に.vscodeフォルダにarduino.jsonが作成されます。
ファイルを作成後Verifyを行うとc_cpp_properties.jsonが作成されます。
旧バージョンのバグなど(参考資料)
バージョン1.53.2以前のバグによる対策方法について参考資料として以下に残しています。下記による対策はバージョンアップによって不要となっています。
VSCodeの旧バージョンアップではシリアルポートが選択できないバグが発生していました。ダウングレードするのも手間となるため選択できなくても使用する方法を記しています。
//arduino.jsonにportを追加すると使用することができます。
//例では"port":COM6になっていますが、お使いのポートに合わせて追加してください。
//ポートが不明な場合はArduino IDEで確認してください。
{
"board": "Seeeduino:samd:seeed_XIAO_m0",
"configuration": "usbstack=arduino,debug=off",
"programmer": "AVRISP mkII",
"port": "COM6", //←この行を追加する。{ }内であればどこでもよい
"sketch": "Maruti-seeeduino.ino"
}
この方法でポートを追加するとソフトをアップロードできるようになります。
ボードやprogrammer選択すると自動でVSCodeの設定ファイルとしてtestフォルダー内に.vscodeフォルダーが生成されarduino.jsonとc_cpp_properties.jsonが作成されます。自動生成したファイルにおいて初期条件ではワーニングが出ることがあります。
c_ccp_properties.jsonファイルにおいて一部でワーニングが出ることがあります。初期値はmsvc-x64になっていますが対応しておらずワーニングとなっています。
VSCodeでの動作確認
Arduinoの動作確認用のソフトを開発します。VSCodeでソフト開発するメリットはライブラリを実装する際にコマンドのアシスト機能が実装されることです。
例えばSerial.と入力するとSerialライブラリの候補がリストとして表示されるため効率よくソフト開発ができます。pinと入力するとpinMode()などが候補として表示されるためコマンドを忘れてしまってもアシストしてくれるのは良い点です。
検証とマイコンボードに書き込む
Arduino IDEの検証とマイコンボードに書き込むの動作はVSCodeではArduino:VerityとArduino:Uploadと表現されています。
VSCodeの画面右上にUploadとVerifyができます。Verify横の三角マークは使用しません。VerifyとUploadはソースコード上にエラーがある場合はエラーの通知をします。
シリアルモニタでの確認
シリアルモニタで動作確認するためにSWを押すとモニタ上に「di1–ok」を表示します。VSCodeのシリアルモニターを使用する場合は下側のボード選択ツール横の電源プラグのようなマークを選択してボーレートを選択する必要があります。
COMポートを間違えていると表示されないので注意してください。
SWを押したときVSCode上でのシリアルモニタの表示に「di1–ok」が表示されているのでシリアルモニタを使った動作確認環境が再現できています。
ソースコード全体
以下のソースコードはコンパイルして動作確認をしております。コメントなど細かな部分で間違っていたりやライブラリの更新などにより動作しなくなったりする可能性があります。参考としてお使いいただければと思います。
#define PIN_DI 7
bool btnflg1;
uint8_t btn1;
void setup(){
pinMode(PIN_DI,INPUT_PULLUP);
Serial.begin(115200);
}
void loop(){
btn1 = digitalRead(PIN_DI);
if(btn1 == 0){
if(btnflg1){
btnflg1 = false;
Serial.println("di1--ok");
}
}else{
btnflg1 = true;
}
}
関連リンク
VSCodeのダウンロードからインストールまでの手順とC/C++のコンパイラーのダウンロードからインストールまでの手順についてまとめています。
Arduinoのライブラリを使って動作確認を行ったことを下記リンクにまとめています。
Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方
Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方
ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方
最後まで、読んでいただきありがとうございました。