「ブロックを積みながら」前回の投稿が4月であったので、半年以上も間が空いてしまいました。前回までBlocklyの処理系をいじりながらVPLの「心」に近づきたいなどと思ってきましたが、方針を改めました。「使う側」から迫ろうと。ついては、最近ハードの方も原点回帰でArduino使うことが多いので、Arduino用のVPLの一つArduBlockを使ってみます。
※「ブロックを積みながら」投稿順 index はこちら
根強い人気のArduinoなので、開発ツールはいろいろあり、VPL(ビジュアル・プログラミング)分野でも複数あることが分かりました。今回は、その中でArduBlockというツールを使わせていただくことにいたします。
ArduBlockのホームページはこちら
簡単にその特長をまとめると、
- 「ブロック」積んでいくスタイルのVPLである。
- ArduinoIDEのプラグインとして実行される。
- Arduino用の実行オブジェクトを得られる。
ローカル環境でビジュアルにプログラミングして、実行オブジェクトをマイコンに書き込むことができる点、なかなか素晴らしい処理系じゃないでしょうか。そして、Arduinoならではの豊富なライブラリ等の恩恵もある程度は受けられそうです。
今回トラブったのは、このプラグインのインストールです。インストールといってもJavaのjarファイルを所定のフォルダに置くだけなので、何の難しいこともないのです。所定のフォルダにjarファイルを1個コピーするだけで以下のようにArduinoIDEにArduBlockが追加され、起動できるようになります。
しかし、上記のホームページのGetting Startedからダウンロードできたjarファイルだとエラーが発生してArduinoIDEに生成したソースが受け渡しできなかったです。
まず、Getting Startedに書いてあるパス自体は問題ないと思います。Windowsの場合、ArduinoIDEがスケッチを格納しているのに使うフォルダ(普通は自分のドキュメント・フォルダの配下にあるArduino)の下の
tools/ArduBlockTool/tool
の下にダウンロードしたjarファイルを置くだけです。
Getting Startedでダウンロードのリンクを開くと、SourceForgeに飛ぶのですが、デフォルトでダウンロードされたのは、20130712という版でした。アイキャッチ画像に掲げたのがこの版。かなり古い感じ。ちゃんと日本語化されているのですが、上に表示されるボタンは
保存、読込、アップロード
の3つだけです。後で新しいバージョンのGUIを見ると分かりますが、新しい版にくらべると上のボタンも左面のライブラリ部分も選択肢が少ないです。この版でも普通にプログラムを書くことはでき、セーブ( adpという拡張子のファイルが作られますが、この手の言語のお約束か、XMLファイルです)も可能。しかし、アップロード・ボタンを押すと、ArduinoIDEの側にJavaのエラーが報告され、本来、このGUIを起動したArduinoIDEのエディタ画面に挿入される筈のソースができません。
そこで、SourceForgeに戻ってチェックすると先ほどの版より新しい20140828という版が存在することに気付きました。こんな感じ。
上のボタンも増えていれば、左の面も充実。なお、この版で、古い版で作ったファイルを開くことはできました。しかし、セーブしたXMLを覗いてみるといろいろ変化していたので、念のためこの版つかって新規作成して書きなおしました。しかし、依然として「Arduinoにアップロード」ではJavaのエラーが出ます。
なんだかな~とWebをあさっていると、SPICEMAN.JPというところに記事を発見しました。ありがとうです。こちらではArduBlockホームページのGetting Startedの下にあるHACKING ARDUBLOCKというページからリンクを辿ってArduBlockのGitHub上のReleasesへ行って、jarファイルをダウンロードしてました。普通、初心者はGetting Startedへ行くよな、Hackingに行かないといけないのは何だ、などとブー垂れながら、私もそこから最新版らしいもの(それでも2017年)を取得。
見た目はあまり変わらないですが、実際にコードを入力してみると、以前の版では「素のままの数字」だった端子番号が、ピン番号のメニューからDxxなどという名で選択というところなど、かなり良くなっていました。
肝心のArduinoIDEへのアップロードですが、OKでした。生成されたコードはこんな感じです。
ちょっと手動で書く場合と比べるとまどろっこしい感じもしますが、いろいろなケースを考えるとこんな感じにならざるを得ないのかなとも想像されます。
勿論、コンパイルもOK。そして実機(中華版のArduino UNO互換機ですが)へのダウンロードも成功。「いつものLチカ」動作いたしました。
処理系がコードを吐いてくれるようになったので、次回はこの環境で何か周辺装置を動作させてみますか?しかし、このところ3年くらい開発が停滞しているような感じ。ArduBlock 大丈夫か?