ろぼいんブログ
更新:

VS Codeで最低限で快適なArduino環境構築

コンソールにインストールの進捗状況が表示されているようす

はじめに

Arduinoは、電子工作やIoT開発に広く使われているマイコンボードです。Arduinoの開発環境には、Arduino IDEが標準で用意されていますが、Visual Studio Code(VS Code)でもArduinoの開発ができます。

VS Codeは、Microsoftが開発しているテキストエディターです。Arduino IDEよりも機能が豊富で、さまざまな拡張機能を利用できます。

Arduino IDEは少し前にバージョン2にアップデートされ、VS Codeと同じMonaco Editorベースになった(?)ようです。以前と比べて圧倒的に使いやすくなりましたが、それでもVS Codeの方が機能が豊富ですし、ひとつのエディターで完結した方が便利です。

この記事では、使い慣れたVS CodeでArduinoの開発をするための最低限かつある程度快適な環境を構築する方法について解説します。

対象読者

VS Codeの基本的な使い方を理解しており、VS Codeを使ってArduinoの開発をしたい人を対象としています。

前提条件

まずは、パソコンにVS CodeとArduino IDEをインストールしておきましょう。

Arduino IDEは、インストール後に一度だけ起動します。ドライバーなどのインストールが始まるので、すべてインストールします。インストールが終わったら、Arduino IDEは閉じておきます。

Visual Studio Codeの公式サイトのスクリーンショット

Visual Studio Code - Code Editing. Redefined

Arduino IDE 2のインストールページのスクリーンショット

Arduino IDE 2 | Arduino Documentation

拡張機能編

VS CodeでArduinoを扱うための拡張機能をインストールします。

Microsoftが公式にリリースしている、Arduino用の拡張機能を使います。

C/C++用の拡張機能もインストールしておきます。

また、スニペットを利用できるようにする「arduino-snippets」もインストールしておきます。これによって入力補完も効くようになります。

設定編

拡張機能をインストールしたら、それらの設定をします。

VS Codeの設定でarduino.useArduinoCliと検索し、チェックを入れます。

VS Codeの設定画面のスクリーンショット

または、settings.jsonに次の設定を追加します。

try{(()=>{function a(e){if(!e)return;let t=e.getAttribute("tabindex")!==null,n=e.scrollWidth>e.clientWidth;n&&!t?e.setAttribute("tabindex","0"):!n&&t&&e.removeAttribute("tabindex")}var u=window.requestIdleCallback||(e=>setTimeout(e,1)),i=window.cancelIdleCallback||clearTimeout;function l(e){let t=new Set,n,r;return new ResizeObserver(c=>{c.forEach(o=>t.add(o.target)),n&&clearTimeout(n),r&&i(r),n=setTimeout(()=>{r&&i(r),r=u(()=>{t.forEach(o=>e(o)),t.clear()})},250)})}function d(e,t){e.querySelectorAll?.(".expressive-code pre > code").forEach(n=>{let r=n.parentElement;r&&t.observe(r)})}var s=l(a);d(document,s);var b=new MutationObserver(e=>e.forEach(t=>t.addedNodes.forEach(n=>{d(n,s)})));b.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{d(document,s)});})();}catch(e){console.error("[EC] tabindex-js-module failed:",e)}try{(()=>{function i(o){let e=document.createElement("pre");Object.assign(e.style,{opacity:"0",pointerEvents:"none",position:"absolute",overflow:"hidden",left:"0",top:"0",width:"20px",height:"20px",webkitUserSelect:"auto",userSelect:"all"}),e.ariaHidden="true",e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand("copy")}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,` `);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(".feedback"))return;let t=document.createElement("div");t.classList.add("feedback"),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=>t?.classList.add("show"));let c=()=>!t||t.classList.remove("show"),d=()=>{!t||parseFloat(getComputedStyle(t).opacity)>0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener("blur",c),t.addEventListener("transitioncancel",d),t.addEventListener("transitionend",d)}function s(o){o.querySelectorAll?.(".expressive-code .copy button").forEach(e=>e.addEventListener("click",l))}s(document);var u=new MutationObserver(o=>o.forEach(e=>e.addedNodes.forEach(a=>{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{s(document)});})();}catch(e){console.error("[EC] copy-js-module failed:",e)}
settings.json
"arduino.useArduinoCli": true

次に、C_Cpp.intelliSenseEngineと検索し、Tag Parserを選択します。

VS Codeの設定画面のスクリーンショット

または、settings.jsonに次の設定を追加します。

settings.json
"C_Cpp.intelliSenseEngine": "Tag Parser"

また、お好みでClang_format_fallbackを好きな値に設定します。これは、フォーマットのスタイルを指定するものです。私の場合は{ BasedOnStyle: Chromium, IndentWidth: 4 }を指定しています。

VS Codeの設定画面のスクリーンショット

settings.jsonを使う場合は、次のように設定します。

settings.json
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Chromium, IndentWidth: 4 }"

したがって、設定後のsettings.jsonは次のようになります。

settings.json
{
// ...他の設定
"arduino.useArduinoCli": true,
"C_Cpp.intelliSenseEngine": "Tag Parser",
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Chromium, IndentWidth: 4 }"
}

これで、コード補完やフォーマッターが使えるようになりました。

使い方編

Arduinoのプロジェクトを始めるには、既存のスケッチのフォルダーをVS Codeで開くか、新しく.inoファイルを作成します。

VS Codeで.inoファイルを開いたようすのスクリーンショット

VS Codeの下部のナビゲーションバーに、Arduinoのボードやポートを選択するボタンが表示されます。これをクリックすると、ボードやポートを選択できます。

VS Codeの下部のナビゲーションバーのスクリーンショット

<Select Board Type>をクリックすると、使用するボードを選択するための画面が表示されます。

VS Codeの右半分のパネルにボードを選択する画面が表示されている

[Select your board]から、使いたいボードを選択します。プルダウンリストになっていますが、テキストを入力すると絞り込めます。私の場合は、[Arduino Uno(Arduino AVR Boards)]を選択しました。

プルダウンリストに[uno]と入力して絞り込みしているようす

ボードを選択したら、このパネルは閉じて大丈夫です。

同様に、[Select Serial Port]から使用したいシリアルポートを選択します。記録し忘れていてうろ覚えですが、シリアルポートを選択するとドライバーか何かのインストール画面が表示されるかもしれません。その場合は、インストールしておきます。

次に、Ctrl + Shift + Pでコマンドパレットを開き、[Arduino: Board Manager]を選択します。

VS Codeのコマンドパレットのスクリーンショット

右側のパネルにボードマネージャーが表示されるので、適切なものを探して[Install]をクリックします。私の場合は、Arduino UNO R4 Minimaを使っているので、[Arduino UNO R4 Boards]を選択しました。

ボードマネージャーのスクリーンショット

コンソールに進捗が表示され、インストールが完了すると[[Done] Installed board package - arduino]と表示されます。

コンソールにインストールの進捗状況が表示されているようす

これが表示されたら、コンソールとボードマネージャーは閉じて大丈夫です。終わったらスケッチに戻って、コードを書きます。

ボードへの書き込みや検証は、画面右上のボタンから実行できます。

VS Codeの右上に表示されているボタンのスクリーンショット

書いたスケッチを検証するには、チェックマークが目印の[Arduino: Verify]ボタンをクリックするか、Ctrl + Alt + Rを押します。

検証ボタンにフォーカスしているスクリーンショット

コンソールが表示されるので、「[Done] Verifying sketch '\<ファイル名\>'」と表示されれば成功です。

VS Codeのスクリーンショット。コンソールに検証が成功したことを示すメッセージが表示されている

スケッチを書き込む場合は、検証ボタンの左隣の矢印が目印の[Arduino: Upload]ボタンをクリックするか、Ctrl + Alt + Uを押します。

(アイコンが分かりにくくてダウンロードっぽく見えますよね…)

アップロードボタンにフォーカスしているスクリーンショット

複数のスケッチが含まれるフォルダーを開いている場合は、現在開いているスケッチではなく選択したスケッチが書き込まれます。

書き込むスケッチを切り替えるには、コマンドパレットで[Arduino: Select Sketch]を実行し、スケッチを選択します。

コマンドパレットのスクリーンショット

また、シリアルモニターを開くには、コマンドパレットで[Arduino: Open Serial Monitor]を選択します。適切なポート速度を選択すると、シリアルモニターが開きます。

コマンドパレットのスクリーンショット

シリアルモニターは、同時にArduino IDEとVS Codeのどちらか一方しか開けません。VS Codeで開いている場合は、Arduino IDEで開けなくなります。片方で使うときは、もう片方を閉じておきましょう。

まとめ

本記事では、VS Codeで最低限かつ快適なArduino環境を構築する方法と使い方について解説しました。

VS Codeは、Arduino IDEよりも機能が豊富で、コード補完やデバッグ機能などが利用できます。また、プラグインによって機能を拡張できます。

本記事を参考に、VS Codeで快適なArduino開発環境を構築してみてください。

参考

環境の構築にあたり、次の記事を参考にしました。

おすすめアイテム

※このリンクを経由して商品を購入すると、当サイトの運営者が報酬を得ることがあります。詳細はこちら

このサイトを支援する

Buy Me a CoffeeまたはGitHub Sponsorsで支援していただけると、サイトの運営やコンテンツ制作の励みになります。定期的な支援と一度限りの支援がありますので、お間違いのないようにお願いします。

Buy me a coffee

著者のアイコン画像

生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。

Webフロントエンドプログラマーで、テクノロジーに関する話題を追いかけています。動画編集やプログラミングが趣味で、たまにデザインなどもやっています。主にTypeScriptを使用したWebフロントエンド開発を専門とし、便利で実用的なブラウザー拡張機能を作成しています。また、個人ブログを通じて、IT関連のニュースやハウツー、技術的なプログラミング情報を発信しています。

最新記事