テクノ折り紙
ダイソーで買ったCR2032を赤色LEDで挟んで、セロファンの折り紙で作った風船をディフューザーにした簡易非常灯。
Gainerが到着したので早速いじってみた。ちなみに電子工作は初めて。配線とか色とかわかってませんが。とりあえずチュートリアルの通りに挿す。
おっと、LEDが点灯してますよー!
しかもUSBの電力で。
Gainerの本も面白いですよ。FlashからLEDを点滅させるっていうサンプルとかはすぐ試せてよかった。
で、週末はこれをPythonから制御する技を伝授されてくるわけです。
初めてpydevcampに参加したわけですが充実した三日間でした。幹事とセッションリーダーの皆様ありがとうございました。
さて、今回はユニットテストの話とかNodeBoxとか(mac持ってないけど)pylonsとか面白そうな話題が目白押しで色々目移りしたのだけど、電子工作力を強化してきた。
帰りの電車の中でpylonsまわりをいじってみたのだけどAuthKitのあたりがちょっと理解できなかったので、もうちょっとpylons力も強めないとなと思った次第。というか何か作ろう。あとpylonsのMLもできたナイス即参加。
あとは、折角参加するんだったら、なんか発表しないとだめだなぁと。次回はLTでなんか話す気概で臨む。
Gainerというキットとpythonを使うと、信号を受け取ったり信号を外に送ったりとコンピュタの中だけで閉じるのではなく、現実世界へ干渉するということがおこなえると。 フィジカル・コンピューティングというらしいですが、これがわりとお手軽に出来てしまうので驚きですな。
初日はgainerに慣れるということで、LEDを光らせたりとかコードを読んだりとか何をやっているのかを知るのに時間がかかった。
こんな感じでLEDが交互に光るだけでかなり嬉しい。
出力に慣れたら今度は入力を受け取ってみる。センサとしてヴォリュームをつないで抵抗値を変えたりしてみた後は、みんな大好きな?加速度センサーをつないでみる。結構簡単な回路でOK。下のほうにちょこんと刺さっている黒い物体が加速度センサ(小さい)。
ぶんぶん振ると、それに応じて入力が変わる。撮りかたが悪いので数字が分からないけど。
これだと、あまり面白くないのでpygameを使って、グラフィカルな表現にしてみる。
x,y,zの傾きに応じて四角がそれぞれ動きます。おーすげー。
ここまでくるとあとは思い思いに好きなものをつくりはじめていきます。なんという集中力!ってな感じで黙々と作業。
隣のヒトのブロック崩し。傾きでブロックを打ち返すヤツを制御してる。楽しそう!。
えと、僕は傾きに応じて円の大きさや色を変えて、偽アートっぽいことをしてみたのだけど、うっかりとるのを忘れたので手元に動画がない、という。もう少し綺麗なのを作ったらアップしよう。
あと、リアルチョロQリモート操作がすごかった。電子工作2.0!
さらに、これいじると大空へ羽ばたけるかな?マイハンダごてとか欲しくなりますなー。
ビジュアル系だとNodeBox on jythonが立ち上がってるし、jythonからprocessing呼ぶっていう手もあるかなーと(それだったら最初からprocessingでって突っ込みは無しで)。
Built with Processing [改訂版] も出るらしいのでちょっとアツイかもしれませんな。
いろいろと刺激を受けた三日間だった
IPアドレスに応じて色を変えられるのであれば、アクセスログをLEDで光らせればいいんではなかろうか?と思ったので。
参考
Gainerのほうは秋月で買ったカソードのフルカラーLEDを刺した。抵抗は全て330Ω(それしかなかった)でピンポン球はダイソーかどっかで買った6個入り100円のヤツを錐とドライバーでぐりぐりした。
という単純な配線。
アクセスログは自宅サーバーに直接アクセスしてIPアドレスを返すようなCGIを用意した。 今回初めてPyGainerを使ってみた。
import sha,struct,urllib2,time,sys
from time import sleep
from PyGainer import PyGainer
#from random import randint
p = '/dev/cu.usbserial-A2002mCa'
g = PyGainer()
config = { 'baudrate' : 38400, 'timeout' : 5 }
#def rand_rgb():
# return(randint(0,255),randint(0,255),randint(0,255))
def get_rgb():
ip = urllib2.urlopen('http://myserver/taillog.cgi').read()
print ''.join(ip.split('.'))
s = sha.new(ip).digest()
code = struct.unpack('5L',s)[0]
blue = int((code >> 6) & 0x0ff)
green = int((code >> 15) & 0x0ff)
red = int((code >> 24) & 0x0ff)
return (blue,green,red)
if g.open(p, config) == 0:
if g.reset() == True:
print "RESET"
else:
print "ERROR"
sleep(0.1)
g.version()
g.configuration(1)
sleep(0.1)
for i in range(100):
(blue,green,red) = get_rgb()
g.set_specified_analog_output_port(0, green) # G
g.set_specified_analog_output_port(1, blue ) # B
g.set_specified_analog_output_port(3, red ) # R
sleep(3)
g.set_specified_analog_output_port(0,0)
g.set_specified_analog_output_port(1,0)
g.set_specified_analog_output_port(3,0)
g.close()
動かした。うしろでカチャカチャうるさいのは犬が晩ご飯を催促している音。
Identiconでいうところのパターンのようなものの表現は点滅で実装しようかと思ったが、それって分かりにくいよなと。もう少し面白そうなデバイスはなかろうか。
08022009 電子工作
あとで読む。
そして作る。
06122008 電子工作
衝動買い
ポケットリファレンスみたいなもの。
パラパラとめくってみたら面白そうだったので。
07102008 電子工作 Gainer processing
とりあえずprocessingでいじる。マウスの位置に応じて色が変化するように。
コードは単純なので色もあんまり出なかった。
import processing.gainer.*;
Gainer gainer;
void setup(){
gainer = new Gainer(this);
}
void draw(){
background(0);
}
void mouseMoved(){
float rx = (float)mouseX / width;
float ry = (float)mouseY / height;
int v0 = int(255*ry);
int v1 = int(255*rx);
gainer.analogOutput(0, v0);
gainer.analogOutput(1, max(v1-v0,0));
gainer.analogOutput(3, max(v0-v1,0));
}
参考
jythonでwiiコントローラー使って遊ぼうかなと思いついたので朝から色々試してみた。
javaのライブラリ経由でアクセスすればよかろうと、WiiremoteJとbluecoveの組み合わせでいけるかなと思ったんだけどどうもBT-Mini2EDRを認識してない。
最初はWindowsで開発していたのですが、私の手持ちのBluetoothアダプタ(BT-Mini2EDRとBT-UD1)では何度やっても認識せず。しかたがなくmacbookにインストールすると全く問題なく接続できました。
どうも認識しないものらしい。これもまたMacBookを買えという見えない力が働いている証拠なのだろう。
Wiiでテルミンも面白そう。
29032008 電子工作
近所のホームセンターでハンダーライセンスゲット。
はんだごて買ってきた。あとワニ口クリップの小さいやつ。
しかし、フルカラーのLEDは売ってなかった。単色じゃなくてフルカラーのが欲しいのよ。