SlideShare a Scribd company logo
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
物語の始まり。
     自分はハードウェア設計人
        得意な言語はC
    パソコンのソフトとか大の苦手w

      何故、Pythonを使うの?

   近年、ハードウェアを扱うソフトが
     Mac 化しているのが原因。
 昔から、Windowsでしか操作出来ない事に
         疑問があった。

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

           ケース1
    GCCでLinux向けに開発する。
           ケース2
  Cygwinを使ってWinに対応させる。
          ケース3
Javaで開発してLinux&Winに対応させる。
          ケース4
   OS別にプログラムソースを変える。
Python
ここが良かったPython!

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

そして何より、この場で発表が出来た事が一番嬉しいw
ハード屋が喜びそうなライブラリ

           ドライバー系
pySerial : シリアルポート、 COM ポート
pyUSB :USBドライバが叩ける?
pyParallel: パラレルポート制御
             GUI系
wxPython :クロスプラットホームGUI
EasyGui :同じくGUI用ライブラリ
PyGame:GUIゲームを作る強力なライ
ブラリ
ハード屋が喜びそうなライブラリ 2
             理数系
Matplotlib :某製品風なライブラリ
NumPy :多次元配列や行列をサポート
SciPy :積分、線形代数、フーリエ変換
               3D系
 VPython :3D描画
 PythonCAD :3DでCADも扱える
             ロボット系
 pyrobot :Googleが作ったライブラリ
Python で作ろう!
 自作したハードウェアとPythonを使って 
 お手軽!電光掲示板ガジェットを作るよ~w
ハードウェアを用いてPythonを学ぶ
私が作った電光掲示板
+  +                  +
   +    システムの全体図    +
+                  + +




        +      +
+   +                  +
                   +
    +              +       +
+
Pythonで作って良かったこと

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

夢が広がる。作りたい物が増える。
悪かった部分もある。

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

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

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


頭を使えば(ソースを工夫すれば)
  何とかなる問題だと思う。
こうして
クロスプラットフォーム電光掲示板が
       完成した。
ちょっと脱線。
                 改善前の電光掲示板 表示機構
for num in range(0,51):
  for j in range (0,16):
   ser.write("Matlix.Buffrn")
   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.%04xrn" % (viwe[i])
    ser.write( tmp_str)
    ser.write("Matlix.DispONrn")
                  改善後の電光掲示板 表示機構
for num in range (0,17):
  for i in range (0,16):
   ser.write("Matlix.OneDatarn")
    tmp_str = "H.%04xrn" % (line[num][i])
    ser.write( tmp_str)
    ser.write("Matlix.DispONrn")
ちょっと脱線。
for num in range(0,51):
  for j in range (0,17):
   ser.write("Matlix.Buffrn")
   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.%04xrn" % (viwe[i])
    ser.write( tmp_str)
    ser.write("Matlix.DispONrn")


for num in range (0,51):
  for i in range (0,16):
  ser.write("Matlix.OneDatarn")
    tmp_str = "H.%04xrn" % (line[num][i])
    ser.write( tmp_str)
    ser.write("Matlix.DispONrn")
ハード屋らしい解決法w




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


ループ処理を
外部のマイコンに
処理させる。
リリース盤が出来ました!w
ハードウェアを用いてPythonを学ぶ
もう一つ 作って見ました。



Game
Pong
Pong とは
既にサンプルが沢山あった
早速、遊んでみる
        遊び方:
        ・Player1 ↑と↓
        ・Player2 WとS

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




  キーボード操作では
ちっとも面白くないゲーム!!
サンプルを改造してみる挑戦
改造した代表的なソース

ser.write("AD.ad8rn")
ser.readline()                  マイコン機器から
ser.write("I.rn")
adstr = ser.readline()
                                Pyserial で可変抵抗の
print int(adstr,10)             データを貰って来る。

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

player1 はボールのY軸と同じ(無敵のCOM)
player2 は可変抵抗で画面を上下に移動する。
早速、遊んでみよう!!
ハードウェアを用いてPythonを学ぶ
ここまでが Python 触りだして1ヶ月

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


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

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

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

   仕事でも積極的に
 取り入れていきたいと思う。
ハードウェアを用いてPythonを学ぶ
以上で発表を終わります。
最後に、
日本でPythonが流行らないので、
 試しに 擬人化をしてみたw


名前は、錦 伊織(仮)

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

書籍化する際はご用命をw
以上で発表を終わります。
The END
ハードウェアを用いてPythonを学ぶ

More Related Content

PDF
I2CでRaspberry Piから 複数の周辺機器を制御する
PDF
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
PDF
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
PPTX
Raspberry pi 2用のi2cアダプターの
PDF
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
PDF
OSC Tokyo 2013 Spring JRPUG
ODP
Open Design Computer Project - Tsukuba.pm
PDF
IPA未踏成果報告会
I2CでRaspberry Piから 複数の周辺機器を制御する
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Raspberry pi 2用のi2cアダプターの
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
OSC Tokyo 2013 Spring JRPUG
Open Design Computer Project - Tsukuba.pm
IPA未踏成果報告会

What's hot (20)

PPTX
ゼロから始める自作 CPU 入門
PPTX
Ren’pyの御紹介
PDF
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
PPTX
PYNQ 祭り: Pmod のプログラミング
PPTX
今時のLinuxにおけるGPUエンコード事情
PDF
seccamp2012 チューター発表
PDF
20210510 software design
PDF
今時のLinuxにおけるGPUエンコード事情2018
PDF
PYNQ祭りLT todotani
PPTX
PSoC4 BLEで作る簡単無線センサーユニット
PPTX
自作x86エミュレータの終焉
PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
PDF
Rust で RTOS を考える
PPTX
レベルを上げて物理で殴る 16x9
PDF
Pdp11 on-fpga
PPTX
PYNQで○○してみた!
PDF
Listen&notifyとbwpの間違った使い方
PPTX
Analog Devices の IP コアを使う
PDF
Pdp11onfpga
PDF
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
ゼロから始める自作 CPU 入門
Ren’pyの御紹介
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
PYNQ 祭り: Pmod のプログラミング
今時のLinuxにおけるGPUエンコード事情
seccamp2012 チューター発表
20210510 software design
今時のLinuxにおけるGPUエンコード事情2018
PYNQ祭りLT todotani
PSoC4 BLEで作る簡単無線センサーユニット
自作x86エミュレータの終焉
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Rust で RTOS を考える
レベルを上げて物理で殴る 16x9
Pdp11 on-fpga
PYNQで○○してみた!
Listen&notifyとbwpの間違った使い方
Analog Devices の IP コアを使う
Pdp11onfpga
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
Ad

Viewers also liked (20)

PDF
PythonでハードウェアをWebAPIにした話 #pyconapac
PDF
Pythonを用いた高水準ハードウェア設計環境の検討
PDF
これから Raspberry Pi をいじる方向けの資料 20130818版
PPTX
Raspberry Pi 3 + UART/Bluetooth issues
PDF
よくわかるRaspberry Piらしい使い方
PDF
PsychoPyを使った初学者向けの心理実験環境の構築
PDF
Micro Python で組み込み Python
PDF
Python for R Users
PDF
PyQtではじめるGUIプログラミング
PPT
Social media 101
PDF
Gettingstartedintransmediastorytelling1 0-110125214927-phpapp01[1]
ODP
Informatica
PPTX
DOCENTES SEDE CONCEJO DE CÚCUTA
PPT
Презентация Толмачева Артема
PDF
Septembra piedavajums lv
PDF
Premium Medical īpašais piedāvājums 2012.gada martā
PPT
Prosser career academy highschool
PPTX
Presentation1
PPT
սննդային թունավորումներ
PPT
Презентация Штырляева Дмитрия
PythonでハードウェアをWebAPIにした話 #pyconapac
Pythonを用いた高水準ハードウェア設計環境の検討
これから Raspberry Pi をいじる方向けの資料 20130818版
Raspberry Pi 3 + UART/Bluetooth issues
よくわかるRaspberry Piらしい使い方
PsychoPyを使った初学者向けの心理実験環境の構築
Micro Python で組み込み Python
Python for R Users
PyQtではじめるGUIプログラミング
Social media 101
Gettingstartedintransmediastorytelling1 0-110125214927-phpapp01[1]
Informatica
DOCENTES SEDE CONCEJO DE CÚCUTA
Презентация Толмачева Артема
Septembra piedavajums lv
Premium Medical īpašais piedāvājums 2012.gada martā
Prosser career academy highschool
Presentation1
սննդային թունավորումներ
Презентация Штырляева Дмитрия
Ad

Similar to ハードウェアを用いてPythonを学ぶ (20)

PPTX
天気予報ガジェットを作りな がら、Pythonを勉強しよう
KEY
PyOpenCLによるGPGPU入門
PDF
Python physicalcomputing
PPTX
電子工作のためのPython
ODP
Introduction of Python
PPTX
Arduino 入門
PDF
【学習メモ#4th】12ステップで作る組込みOS自作入門
PPTX
「Pythonでやってみた」~広がるプログラミングの愉しみ~
PDF
Pythonで ハードウェアを動かす楽しさと ハードウェアハック始めたきっかけ
KEY
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PDF
【更新版】20190628玉川大学脳トレ社会科学oTree演習編
PPTX
Polyphony の行く末(2018/3/3)
PPT
20140310 fpgax
PDF
C base design methodology with s dx and xilinx ml
PDF
Arduinoでプログラミングに触れてみよう
PPT
LL matsuri 2013-0824
PPT
LL matsuri 2013-0824
PDF
明日からはじめるネットワーク運用自動化
PPTX
ロボットシステム学2015年第5回
PDF
Pythonによる並列プログラミング -GPGPUも-
天気予報ガジェットを作りな がら、Pythonを勉強しよう
PyOpenCLによるGPGPU入門
Python physicalcomputing
電子工作のためのPython
Introduction of Python
Arduino 入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
「Pythonでやってみた」~広がるプログラミングの愉しみ~
Pythonで ハードウェアを動かす楽しさと ハードウェアハック始めたきっかけ
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
【更新版】20190628玉川大学脳トレ社会科学oTree演習編
Polyphony の行く末(2018/3/3)
20140310 fpgax
C base design methodology with s dx and xilinx ml
Arduinoでプログラミングに触れてみよう
LL matsuri 2013-0824
LL matsuri 2013-0824
明日からはじめるネットワーク運用自動化
ロボットシステム学2015年第5回
Pythonによる並列プログラミング -GPGPUも-

More from Yuta Kitagami (7)

PDF
mbed祭り 2017@秋の虎ノ門(北神)
PDF
PyCon JP 2017Yuta Kitagami
PDF
2015/03/26(木) Edison勉強会 博士のプレゼン
PDF
Artifact noise edisonプレゼン20140130
KEY
Pycon jp2012
PDF
Python design doc for sphinx
PDF
Gadget1 r4
mbed祭り 2017@秋の虎ノ門(北神)
PyCon JP 2017Yuta Kitagami
2015/03/26(木) Edison勉強会 博士のプレゼン
Artifact noise edisonプレゼン20140130
Pycon jp2012
Python design doc for sphinx
Gadget1 r4

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