VSCodeでArduino

 

プロジェクトのライフサイクル

この章ではArduinoプロジェクトをVSCode上で回すためのコマンド操作等を説明します。

新しいスケッチを作成する

スケッチの作成(arduino-cli sketch new)に相当するVSCodeのコマンドはないようです。

ですから、新しいスケッチを作る場合は、手動でディレクトリを掘って.inoを作るか、arduino-cliを使って、

$ arduino-cli sketch new スケッチ名

のようにします。

詳しくは、Arduino CLI/プロジェクトのライフサイクル/新しいスケッチを作成する及び、スケッチについてを見て下さい。

スケッチを選択する

スケッチフォルダは他のフォルダと同じものです。

ですから、スケッチを開くには、

  1. 新しいウィンドウを用意する
  2. (必要であれば)当該ウィンドウでサーバに接続する(‘Connect Current Window To Host’)
  3. フォルダを開く('Open Folder’ボタン)

のようにします。この辺は通常のプロジェクトの始まりと同じです。

環境設定をする

留意点

現在のところ、arduino-cliの環境設定とVSCodeの環境設定は共用されません。つまり、arduino-cliで説明したようなファイルがあっても、VSCode環境では無視されるようです。ですから、VSCodeでプロジェクトを進めるにあたっては、あらためて環境設定を行う必要があります。

同じ理由でVSCodeで開発をしていた時にarduino-cliを使おうと思えば、あらためてarduno-cli用の設定ファイルを作らなければなりません。

この辺、もうちょっとどうにかならないものかと思うのですが、それぞれに「言い分」があるような感じなので、そんなものだと思って慣れるしかないようです。個人的には、VSCodeの方を優先して使って、どうしてもVSCodeでは出来ないことだけarduino-cliを使うというようにするのがスムーズなように思えます。

具体的には、arduino-cli uploadarduino-cliを使い、それ以外はVSCode内でやるということです。アップロードに関してもVSCodeで出来るのですが、VSCodeのアップロードは必ずコンパイルをしてからアップロードとなるので、コンパイルなしでバイナリをアップロードする時にはarduino-cliの方が都合が良いということからです。とは言え、これも後述する.vscode/arduino.jsonの中でoutputを指定しておけばコンパイル済みのバイナリがあれば再利用してくれるので、必要性は低いと思います。どうしてもエラーメッセージが見たい(しばしば通信エラーは起きます)とか途中経過を見たいとかという時には意味がありますが、通常の利用にはあまり意味がありません。そういったことを思えば、arduino-cliのことは一旦忘れてしまってVSCode上での設定だけ意識すれば良いのではないかと思います。

Arduino開発をVSCodeで行う時の環境設定ファイルは、プロジェクトのトップディレクトリ直下に.vscodeというフォルダが作られて、その中に置かれます。

.vscode/aruduino.jsonの設定

Arduinoプロジェクトの実行環境が設定されているファイルです。このファイルはスケッチファイルを開いた状態のステータス行にある項目を設定した時に自動的に作られます

開いた最初はこのような感じです。

このうちの<Select Programmer>, <Select Board Type>, <Select Serial Port>をクリックするとそれぞれが設定できますが、いずれかを設定すると.vscode/arduino.jsonが作られます。

このようになっている時の./vscode/arduino.jsonは、

{
    "port": "/dev/ttyUSB0",
    "configuration": "PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none,EraseFlash=none",
    "board": "esp32:esp32:esp32da",
    "programmer": "esptool"
}

というようになっています。post, board, programmerについてはどう対応しているかわかると思います。configurationArduino Borad Configurationの内容が反映されています。

./vscode/arduino.jsonは単純なJSONファイルなので、同じ環境の他のプロジェクトからコピーして来ても使えます。

各パラメータの詳細については、スケッチの設定をご覧下さい。

.vscode/c_cpp_properties.json

スケッチをコンパイルする時の環境が設定されたファイルです。このファイルは初めてスケッチをコンパイルする時に自動的に作られます。スケッチファイルのベリファイで問題がなければ、特にいじる必要のないファイルが作られているはずです。

このファイルは通常の(つまりArduinoでない)C/C++のプロジェクトでも同様のファイルが作られます。つまり、「VSCodeでC/C++をコンパイルする時の環境設定のファイル」であって、それのArduino用の設定が追加されているというものです。

このファイルの内容を変更する場合は、直接このファイルを開いて編集するか、F1を押してC/C++ Edit Configurations(UI)を選択すると編集できます。また、チェックでエラーがあるとログのペインのPROBLEMSのタブにエラーが出ていますので、そこの「×」マークをクリックして出て来るポップアップメニューの中のEdit "includePath" settingをクリックすると編集メニューが開きます。

ここで編集すれば、JSONを壊してしまうこともないでしょう。

これは単純なファイルなので、同じ環境の他のプロジェクトからコピーして来ても使えますが、ライブラリの環境はプロジェクト毎に異なりますから、あらためて作った方が良いでしょう。

あらためて作ると言っても、このファイルはVSCodeがintelliSenseの機能でほぼ自動生成してくれます。ライブラリ環境については、ライブラリマネージャを使ってライブラリ入れると適当に処理してくれます。

スケッチをコンパイルする

VSCodeには「コンパイル」という機能そのものはありません。後述するアップロードの時に自動的に行われるか、「Verify」コマンドを使います。

あるいはF1を押して「Arduino:Verify」を使っても良いです。CTRL + ALT + Rを押しても同様です。

このコマンドは内部的には単にコンパイルしているだけなので、ベリファイ = コンパイルと思っておいても問題ありません。

スケッチを書き込む

スケッチをターゲットボードに書き込むには、「アップロード」コマンドを使います。

あるいはF1を押して「Arduino:Upload」を使っても良いです。CTRL + ALT + Uを押しても同様です。

このコマンドは実際にスケッチを書き込む前にコンパイルを行いますが、直近のベリファイ以後何もしていなければ、すぐにアップロードを開始します。

スケッチを走らせる

スケッチを走らせるのは、それぞれのボードに依ります。

ボードによっては書き込んだ後にリセットされて走り始めるものもありますし、自分でリセットスイッチを押すもの、電源をオンし直す必要があるもの様々です。この辺はVSCodeがどうこうではなくて、ボードの話になりますので、ここでは解説しません。

ボードを走らせた時にコンソールメッセージ等を確認したい時があります。これもボードの機能に依りますが、ボードがシリアルポートにメッセージ等を出力する仕様になっているものであれば、VSCodeのシリアルモニタで確認することができます。

まずPanelを開きます。たいていは敢えて開かなくても、Arduino環境で何かしている時には開いていると思います。もし開いてなければ、View >> Appearance >> Panelと選択するか、CTRL + Jを押します。

ここでSERIAL MONITORを選択します。

シリアル通信にありがちの各種パラメータを設定してやってから、Start Monitoringをクリックすると通信が始まります。手動でスケッチの起動が制御できるタイプのボードであれば、通信が始まった後に起動してやれば、最初から観察することができます。

ここで指定するポート名は、スケッチを書き込む時のポート名と同じとは限りませんし、ちゃんと指定してやらなければなりません(デフォルトがそうなるというわけでもない)。

また、同じであった場合(たいていのボードで同じである必要があると思います)、モニタをした状態でスケッチをアップロードすると失敗することがあります。ですから、スケッチをアップロードする時には忘れずにモニタを停止しておきましょう。気づかずにハマるとボードが壊れたかと心配してしまいます。