ハードウェアを用いてpythonを学ぶ

38

Upload: yuta-kitagami

Post on 01-Jul-2015

7.991 views

Category:

Devices & Hardware


0 download

DESCRIPTION

2011年01月29日、Pycon mini JPにて発表したプレゼン資料お前、誰よ!→http://noise.artifactnoise.com/Twitter: @nonNoise

TRANSCRIPT

Page 1: ハードウェアを用いてPythonを学ぶ
Page 2: ハードウェアを用いてPythonを学ぶ
Page 3: ハードウェアを用いてPythonを学ぶ

自分はハードウェア設計人得意な言語はC

パソコンのソフトとか大の苦手w

何故、Pythonを使うの?

近年、ハードウェアを扱うソフトがMac 化しているのが原因。

昔から、Windowsでしか操作出来ない事に疑問があった。

だから、Pythonを使ってOS依存しないハードウェアを操作するソフトウェアを作りたかった。

物語の始まり。

Page 4: ハードウェアを用いてPythonを学ぶ

他の人はどうやっていたのか。

ケース1GCCでLinux向けに開発する。

ケース2Cygwinを使ってWinに対応させる。

ケース3Javaで開発してLinux&Winに対応させる。

ケース4OS別にプログラムソースを変える。

Page 5: ハードウェアを用いてPythonを学ぶ

Python

Page 6: ハードウェアを用いてPythonを学ぶ

ここが良かったPython!

・オープンソースで商用利用OK!・ライブラリが無駄に豊富!・C言語と親和性があった!・ソースが兎に角、綺麗!・サンプルも豊富!・Winで開発してLinuxでも動く!

そして何より、この場で発表が出来た事が一番嬉しいw

Page 7: ハードウェアを用いてPythonを学ぶ

ハード屋が喜びそうなライブラリ

ドライバー系pySerial : シリアルポート、 COM ポートpyUSB :USBドライバが叩ける?pyParallel: パラレルポート制御

GUI系wxPython :クロスプラットホームGUIEasyGui :同じくGUI用ライブラリPyGame:GUIゲームを作る強力なライブラリ

Page 8: ハードウェアを用いてPythonを学ぶ

ハード屋が喜びそうなライブラリ 2

理数系Matplotlib :某製品風なライブラリNumPy :多次元配列や行列をサポートSciPy :積分、線形代数、フーリエ変換

3D系VPython :3D描画PythonCAD :3DでCADも扱える

ロボット系pyrobot :Googleが作ったライブラリ

Page 9: ハードウェアを用いてPythonを学ぶ

Python で作ろう!

自作したハードウェアとPythonを使って お手軽!電光掲示板ガジェットを作るよ~w

Page 10: ハードウェアを用いてPythonを学ぶ
Page 11: ハードウェアを用いてPythonを学ぶ

私が作った電光掲示板

Page 12: ハードウェアを用いてPythonを学ぶ

システムの全体図

+ +

++++

+ +

++

++

+++

Page 13: ハードウェアを用いてPythonを学ぶ

Pythonで作って良かったこと

・シリアル通信が簡単に出来た。・文字の操作が簡単だった。・細かな変更を繰り返す実験に効果的・他のライブラリを組み合わせ出来そう・Winで作ってLinuxで確認できた。

夢が広がる。作りたい物が増える。

Page 14: ハードウェアを用いてPythonを学ぶ

悪かった部分もある。

・シリアル送信時の改行文字の指定

・WinとLinuxとのポートの指定先の違い

・パソコンの性能による駆動時間の違い

頭を使えば(ソースを工夫すれば)何とかなる問題だと思う。

Page 15: ハードウェアを用いてPythonを学ぶ

こうしてクロスプラットフォーム電光掲示板が

完成した。

Page 16: ハードウェアを用いてPythonを学ぶ

ちょっと脱線。

for num in range(0,51):  for j in range (0,16):   ser.write("Matlix.Buff\r\n")    for i in range(0,16):    buf_viwe[i] =((0x8000>>j & line[num][i])<<j)>>15    viwe[i] = 0xFFFF & (viwe[i]<<1)    viwe[i] |= buf_viwe[i]    tmp_str = "H.%04x\r\n" % (viwe[i])    ser.write( tmp_str)    ser.write("Matlix.DispON\r\n")

for num in range (0,17):  for i in range (0,16):   ser.write("Matlix.OneData\r\n")

tmp_str = "H.%04x\r\n" % (line[num][i])ser.write( tmp_str)ser.write("Matlix.DispON\r\n")

改善前の電光掲示板 表示機構

改善後の電光掲示板 表示機構

Page 17: ハードウェアを用いてPythonを学ぶ

ちょっと脱線。for num in range(0,51):  for j in range (0,17):   ser.write("Matlix.Buff\r\n")    for i in range(0,16):    buf_viwe[i] =((0x8000>>j & line[num][i])<<j)>>15    viwe[i] = 0xFFFF & (viwe[i]<<1)    viwe[i] |= buf_viwe[i]    tmp_str = "H.%04x\r\n" % (viwe[i])    ser.write( tmp_str)    ser.write("Matlix.DispON\r\n")

for num in range (0,51):  for i in range (0,16):  ser.write("Matlix.OneData\r\n")

tmp_str = "H.%04x\r\n" % (line[num][i])ser.write( tmp_str)ser.write("Matlix.DispON\r\n")

ループ回数を減らし、高速化!

Page 18: ハードウェアを用いてPythonを学ぶ

ハード屋らしい解決法w

ループ回数を減らすと高速化する!

ループ処理を外部のマイコンに処理させる。

Page 19: ハードウェアを用いてPythonを学ぶ

リリース盤が出来ました!w

Page 20: ハードウェアを用いてPythonを学ぶ
Page 21: ハードウェアを用いてPythonを学ぶ

もう一つ 作って見ました。

GamePong

Page 22: ハードウェアを用いてPythonを学ぶ

Pongとは

Page 23: ハードウェアを用いてPythonを学ぶ

既にサンプルが沢山あった

Page 24: ハードウェアを用いてPythonを学ぶ

早速、遊んでみる

遊び方:・Player1 ↑と↓・Player2 WとS

ボールがぶつかると音が出る。 

キーボード操作ではちっとも面白くないゲーム!!

Page 25: ハードウェアを用いてPythonを学ぶ

サンプルを改造してみる挑戦

Page 26: ハードウェアを用いてPythonを学ぶ

改造した代表的なソース

ser.write("AD.ad8\r\n")ser.readline()ser.write("I.\r\n")adstr = ser.readline()print int(adstr,10)

player1.position.y= ball.position.yplayer2.position.y = (SCREEN_HEIGHT ) - (int(adstr,10) * ((SCREEN_HEIGHT )/255.0))

マイコン機器からPyserial で可変抵抗のデータを貰って来る。

player1はボールのY軸と同じ(無敵のCOM)player2は可変抵抗で画面を上下に移動する。

Page 27: ハードウェアを用いてPythonを学ぶ

早速、遊んでみよう!!

Page 28: ハードウェアを用いてPythonを学ぶ
Page 29: ハードウェアを用いてPythonを学ぶ

ここまでが Python触りだして1ヶ月

これまで作った物は、・ Python で 電光掲示板・ Python で Pongゲーム触っている内に、何となくPython が扱えるようになったwソースも見やすいし、サンプルから学べる物が多い。何より、完成形に持ち込みやすい!!w

Page 30: ハードウェアを用いてPythonを学ぶ

もう時間になってしまったので、

兎に角、Python は、最強だと思う!!

Page 31: ハードウェアを用いてPythonを学ぶ

次は、

WEBライブラリも追加して 電光掲示板に Twitter を流す!

理数形ライブラリを追加して GUI計測ソフトを作って見たい。

仕事でも積極的に取り入れていきたいと思う。

Page 32: ハードウェアを用いてPythonを学ぶ
Page 33: ハードウェアを用いてPythonを学ぶ

以上で発表を終わります。

Page 34: ハードウェアを用いてPythonを学ぶ

最後に、

Page 35: ハードウェアを用いてPythonを学ぶ

日本でPythonが流行らないので、試しに 擬人化をしてみたw

名前は、錦 伊織(仮)

ヘビを飼っている。胸(ソースコード)が大きく魅力的w

書籍化する際はご用命をw

Page 36: ハードウェアを用いてPythonを学ぶ

以上で発表を終わります。

Page 37: ハードウェアを用いてPythonを学ぶ

The END

Page 38: ハードウェアを用いてPythonを学ぶ