木曜日, 3月 20, 2008

gainer.pyで遊ぶ

Ouch! Ouch! Ouch!さんのgainer.pyをいろいろいじってみた。

が、なかなかうまくいかない。
備え付けLEDを光らせることと、ボタンの入力を取る事は出来たけど、加速度センサーの値がうまく取れない。
なぜかTrue or Falseで返って来る。Gainerの資料を読んでみるけど、よくわからん。

というか、True or Falseって明らかにPython側の話だよなと気付いたので、ソースとにらめっこ。
加速度センサーの値はget_specified_analog_input_continuous_modeで取っていたけど、こいつがset_to_gainerを呼んでいる。
で、set_to_gainerは確かにbool値を返している。多分これが原因だろうなとget_from_gainer_valueに変更。
しかし、変えていいもんなのか?I/Oモジュールが壊れたりしないよな?
と、恐る恐る実行すると、うまいことXYZの値がとれました。
結果はこんな感じです。

130 128 123
129 121 123
129 124 123
131 129 124
133 140 136
134 139 142
133 138 111
153 137 127
129 136 125
132 159 124

#左からXYZ

ついでに今回のコード。

from gainer import Gainer
import time

GAINER_PORT = "ポート番号"
gainer = Gainer()

gainer.open(GAINER_PORT)
gainer.configuration(1)

for i in range(10):
#but = gainer.get_button_state()
#print but
xin = gainer.get_specified_analog_input_continuous_mode(1)
yin = gainer.get_specified_analog_input_continuous_mode(2)
zin = gainer.get_specified_analog_input_continuous_mode(3)
print xin,yin,zin
time.sleep(0.5)
#gainer.set_onboard_led(1)
#time.sleep(3)
#gainer.set_onboard_led(0)

gainer.close()

gainer.pyは調査の過程で、私好みに勝手に改造してあるので、素のgainer.pyでは動かないかも。
他にも、setとgetが入れ替わっているところがあるけど、バグ報告はどうしたらいいのかな。
Ouch! Ouch! Ouch!にいちいちコメントするのも迷惑な気がするし。

5 件のコメント:

Ouch! さんのコメント...

こんにちは、亀鶴茄子さん。

Ouch!です。
今、このブログを見ました。
すみません、今リリースしているgainer.pyは、受信側が非同期処理が出来ないので、暫定的にボタン入力をしてます。
本当は、ちゃんと押されたタイミングで文字列を取得するように作るつもりですが、なんやかんやで遅れちゃってます。
またうまく行ったらブログで報告しますので、お許しを。

Ouch! さんのコメント...

Ouch!です。
もう一回、ごめんなさい、ちゃんとブログ読めてませんでしたね。
continuous_mode系はきちんとデバッグしていないので、コードが多分間違っているのでしょう。ちょっと見てみます。
getのはずなので、setを呼ぶのは明らかにおかしいですもんね。
お恥ずかしい。

亀鶴 さんのコメント...

betaを無理に使っているのは私なので、お気になさらず。

しかし、Python単体で動かせるというのは非常に楽しく、ニヤニヤしつつgainer.pyの今後の発展を期待しています。

亀鶴 さんのコメント...

ちなみにこのblogは、亀鶴さんと茄子さんのblogなので亀鶴茄子というタイトルだったりします。
なので、私のハンドルは亀鶴まででOKです。
ちょっと分かりにくいですが。

Ouch! さんのコメント...

Ouch!です。

>しかし、Python単体で動かせるというのは非常に楽しく、ニヤニヤしつつgainer.pyの今後の発展を期待しています。
GoogleGroupの方で展開する予定です。
ご協力よろしくお願いいたします。

>なので、私のハンドルは亀鶴まででOKです。
了解です。