visual studio code でarduino-cli を使用する

visual studio codearduino-cli を使用する

仕事でvscodeの便利さを思い知り、arduinovscode上で開発できないかと思い調べてみると出来そうだった。 日本語ドキュメントが少なかったり、古かったりだったので、備忘録を兼ねてログを残しておく。(2023年3月現在)

注意

筆者はvscode初心者です。なんか色々やったら出来たという状況です。ここに書いてない事で必須な事があるかもしれません。バージョンアップで以下の方法が使えなくなる可能性もあります、あらかじめご了承ください。

目標

vscodearduino拡張機能を入れるのが本題になるが、調べてみると対応がLegacy Arduino IDEArduino CLIなるものだった。バージョン1.8.19以前のIDEがLegacy Arduino IDEになるらしく、これのリリースが2021/12/20である。その次のリリースは2.x.xとなっている。つまり、GUIIDEを使っている場合、古いバージョンしか対応してないらしい。

(筆者は久しぶりにarduinoを使おうと最近IDEをインストールしたため、2.0.3になっていた。)

レガシーもまだダウンロードできるのでそっちでもいいが、レガシーと名の付く通り、そのうちダウンロードできなくなる事と、CLIの方が拡張性が高そうな事を考慮してCLIを選択する。

そういうわけで、本目標はvscodearduino-cliを使う事になる。

ダウンロード/インストール

vscodeのダウンロードからインストールについてはごまんと記事があるので、そちらを参照してください。 CLI公式サイトによると、インストール方法がいろいろあるらしい。 インストールページのビルド済みバイナリをダウンロードしてくる方法が手っ取り早そう。 arduino-cli.exeが入った圧縮ファイルがダウンロードできるので、展開する。 この時点でarduino-cli.exeをコマンドプロンプトなりで実行することで、ファイルのビルド、アップロードはできるようになっている。 今後の利用のために、パスを通しておきましょう。 自分はC:\Program Files直下にダウンロードし展開したフォルダを置き、パスを通した。

core のインストール(2023/8/24追記)

arduinoといっても様々な種類があるが、全てに対応しているわけではなく、それぞれに適応するcoreというファイルのインストールが必要となる。 まず以下コマンドで利用可能なプラットフォームとライブラリのローカルキャッシュを更新する。

$ arduino-cli core update-index

PCにarduinoを接続し、必要なcoreを判別する。

$ arduino-cli board list

出力のCore欄が必要なcoreになる。 以下コマンドでcoreをインストールする。

$ arduino-cli core install [必要core]

以上でcoreのインストールができる。

拡張機能インストール

一応この時点でPowerShellターミナルからビルド、アップロードはできるが(そのうちバッチで運用するかも)、せっかくなので拡張機能を導入する。 導入するのは - vsciot-vscode.vscode-arduino - ms-vscode.cpptools, ms-vscode.cpptools-extension-pack (IntelliSense用、どっちかでもいいと思うけどどっちが何なのかわからん。cppファイル用の拡張機能をインストールしておけばいいと思う。)

作業フォルダ構成について

ソースコードの配置の仕方に注意点がある。 setup, loop関数があるファイルは同名のフォルダに格納する必要がある。 つまり、hoge.inoにsetup関数、loop関数を書いた場合、そのファイルは -/hoge/hoge.ino に置かなければならない。ファイル名とフォルダ名が違った場合、setup, loop関数のあるファイル(=mainファイル?)を見つけられず、ビルドエラーが出る。

VScode設定

vscodeの設定(ctrl+,)で必要なのは、Arduino: Use Arduino Cliをチェックするだけ(だと思う)。IDEの場合、arduino: Pathとかを設定する必要があるらしいが、環境変数PATHが通っていればいい。 また、VScode画面下の\を選択する。 先に\はクリックするとエディタ上に新しいタブが開き、ボードを選べるようになるので、使うものを選択する。 \選択前はクリックしても候補が表示されないので、先に\