てきとうなさいと べぇたばん

Arduino収めとArduino 1.9の新機能について

autocompletionをひらく。Ctrl + Spaceでこの画面が出てくる ことし作ったもの(少ない)

Arduino Advent Calendar

Arduino Advent Calendar 25日目てきめんです。

どっちかというと、今年やったまとめとか、内部の実装、1.9betaの内容をまとめました。

ことしやったこと

くらいでしょうか。

あとは、ダイソーで購入した300円バッテリーがArduinoで使えたーということもありました。

シリアルJPEGカメラ

Adafruit Product ID 1386としか言いようのない、JPEGシリアルカメラをArduinoで使うためにはどうしたらよいかと言うのをひたすら悪戦苦闘しまくって解決に導きました。

デバッグのためにシリアル通信の内容をダンプさせて、正常な動きをしているか確認したり、ソースコードのバグを見つけたり、結局はArduino Microで解決させたりと色々大変だったなとおもいました。

LCD

デバッグの時にLCDあったほうがよくねと思って作りました。

Arduino 1.9 beta

10月11日にBe among the first to try the Arduino IDE 1.9 Betaという記事がpostされてました。

何か力になれば良いのですが、それはそれとして非常に面白そうな内容でしたのでまとめてみます。

ビルドしてみる

Arduino IDEをビルドすれば実際何ができるのかわかると思うので、ビルドしてみます。今回はWindows 10 64bitでビルドします。

ArduinoのGithubレポジトリを参考にしました。https://github.com/arduino/Arduino/wiki/Building-Arduino

MinGWはインストールしてあったので、JavaとAntだけ。

ソースコードをcloneする

まずはソースコードをcloneするのですが、そのままgit-cloneしてしまうと1GBを超える上にめっちゃ時間がかかります。なので(やりかたは色々ありますが)depth 1を加えて一つだけ。

$ git clone --depth 1 git@github.com:arduino/Arduino.git

このままでは1.8.6のソースなので、pullします。

$ git checkout -b ide-1.9.x-beta
$ git pull origin ide-1.9.x-beta

ビルドツールのインストール

ビルドツールのインストールを行います。JDKをインストールしますが、32bitでないとビルドできてもdllを読み込めないので実行ができずに落ちます。

環境変数JAVA_HOMEとANT_HOMEとPathを設定すればおしまい。

ビルド

/path/to/Arduino/buildディレクトリまでcdを行いantを実行します

$ cd /path/to/Arduino/build
$ ant run

これでビルドが終了した後、Arduino IDEが実行されます。

1.9の新機能と気になる機能

autocompletion

今までのArduino IDEは言っちゃ悪いがIDEとしては力不足感がありましたが、1.9からautocompletionが標準搭載されます。

Ctrl + Spaceを入力すれば入力候補が一覧にでてくるようになります。

動画に撮ってみた

arduino-preprocessor

Arduinoスケッチというのは、初期状態ではsetupとloopのみですが、C++のコードとしてコンパイラに解釈させるためには、変換作業が必要です。

arduino-preprocessorというものが作られています。プロトタイプ宣言を補完するためのツールのようです。

The other is arduino-preprocessor, which supersedes ctags in the sketch preprocessing phase. Moving to a different tool has been a necessary step for many reasons, the most important being the ctags’ limited parsing of complex C++ sketches.

(拙訳) arduino-preprocessorは、スケッチのプリプロセッシングフェーズにctagsを取って代わるものです。たくさんの理由があって違うツールに意向する必要がありました、大きな理由としてはctagsがC++スケッチをパースする際にctagsの限界に到達してしまうことです。

わざわざClang/LLVMを使うというアプローチにはすごく興味深くてもうちょっと深く調べたいなと。

おわりに

今年はそんなに何もやっていない感じだったので、結局Arduino IDEの実装を見てまとめた記事になってしまいました。Arduino IDEも、どんどん進化しているようですし、いろいろなチャレンジも試みられているようです。

Arduinoは1つのパッケージとしてみるとコンパイラやIDEなど様々な技術を必要としているようにみえるので、何かしらで貢献できると嬉しいなーと考えていたりします。