PlatformIOでArduinoの純正IDEから卒業する
PlatformIO
久々にArduinoを使うことになり,せっかくだしコマンドラインから開発したいなぁとなって調べているうちに,良いものを見つけました.
VSCodeの拡張機能としてインストールでき,ArduinoのIDEが無くても動作する優れモノです. 今回はPlatformIOの導入方法について説明してみたいと思います.
Arduinoの純正IDE
(もしかしたら私が知らないだけの機能があるかもしれないです) よくプログラミングをする人はわかると思いますが,Arduinoの純正IDEは機能がとても少ない… 複数のファイル編集もタブしかなく貧弱ですし,変数や関数の補完もしてくれない. Vimのキーバインドも使えないし…
いわゆるVSCodeみたいなインテリジェントなエディタに対して機能が貧弱なんですね.
PlatformIO
そこで開発されているのがPlatformIOで,コマンドラインから使えるマイコン向けのビルド・書き込みツールです. Arduinoだけでなく色々なマイコンに対応しているそう.
コマンドラインから使える,と言うことはコーディングと書き込みで別のツールとして使うこともできます. スクリプトを書いて自動で書き込みとかもできる. しかし,ボードの正式名称を調べたり決められたコマンドを使わなければいけなかったりと設定ファイルを作るのがちょっと面倒だったりする.
コマンドを覚えるのが面倒,そう言う人のために,PlatformIOを用いたIDE,PlatformIO IDEと言うものが用意されています.
また新しいIDEを入れなくてはいけないのか…と思いきや,ページを開けばわかりますが,AtomだったりVisualStudioCodeの拡張機能として導入できます(と言うより拡張機能がインストールされたAtomがダウンロードできるといった様子です).
VisualStudioCodeの拡張機能として導入するメリットは以下の通り.
- 普段使い慣れたエディタで開発できる
- GUIベースでプロジェクトの設定が可能
- ボードの選択をはじめとしたプロジェクトの設定をビジュアルに行うことができる
- ビルドや書き込みもワンボタン
- PlatformIOの拡張機能をインストールすると左下に専用のボタンが現れ,ビルドや書き込みをワンボタンで行うことができる
VisualStudioCodeにPlatformIOを導入する
VisualStudioCodeは軽量かつ高機能なエディタとして誰にでもお勧めできます. インストールはこちらから.
何となくやればインストールは終わるはず.
次に拡張機能をインストールします.
左側のアイコンのうち一番下をクリックし,検索窓にplatform
まで入れれば一番上に出てきます(画像ではすでにインストールされていますがインストールボタンが出てくるはず).
基本それだけ.
インストールできるとPlatformIO Homeといったウィンドウが出てくるはず…または左下の家のマークをしたボタンからも開けます.
開いた時の画像.
NewProjectと言うボタンがあるはずなので,それをクリックしボードなどを選びます. ボード選択の部分は文字を入力でき絞り込みが行えます. フォルダの配置場所はご自由に.
プロジェクトが作成されると,フォルダ階層が表示されるはず.
プログラム本体はsrc/main.cpp
にあるので,これを開き,Lチカのコードを書いてみます.
あとは左下にある「→」ボタンをクリックすると,ビルドと書き込みが行われます.
その他の機能
Arduinoを使う上でシリアルモニタの使いやすさは捨てがたい. もちろんPlatformIOにもその機能が搭載されています. 左下にあるアイコンのうち右のほうにある,コンセントみたいなアイコンをクリックするとシリアルモニタがターミナル上に表示されます. ちゃんと動く.便利.
まとめ
以上,VisualStudioCodeでPlatformIOを導入するメリットとその方法について説明してきました. 使い慣れたIDEで開発できる,しかもGUIでプロジェクトの設定やビルド・書き込みができるところが非常にありがたい. さらにシリアルモニタまで使えるとか,純正のIDEをはるかに超えた使いやすさでした.
注意
以前platformioを使おうとした時に,PythonのVer2を使えるようにしなくてはならず,PyenvでVer3を使っていた自分にとっては使いづらかった記憶があります(今は消しましたが…). 同様にPyenvを使っていてVer3をデフォルトにしている人は何かしら上記の手順でエラーが出るかもしれません. 今どのバージョンに対応しているのかがぱっと見わからなかったので,もしかしたらすでにVer3に対応しているのかもしれません.