はじめに
このページでは、インタラクティブインターフェイスiIF−12を動かすサンプルソフトウェアをご紹介します。
このページで使用するFlash関連のドライバソフトウェア等はアイ・ビー株式会社により作成されています。Flashでの開発環境の構築については前のページ「FlashでiIF-12を動かしてみる」を参照願います。
※Flashで浅草ギ研製品その他を動かす方のために、ろぽたるにコミュニティを立ち上げました。質問、こんなかっこいいもの作ったよ、という方はそちらへ投稿お願いします。
※以下の情報は2010年4月現在のものです。ご注意ください。
iIF−12についてはこちらを参照願います。
Flashでサーボを動かすスクリプトを書いてみる
前回はセンサーを駆動させてみましたが、ようするにFlashを使ってシリアル通信しているだけなので、センサー駆動と同じようにしてサーボ駆動も行えます。前回はこちらで用意したプログラムをコピーしただけですが、今回は実際に自分でプログラムしてみましょう。
まずは、Flashを起動します。
ActionScript3.0で記述するので、新規作成の「Flashファイル(AS3.0)」を押します。するとなにも入っていないFlashの画面が出ます。
画面が少し大きいので小さくします。ウィンドウ右のプロパティ(プロパティが出ていなかったら、「ウィンドウ」−>「プロパティ」で出しておく。)の、サイズの横の「編集ボタンを押して、サイズを200x200pxに設定し、「OK」を押す。
Flashの作業画面が200x200pxになります。
「ウィンドウ」−>「コンポーネント」を選択し、コンポーネントウィンドウを開きます。コンポーネントはその名のとおり、部品です。ボタンとかいろいろなものが標準で組み込まれています。
その中に「Slider(スライダー)」というものがありますので、先ほど200x200にしたFlashの領域にドラックアンドドロップをすると、スライダーが貼り付けられます。
貼り付けたスライダーをクリックし(青色になる)、「ウィンドウ」−>「コンポーネントインスペクタ」を選択してコンポーネントインスペクタを開きます。これでコンポーネントの各種設定を行います。
今回、このスライダはサーボの位置と連動しますので、値は0〜254の値になります(255はシンクロバイト値)。ということでスライダの範囲を0 〜254に設定します。また、初期値は中心位置である127にしてみます。
maximum を254に設定します。 value を127に設定します。
スライダーが選択されている状態(青くなっている)で、画面右上のプロパティのところを見ると、一番上のテキストボックスが空欄になっています。ここはコンポーネントの名前を入れるところです。コンポーネントに名前をつけておかないと、プログラム中からアクセスできないので、適当な名前をつけてみます。
ここでは「slider1」という名前にしました。
同じようにして、接続のときに使うボタンコンポーネントを配置してみます。コンポーネントウィンドウからボタンをドラックアンドドロップして、インスペクタの中のLabel(ボタンに表示されるテキスト)という項目を「接続」に変え、プロパティのところで名前を「btconnect」にしてください。
次にプログラムを書き込んでいきます。
タイムラインを見ると、Flashを開いた直後は「レイヤー1」の1つのレイヤーしか存在しません。フレームも1フレームだけしか存在しません。この1フレーム目には黒丸がついていますが、これはキーフレームが存在するという印です。この黒丸のところをクリックし、F9ボタンを押すと、このフレームの場所にActionScriptを記述することができます。
TIPS: 初めて使うソフトの場合、操作が不慣れなのでウィンドウがどこかにいってしまったり、ひらけなくなったりすることがよくあります。Flashの場合は、ウィンドウ環境を初期設定に戻すことができるので、なれるまで頻繁に初期設定に戻すことになります。
初期設定に戻すには「ウィンドウ」−>「ワークスペース」−>「初期設定」で戻ります。 ちなみに、私の場合はActionScriptを記述するウィンドウを移動するとどこかに入って消えてしまうことがよくありました。いまだにどうやると消えるかよくわからないまま使ってます。(ActionScropt歴2日)
では、ActionScriptを記述してみましょう。前回までで、iIF-12と通信する部分は、アイビーのサンプルをそのままで動くことがわかりましたので、通信部分だけをテンプレートとしてまとめました。
flash_temp.txt
(右クリックで対象を保存)
このファイルの中身を、先ほどF9で開いたActionScriptを記述する画面にコピー&ペーストしてください。
この状態で、すでにソケット通信の部分と、「接続」ボタンを押したときに通信が開始される部分が入れられています。
あとは、スライダーを動かしたときに、ソケットにたいして命令を送る部分を書けばよいだけとなります。
ではここに、スライダーを動かしたときのイベントを追加してみましょう。
次のように追加します。
flash_servo.txt
行60:slider1コンポーネントに対し、スライダーが変化したときにおきるイベント(SliderEvent.CHANGE)にonsliderChangeという名前をつけた。
行62:onsliderChangeの実際の記述はここからはじまります。 行65:bという名前の、バイトサイズ(8ビット)の配列(データの入れ物)を生成。
行66〜72:b配列に、送信データを入セット。行70はsの名前から6文字引いたものを代入しています。スライダの名前はslider1とつけましたので、6文字引くと1になります。よって名前の数字=サーボ番号になります。行71はスライダの現在値(valueであらわされる)を位置へ代入しています。
行73:ソケットに対して、送信データをセットします。writeBytes命令でセットされた送信データは、そのままにしておくといつかは送信されますが、いつ送信されるのかはOS(Windows)次第になります。即座に送信したい場合は次の行のflushを使います。
プログラムができたらパブリッシュします。まず、適当なフォルダを用意して、「ファイル」−>「保存」で保存しておきます。これで.flaファイルが作られます。次に「ファイル」−>「パブリッシュ」を選択するとパブリッシュが行われ、同じファイル名の.swfと.htmlファイルが生成されます。
iIF-12と通信するのにさらに rxtxSerial.dll と FlashToSerial.jar が必要なので、それらを同じフォルダに入れます。
これら2つのファイルは、通信プログラムを作って頂いたアイ・ビー社が運営する「ろぽたる」からダウンロードできます。詳しくは「FlashでiIF-12を動かしてみる」のページを参照願います。
ここでは、ファイル名をRH145にしました。必要なファイルがそろったらこのようになっているかと思います。
では実際に動かしてみます。
FlashToSerial.jarをダブルクリックして通信プログラムを起動します。。
ポートは、iIF-12を接続した時に確認したCOM番号を設定してください。ボーレートは115200です。設定したら「接続」を押します。正常に接続されたら、ボタンの表示が「切断」になります。
次にRH145.htmlをダブルクリックします。ブラウザが起動し、Flashで作成した画面が出るかと思います。接続ボタンを押して、スライダを変化させると、それに合わせてiIF-12の1番ポートにつないだサーボが回転するかと思います。
2010年4月20日
|