visual studio code でarduino-cli を使用する
visual studio code でarduino-cli を使用する
仕事でvscodeの便利さを思い知り、arduinoもvscode上で開発できないかと思い調べてみると出来そうだった。 日本語ドキュメントが少なかったり、古かったりだったので、備忘録を兼ねてログを残しておく。(2023年3月現在)
注意
筆者はvscode初心者です。なんか色々やったら出来たという状況です。ここに書いてない事で必須な事があるかもしれません。バージョンアップで以下の方法が使えなくなる可能性もあります、あらかじめご了承ください。
目標
vscodeのarduino拡張機能を入れるのが本題になるが、調べてみると対応がLegacy Arduino IDEとArduino CLIなるものだった。バージョン1.8.19以前のIDEがLegacy Arduino IDEになるらしく、これのリリースが2021/12/20である。その次のリリースは2.x.xとなっている。つまり、GUIのIDEを使っている場合、古いバージョンしか対応してないらしい。
(筆者は久しぶりにarduinoを使おうと最近IDEをインストールしたため、2.0.3になっていた。)
レガシーもまだダウンロードできるのでそっちでもいいが、レガシーと名の付く通り、そのうちダウンロードできなくなる事と、CLIの方が拡張性が高そうな事を考慮してCLIを選択する。
そういうわけで、本目標はvscodeでarduino-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画面下の\
c_cpp_properties.json
この時点ではincludeなどが設定されておらず、関数が認識されない。 ctrl+alt+iを押すとc_cpp_properties.jsonにインクルードなどが自動的に設定され、関数やマクロ定数が認識されるようになる。もしそのままの場合、VScode画面下の{} C++の{}にカーソルを合わせると(C++ではなく、{}に合わせるので注意)メニューが出るので構成の変更を選択しArduinoを選択すると認識されるようになる。
以上
この手順を踏めばコーディング、検証、アップロードができるはず。 今回はIDEでも最初から使えるUNOが対象だったが、arduino互換ボードの場合、別途設定が必要になると思う。 使う機会があれば、更新したい。
2023/8/24 追記 Arduino UNO R4 Minima対応
基本的には上記と一緒だが、intelliSenseの自動設定が不十分なのでc_cpp_properties.jsonのincludePathに "C:/Users/[ユーザー名]/AppData/Local/Arduino15/packages/arduino/hardware/renesas_uno/1.0.2/variants/MINIMA/includes/**" を追加し、拡張機能設定のDisable Intelli Sense Auto GenをONする。