こんにちは、ENGかぴです。
Arduinoのソフト開発はArduino IDEを使用しますがVSCodeの拡張機能でArduinoを追加するとVSCodeでArduinoのソフト開発ができます。VSCodeにArduino機能を追加する手順をまとめています。対象OSはWindows10(Windows11でも動作確認済み)とします。
VSCodeの準備
VSCodeのダウンロードやインストールの方法やにC/C++のコンパイラーであるMinGWのインストール方法ついては下記記事を参考にしてください。
以下はVSCodeがインストールされていることを前提とします。MinGWのインストールはVSCode上でArduino環境以外でコンパイルする場合に必要になることがありますが、拡張機能でArduino環境を追加する場合は特に必要ありません。
拡張機能でArduinoを追加する
Arduinoの開発環境に対応した拡張機能をインストールします。

VSCodeを起動して横の機能拡張欄をクリックすると拡張するための検索パネルが表示されます。選択肢を絞るために検索欄に「Arduino」を入力します。「Arduino for Visual Studio Code」を選択して追加インストールします。
参考例はインストール済なのでインストールの表示はされていません。インストールするとVSCodeでArduinoのソフト開発ができるようになります。
新規ファイルを追加
後述の既存のArduinoファイルを置き換える方法をお勧めしますが、以下方法でArduino IDEを使用せずに開発環境を作ることができます。
新規ファイルを作成する前に作業用のフォルダー(今回の例ではtestフォルダーを作成)を準備します。VSCodeをファイルの編集のみで使用する場合はファイルを開いて作業しますが、コンパイルやライブラリのリンクを使用する場合はフォルダーを開く必要があります。
VSCodeを起動しファイル欄から新規ファイルを選択してファイルを作成します。ファイルを作成しただけではArudinoファイルとして認識しないため名前を付けて保存を選択し拡張子を「.txt」から「. ino」に変更して保存します。保存先はあらかじめ準備していた「test」フォルダの直下にしています。例ではWorkSpace/Arduino/test内にtest.inoを保存しています。

Arduinoファイルとして保存した後はVSCodeで「フォルダを開く」を選択してファイルを編集していきます。test.inoファイルはtestフォルダ内にあるのでVSCodeのファイル欄から「フォルダーを開く」を選択して「test」フォルダをクリックして選択して開きます。

フォルダーで開いた後は、VSCodeのエディタの下のステータスバー欄の設定を行います。
<Select Board Type>にはArduino Unoを選択し、<Select Serial Port>にはArduino Unoのポート番号として認識しているCOM番号を選択します。<Select Programmer>は特に指定しなくても問題ありません。

ボードタイプ(Select Board Type)やCOMポート(Select Serial Port)を選択するとtestフォルダー内に「.vscodeフォルダ」が作成され「arduino.jsonファイル」が作成されます。次にArduinoライブラリやコンパイルのための設定ファイルを追加します。
Arduino: Verify(VSCodeの右上のリストのマーク)をクリックするとVerifyを行い「c_cpp_properties.jsonファイル」が作成されます。「c_cpp_properties.jsonファイル」はArduinoファイルをインクルードパスの設定やコンパイルに関する情報を設定しているファイルです。
test.ino内にコーディングしていきますが、新規でファイルを作成した場合はArduino IDEのようにsetup()やloop()が準備されていないのでコーディングして関数内に処理を追加していきます。
void setup(){
//初期化に関する処理を入れる
}
void loop(){
//メインとして動作させる処理を入れる
}
エクスプローラー欄にARDUINO EXAMPLESがあるので、スケッチ例が参考にしながらコーディングすることができます。
既存のArduinoファイルを置き換える場合(お勧めの方法)
Arduino IDEで作成したファイルをVSCodeで編集する場合はArduinoファイルが保管されているフォルダーを開くことでVSCodeでの編集ができます。
フォルダーで開いた後の設定は新規ファイルを作成したときの手順と同じです。VSCodeのエディタの下のステータスバー欄の設定を行うとArduinoファイルを格納しているフォルダー内に「.vscodeフォルダ」が作成され、「.vscodeフォルダ」内に「arduino.jsonファイル」が作成されます。Verifyを行うと「.vscodeフォルダ」内に「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で学べるソフト開発と標準ライブラリの使い方
最後まで、読んでいただきありがとうございました。
2023年2月ごろのアップデートで過去にコンパイルできていたファイルがインクルードパスエラーになりコンパイルできなくなるなど問題があるため使い勝手が悪くなったと感じています。