Arduino IDE.app使ってますか?
正直、使いにくいですよね。
Processingがベースだから仕方ないですけど、エディタは一昔前の雰囲気があって、マルチカーソルとかもちろん使えません。。
もちろん、inoファイルを外部エディタで編集しても良いんですが、コンパイルができない!
いつも使ってるエディタでコンパイルできたらな〜ということで、今回はAtomを使います。
(ホントはNovaを使いたかった)
PlatformIOという組み込みIDEをプラグインすることで、自分の好きなエディタでArduino向けコードのコンパイルが出来ちゃいます。
(Novaは対応してません)
コードをゴリゴリ書きたい人はおすすめです。
PlatformIO とはArduino, PIC, AVR, ESPシリーズなどの主にIoTに使われるマイコンプラットフォームを流行りのエディタで扱えるようにしたものです。
コンパイルやアップロードはもちろんのこと、シリアルモニタやファイル管理なども組み込まれています。
さらに、ボードやライブラリをオンラインのパッケージ管理ツールと紐付けて管理できるモダンな仕組みも備わっています。
今回はこれをGitHub謹製のコードエディタ、Atomにインストールして使ってみましょう。
macOS CatalinaとBig Surでテスト済みのやり方を紹介しますが、Windowsでも大体おんなじと思います。
Atomを入れておいてください。
こんなことしてる人はもちろんclangのインストールが終わっていると思いますが、これがないとコンパイルできないので、怒られる前にインストールしておきます。
Terminal.appを開き、
xcode-select --install
と入力します。
すると、”Command Line Tools for Xcode をダウンロードしますか?”というダイアログが出てくるので、「OK」を押します。
その後にもこのようなダイアログが出てくるので、「インストール」をクリックします。
健全なネット環境だと10分くらいでインストールは終わります。
これでclangを入れることができました。
次に、Atomを起動します。
「⌘+,」を叩き、環境設定を呼び出します。
「+Install」をクリックします。
パッケージ検索に「platformio」と入れ、結果から「platformio-ide」を探します。 ~~なんかキモイ虫がアイコンです~~
インストールボタンを押して、健全なネット環境なら5分ほどでインストールは終
わります。
こんな感じのアラートが出るので、「Restart」を押してAtomを再起動します。
次からAtomを起動させるとすごいキモイ感じで起動します。
とりあえず無視して、プロジェクトフォルダを作らないといけないので、「+ New Project」をクリックします。
「Project Wizard」が開きます。
Name: プロジェクト名です
Board: ターゲットにするボードやマイコンを選びます。
Framework: コンパイルに使うフレームワークです。Board: に合わせて勝手に決められます。
Location:. プロジェクトフォルダの保存場所です。「デフォルト」とは、Documents/PlatformIO
のことです。もちろん好きな場所にしても良くて、その場合はチェックを外して、フォルダを選びます。
今までの“[ナンジャラカンジャアラ].ino”は”main.cpp”として追記していきます。
また、”lib”フォルダは、Arduino IDEで”library”フォルダに入れていたライブラリフォルダを入れて、ローカルで参照することができます。プロジェクトフォルダ毎にライブラリの管理ができるので、ライブラリのバージョンなどを気にせずそのプロジェクト固有のライブラリとして使うことができます。
📁 [プロジェクトフォルダ]
📁 include
#includeで使えるheadファイルを置きます。僕は使いません。
📁 lib
プロジェクト固有のライブラリを置く場所です。
📁 src
メインのコードを置く場所です。
📄 main.cpp
メインのソースファイルです。(inoの代わりはこれです)
📁 test
テストフォルダです。
📄 platformio.ini
PlatformIOの設定ファイルです
オーソドックスなLチカのプログラムを書いてみます。
src/main.cpp
を開きます。
#include <Arduino.h>
bool state = LOW;
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(13, state);
Serial.println(state);
state = !state;
delay(500);
}
こんな感じで追記します。
冒頭の#include <Arduino.h>
ってのが新鮮ですが、このヘッダファイルを読み込むことでArduinoで使う関数を使用できるようになります。
Arduino IDEでは気にしてませんでしたが、陰でこっそり読み込まれていたファイルになります。
できたらコンパイルしてみましょう。
左メニューの☑️ボタンをクリックします。
コードの下にこんなのが出ると成功です。
赤色だと失敗です。
左のメニューの🏠 ホームボタンをクリックして、PlatformIOのホームに移動します。~~相変わらずキモイ虫がいますが~~
その中からさらに「Devices」をクリックします
するとデバイス一覧が表示されます。
全然関係ないんですが、繋げてないのにここにBeatsのヘッドフォンが出てきます。意味不明。
ちょっと不親切なんですが、Arduino IDEではいちいち選んでいたシリアルポート が表示されます。
ちなみに、PlatformIOではそれっぽいポートに勝手に選択されるみたいです。
「えっ?親切じゃん」て思いますが、/dev/cu.usbmodemXXXX
みたいなことしか出てこないので、どれがボードかわかりません!!
その辺はplatformio.ini
を編集することで固定できるんですが、ややこしいので触れません。
さっきのコードの画面に戻り、➡️アップロード ボタンをクリックします。
これでArduinoにプログラムがアップロードされました!!
簡単ですね!!
🔌シリアルモニター ボタンをクリックすると、シリアルモニターのダイアログが出てきます。
「ここでは選べるんかい!」と突っ込みたくなる衝動を抑えて、
「Start」をクリックします。
すると、コード画面の下にシリアルモニターが表示されます。
うーん、簡単ですね。
こんな感じで、あっさりと高機能IDEをこさえることができました。
新しいボードやライブラリが出ても、オンラインパッケージャ上にあれば管理できます。その辺が今時ですよね。
ただし、このコンパイラには癖があり、(というか本来の意味で厳密なのですが)
例えば、呼び出しより後に関数が記述されているとエラーになります。
まあ、**Arduino IDEがゆるすぎたんですけど!*
ただし、hexアップロードやArduino as ISPで書き込みできないので、結局Arduino IDEを使ってます。。。。
🔪