ハードウェアを用いてpythonを学ぶ
Post on 01-Jul-2015
7.991 Views
Preview:
DESCRIPTION
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