2012年9月6日木曜日

Processing からシリアル通信でクロを制御する


僕のプロセッシングユニット RPU-10 にあらかじめ登録しておいた動作(単一の動きのモーションと、複数の動きをまとめたシナリオがある)を、 RS232C を介して実行させることができるんだー。

RS232C を介して送るコマンドは双葉電子工業さんの RPU-10 のページにあるよ。
http://www.futaba.co.jp/robot/robot_processing_unit/index.html

構成はこんな感じ。

[PC] Processing → USB to RS232C 変換ケーブル → RS232C to ステレオジャック → GDog

キー入力が 0 〜 9 だったら、その番号のモーションを動作させるコマンドを送るようにしてみました!

import processing.serial.*; Serial port; Serial port2; void setup() { // List all the available serial ports: println(Serial.list()); //シリアルポートの設定 port = new Serial(this, "/dev/tty.usbserial-003013FA", 115200); port.clear(); } void draw() { } void keyPressed() { println("keycode : " + keyCode); if(keyCode > 47 && keyCode <58) { byte b = (byte)(keyCode - 48); sendCommand(b); } } void sendCommand(byte b) { byte data[] = { 0x50, 0x4d, b }; println(data); port.write(data); } void serialEvent(Serial p) { if(port.available() > 0){ int b = port.read(); println(b); } }


draw() メソッドを省略しちゃうと、キーを押しても keyPressed() が呼ばれなくなっちゃうので注意してね。


ステレオジャックの構造を知らなかったんだけど、勉強になりました。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%B3%E3%83%97%E3%83%A9%E3%82%B0

チップ(T)をシリアルの Tx、リング(R)をシリアルの Rx として使ってるみたい。
テスターを使えばどの線がチップか、リングかスリーブ(GND)かわかるしね。




0 件のコメント:

コメントを投稿