Arduino(for vscode)でM5Stack Core2の開発環境を整えようとしたら案外大変だった話

M5Stack Core2を買ったので、使いづらいArduino IDEを脱出して、Arduino for VSCodeで開発しようと思ったんですが、設定で結構手間取ったので、必要な項目をメモしておきます。

 

まず、Arduino IDEは普通のWindowsを入れましょう。Windows App版ではなくWindows版です。私はWindows App版を入れていたようなんですが、どうにもうまく設定できなかったので、Windows版を再インストールしました。
しなくてもいけたかもしれませんが、手元だとライブラリマネージャが使えなかったので諦めました。

 

VSCodeのsettings.jsonと<project>/.vscode/c_cpp_properties.jsonの設定

この辺が、調べれば調べるほど違う書き方が出てきて、よく分からなくなっていたところです。

(そもそも私がほぼvscodeを触っていなかったために勝手に混乱していたのですが)<project>/.vscode/c_cpp_properties.jsonはプロジェクト固有の設定で、settings.jsonは全体にかかる設定です。settings.jsonの設定を<project>/.vscode/c_cpp_properties.jsonオーバーロードしたり追加するような感じですね。

まず、VSCodeのsettings.jsonにはこの辺を書いておきましょう。

    "arduino.path""C:/Program Files (x86)/Arduino",
    "arduino.commandPath""arduino_debug.exe",
    "C_Cpp.intelliSenseEngine""Tag Parser",
    "C_Cpp.default.browse.path": [
        "${workspaceFolder}",
        "${config:arduino.path}/tools",
        "${config:arduino.path}/libraries",
        "${config:arduino.path}/tools",
        "${env:USERPROFILE}/Documents/Arduino/libraries"
    ]

arduino.pathとarduino.commandPathは設定必須ではないですが、その下のbrowse.pathの中で${config:arduino.path}と書くことで、arduino.pathを環境変数っぽく呼び出せるので、arduino.pathだけでも書いておくといいと思います。

また、browse.pathの最終行の${env:USERPROFILE}はお察しの通りWindows環境変数の%USERPROFILE%を呼び出しています。
Arduino用のライブラリはユーザーディレクトリ配下のドキュメント/Arduino/librariesに入っていたのでそこを指定しています。

この状態で一度.inoファイルを開いてArduino: Verifyを行うと、恐らく自動的に<project>/.vscode/c_cpp_properties.jsonが生成されます。

このままだと多分#include <M5Core2.h>がbrowse.pathにないとIntelliSenseが波線付けてくると思います。(IntelliSenseの話だけだとは思うのでコンパイルは通るかもしれません)

なので、波線の解決ヒントからIntelliSenseの構成画面を開き、構成名をArduinoに変更し、詳細設定の中の参照: パスのところに${default}と書いておきます。そうすると<project>/.vscode/c_cpp_properties.jsonが以下の内容になってると思います。

{
    "version"4,
    "configurations": [
...
        {
            "name""Arduino",
...
            "browse": {
                "path": [
                    "${default}"
                ]
            }
        }
]
}

ここまで書いておけば恐らくIntelliSenseやコンパイルで詰まることはないと思います。