VSCode でM5シリーズ開発時のメモ PlatformIO 編 

#はじめに
VSCodeでPlatformIOを導入する時のメモ。2022年1月版
PlatformIOのインストールからM5シリーズをターゲットマイコンとして
プロジェクト作成、ビルド、書き込みまでのメモ。
テストしたデバイスは下記(1/5/2022)
* M5Stack Gray
* M5StickC Plus
* ATOM Matrix
#Visual Studio Codeについて
VSCodeのインストール、日本語化などはここでは割愛。
VSCodeのバージョンは 1/3/2022 時点で 1.63.2
#PlatformIOのインストール
拡張機能からインストール。
1/3/2022 時点でのPlatormIOのバージョンはV2.4.0 
(下画面キャプチャはすでにインストール済みの状態)
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/956fa6b0-5c59-e34c-a4c7-25debc3fdea9.png">
####警告が出る場合
Visual Studio Code Extension for Arduinoをインストールしてあると拡張機能が競合するとメッセージが出る。
拡張機能から無効化すればこのメッセージは出なくなる。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/c96ff6fe-0602-25e9-bddd-f64df95109f7.png">

#PlatFormIOでの開発
##プロジェクトの作成
「+New Project」or「+Create New Project」から新規プロジェクトを作成する。
上記どちらからでもプロジェクトウィザードが開くので、必要な部分を設定する。

* Name はプロジェクト名。メインのコードを記述するファイルの名前ではない。
* Board は使用するものにあったものを選択。
    * M5Stack Gray -> M5Stack Grey ESP32 (M5Stack Core ESP32と違うのかは不明。)
    * M5StickC Plus -> M5Stick-C (M5Stack)
    * ATOM Matrix  -> M5Stack-ATOM 
* Frameworkは2種から選べる。私はArduinoIDEをずっと使っていたので、こちらでもArduino Frameworkを使うこととする。
    * Arduino 
    * Espressif IoT Development Framework 
* Location はプロジェクトの作成場所を指定できる。デフォルトでよければ、チェックをいれたままで、指定したければチェックを外して、作成場所を指定する。
* Finishでプロジェクトの作成開始。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/edb1978f-c3a1-501d-af15-831188d9f3c8.png">

####初回プロジェクト作成時のトラブル
私の環境では初めてプロジェクトを作るときは、Finishを押してから、編集可能に移るまで結構時間がかかった。
5分以上かかった気がする。それ以降は数秒でできており再現性がない。
プロジェクト作成のウェイト画面が出てるときにVSCodeの他の部分に触れると、処理が途中で止まるようでここで少しはまった。
初回プロジェクト作成時はじっくり待つ必要があるかもしれない。

下記のようなプロジェクトフォルダーが開かれた画面になればOK。（下記はmain.cppを開いている状態）
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/30a1e58b-5fa5-dfd7-bd33-4b5b3e7c536c.png">
これでとりあえずプロジェクトの作成は完了。
コードの記述はプロジェクトフォルダ直下の src フォルダ内の main.cppを編集する。
ArduinoIDEではないため、ファイルの拡張子は .ino ではない。

###ライブラリの追加
この状態ではM5シリーズのライブラリがまだ入っていない。
PIO Home の Libraries から検索をかけて必要なライブラリをプロジェクトに追加していく。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/6f3e1f98-379f-1a94-5c27-58a0f1879c1d.png">
必要なライブラリを見つけたらバージョンを選択して　Add to Project を押す。
また別のウィザードが引くので、このライブラリを使用するプロジェクトを選択して Add を押す。
これで選択したプロジェクトの特定の場所にライブラリが追加される。(.pio/libdeps の中)

* M5Stakc
    * M5Stack
* M5StickC Plus
    * M5StickCPlus
* ATOM Matrix
    * M5Atom
    * FastLED

ATOM Matrixの場合はFastLEDのライブラリも必須。

###プログラム記述
動作確認用のプログラム記述してみる。
Hello Worldだけでは面白くないので、LCDへの文字表示と、LEDの点滅、シリアル通信(書き出しのみ)も行ってみる。
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/8f1135ff-39e5-ea4d-8f81-ffebd22914e4.png">
コードが書けたらビルド、アップロードだが、Platformio.iniにシリアル通信のbpsを指定。
これはM5Stack側の設定ではなくPC側でシリアルモニタを使うときの設定。下記一行を追加する。

```platformio.ini
monitor_speed = 115200
```
<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/a3884e78-c834-6cba-3093-0cf354c35323.png">
(一行コメントアウトしているのは、このライブラリは今回のスケッチでは使用しないため。)

###ビルド、アップロード
![スクリーンショット 2022-01-04 171950.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646821/f22cae0b-c4fc-6a8b-bdcf-65a1422e5ef8.png)
左下のアイコンから、ビルド、アップロードを行う。
ターミナルに実行結果が表示される。SUCCESSとでれば完了。

###シリアルモニタ
左下のアイコンのコンセントマークを押すとシリアルモニタとしてターミナルに表示される。
ArduinoIDEのようにパソコン側からシリアル通信でデータを投げたい場合は・・・？？？

#おわりに
順次更新予定とする。