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

Post on 01-Jul-2015

7.991 Views

Category:

Devices & Hardware

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

何故、Pythonを使うの?

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

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

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

物語の始まり。

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

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

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

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

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

Python

ここが良かったPython!

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

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

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

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

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

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

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

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

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

Python で作ろう!

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

私が作った電光掲示板

システムの全体図

+ +

++++

+ +

++

++

+++

Pythonで作って良かったこと

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

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

悪かった部分もある。

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

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

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

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

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

完成した。

ちょっと脱線。

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")

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

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

ちょっと脱線。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")

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

ハード屋らしい解決法w

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

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

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

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

GamePong

Pongとは

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

早速、遊んでみる

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

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

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

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

改造した代表的なソース

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は可変抵抗で画面を上下に移動する。

早速、遊んでみよう!!

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

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

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

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

次は、

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

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

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

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

最後に、

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

名前は、錦 伊織(仮)

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

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

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

The END

top related