GAINERのMPUはPSoCなので、自分のところは開発環境はインストール済みだし、手持ちも部品だけでなんとかなりそうだ。付属している部品でも、ほとんどは賄えそうだ。Processingを試してみようと思っていたんだけど、思いもよらずに電子工作の方に来ちゃったな〜。逆にPCのプログラムから、自作のインターフェースを操作するためのものらしい。ハード的には、28pinDIPのMPUと、USB-SerialブリッジICが乗ってるだけで単純だけど、MPUのPSoCは決して高速のMPUではないけど、アナログ要素を持ってるし、内部配線をいろいろ弄れるので、外付け部品をかなり節約出来たりする。ライブラリも豊富なので、実験的なものを作るにも向いている。それにUSB-Serialブリッジを使ったのは良いと思う。USBをちゃんと使おうとすると、プログラムが難しくなっちゃうけど、Serialインターフェースならばとりあえず簡単に使える。USBインターフェースのあるPSoCもあるけど、アナログ関係の回路が貧弱になってしまうし。ハードを単純化して、使う開発環境の方をいろいろ用意して、誰でも使えるようにっていうコンセプトなんじゃないかな〜と思う。開発環境を用意してくれてるっていうのは、やっぱりとても有難い。調べてみると、今はGainerって別にPSoCに限らず、PICとかAVRとかが使ったものもあるようだ1。自分の場合は、今のところ開発環境が揃ってるのはPSoCなので、それで行こう!1アナログ回路は結構違うので、完全互換じゃないのかもしれないけど。公開されている回路図を見ると、とりあえず手持ち部品で作れそうなので、クローンを作ってみる。言っても、ブレッドボードに秋月のFT232RLのモジュールとCY8C29466を乗せて配線するだけだ。配線キットの線材を切ったり曲げたりしなくて良い様にしたので、ちょっと窮屈になってしまってるけど。最低限の配線で済ますことが出来たと思う。毎回配線するのは面倒だし、そもそもPSoCの開発環境が無いと出来ないので、素直にキットを買ったほうが簡単だけどね。実際のGainerには、過電流防止用のヒューズが入ってるみたいだけど、秋月の232RLモジュールには入ってない様なので、配線間違いは注意が必要。ファームウェア書き込みPSoCに、Gainerのファームウェアを書き込む。MiniProgですぐに書き込みが出来る。PSoCの開発環境はインストール済みとする。ファームウェアをダウンロードする。解凍すると、gainer.hexというファイルが1個あるだけだ。Programmerを起動して、gainer.hexを書き込む。これで、Gainerとして動作するはずだ。ドライバインストールUSB-Serialブリッジは、PC側からみてCOMポートに見えるようにドライバを入れる必要がある。ダウンロードして、圧縮ファイルを解凍するとドライバのフォルダが出来る。GAINERを、USBケーブルでPCに接続する。→接続した瞬間、緑色のLEDがチラっと点灯して、すぐに消える新しいハードウェアの検出ウィザードが開くので、自動インストールじゃなくて、ドライバのフォルダを指定する。次へのボタンを押すと、インストールを開始する。→時間が掛かるので数分待つ。ドライバのインストールを完了すると、もう一回ドライバのインストールをやらされるみたいなので、その場合は、もう一度同じ操作を繰り返す。ドライバインストールが終わると、緑色のLEDが点灯した状態になる。接続テストで失敗?シリアルポートから、コントロール出来るかどうかテスト。HyperTerminalでボーレートを38400bps、フロー制御をなしに設定。これで、*をキー入力すると、バージョン番号が表示されるはずだが。→なんだこれ?文字化けか。タクトスイッチを押しても何も表示されない。プロンプトらしい?マークも表示されないしなぁ。配線をじっくり見直してみるが、問題なさそう。USB-SerialモジュールのRxとTxを直結すると、ちゃんとキー入力が表示される。シリアルポートまでは問題なしか。文字キーを打った後に*を打つと、例えばA*とタイプすると以下のように[]内に文字が表示される。[A]*!ってことは、ボーレートも問題無いんだろうなぁ。何が悪いんだろう?もう一度手順を見直してみる。あれ、もしかするとこの?はプロンプトじゃなくてキー入力なのか。手順をちゃんと見てなかった。接続テスト今度はちゃんと手順通りに接続テストする。→ちゃんとバージョン番号が表示された!手順にはちゃんと書いてあったのに、プロンプトがあるだろうという思い込みでした。タクトスイッチに反応するのは、コンフィグレーションを変更した後なのか。コンフィグレーションを変更する。N*F*LEDのON/OFFは、以下のコマンドで出来ます。[top]ライブラリインストール自分の環境は、WindowsXPでProcessing1.0.1をインストール済み。processing.jpを開こうとすると何故かブラウザがフリーズする。processing.orgからダウンロードした。チュートリアルを見ながら、Processing用のライブラリをインストール。ここからダウンロード出来るということだが、v1.1.0rc5には、Processingのライブラリが含まれていないようだ。Pacageの下のgainerのリンクをクリックして、全バージョンを表示してみる。v1.1.0rc4には、Processingが含まれているようだ。ダウンロードして、解凍したものを指示に従って、Processingのインストールディレクトリにコピーする。結局のところ、example,lib,libraries,referenceのディレクトリをそのまま上書きすれば良いみたいだ。一応、MyDocumentのProcessingにも、exampleを入れておく。実行エラーチュートリアルで説明されているbuttonというプログラムが無いので、代わりにbuttonFunctionというのを動かしてみる。すると、ClassNotFoundExceptionエラーになってしまって実行できない。LEDプログラムも同様。これによると、ProcessingのバージョンアップでGainerに付属のライブラリと整合がとれていないことがあるらしい。Processingのlibraries/serial/library/内の、以下のファイルをlibraries/gainer/library/に上書きしてみる。librxtxSerial.jnilibこれで、エラーは出なくなった。LEDは画面上のボタンクリックでLEDが点灯するが、buttonFunctionはタクトスイッチに反応してくれない。gainer_libraries_v1-0-1b01a.zipをダウンロードしてみる。古そうだが、ファイル構成がチュートリアルに近い。Processingのインストールディレクトリに上書きして実行すると、やはりClassNotFoundExceptionエラー。さっきと同様の処置をするとエラーが出なくなった。LEDプログラムを実行すると、画面上に小さなWindowが出て、それがボタンになっている。ボタンを押すとLEDが点灯する。buttonプログラムを実行すると、やはり画面上に小さなWindowが出るが、それが表示器になっている。Windowは最初は黒いが、Gainerのタクトスイッチを押すと白くなる。buttonFunctionはbuttonプログラムと同様に、タクトスイッチを押すとWindowが赤く、離すと青くなる。buttonプログラムと違って、ボタンが押された時のイベント処理(gainerButtonEvent)で動いている。Processing→Gainerの基本的な動作確認はOK![top]GAINERの入出力デフォルトでは、GAINERの入出力は以下のように設定されているらしい。→4,3,2,1pinなるほど。役目を固定させて理解しやすくしてるワケか。ProcessingのGainerデモを試してみよう!デジタル出力デジタル出力の確認のために、以下のようにデジタル出力に4個のLEDを接続してみる。同じブレッドボード上に配線することも出来そうだが、ゴチャゴチャになっちゃうので別のブレッドボードで配線する。digitalOutProcessingのデモから、digitalOutを選んで実行してみる。1,2,3,4,q,w,e,rのキー入力で、デジタルポートにいろいろ出力するプログラムだ。digitalOutのプログラムを、全部そのまま載せてみる。}いろんなやり方でデジタルポート出力しているが、説明が要らない程、分かりやすいプログラムだ。→アップデートイベントのようなものか。→キーが押された時に実行されるこれだけで、デジタル出力プログラムを書けるのは、すばらしい!digitalOut2digitialOut2.pdeこのプログラムを実行すると、プログラムのソースの、framerate(1)という行がハイライトして、以下の表示が。Files\processing-1.0.1\reference\changes.html)が開く。framerateの改定があったから、変更点を確認しろということか。framerateは、frameRateという名前に変更になったってことか。