Upload
monochrojazz
View
287
Download
0
Embed Size (px)
Citation preview
音ゲーマーの憂鬱 .py2015.9.12 @monochrojazz
Q: 何者か・ @monochrojazz・音ゲーマー・大学時代物理専攻だったが 会社に入ったら IT 部署に配属されていた→ じゃあプログラムで音ゲーを作ろう・セキュリティ関連の話に興味があるとかないとか
Q: この発表何すか・家で音ゲーやりたいがために勉強もかねて作ったもの(+ α )を紹介・その一部に python が使われていたりするのでその時使ったコードとかモジュール等を紹介(ややこじつけ気味)
百聞は一見に如かず
Android アプリ+ mbed +マイコン( PIC16F1827 )
最近携帯コントローラも作った
出来るだけ簡単に曲を追加したい
RaspberryPi
WindowsPC
タブレット 1タッチパネルで遊ぶ用タブレット 2外部コントローラで遊ぶ用
手動でデータ同期+2 回 USB でデータ配信は面倒
Web サーバにゲームデータを投げる
Python でデータ統合、共有フォルダにマウントした WindowsPCに保存
WindowsPC にデータ追加して後はタブレットでダウンロード
昔 RaspberryPiからデータ統合プログラム .exe ( C# )を動かしていたがWin8 からできなくなった
import sysimport sqlite3
argvs = sys.argv
conn = sqlite3.connect(argvs[1])conn_sub = sqlite3.connect(argvs[2])conn_sub.row_factory = sqlite3.Rowsql_sel = "select * from gameData"cursor = conn_sub.cursor()
for row in cursor.execute(sql_sel): print (row["status"]) sql_ins = "update gameData set status = ?, score = ?, bp = ? where noteId = ?" conn.execute(sql_ins, (row["status"], row["score"], row["bp"],row["noteId"]))
conn.commit()conn.close()conn_sub.close()
参考:http://d.hatena.ne.jp/hirogl_python/20100503/1272903240
カラム名でデータにアクセスできて見やすい
PHP で呼び出し$exe = 'python3 …/dbint.py …/Xperia/allbeater.db …/ARROWS/allbeater.db';$pp = popen($exe, "w");
+ α のお話( python と SPI 通信)
RaspberryPi + ADC コンバータ+温度・照度センサ
参考:というかここのコードの丸パクリhttp://tech.naviplus.co.jp/2014/07/23/raspberry-pi%E3%81%A7ad%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BFmcp3208%E3%82%92%E4%BD%BF%E3%81%86/
import sysimport timeimport RPi.GPIO as GPIO
class MCPLib: spi_clk = 11 spi_mosi = 10 spi_miso = 9 spi_ss = 8
def getChData(self, ch): GPIO.output(self.spi_ss, False) GPIO.output(self.spi_clk, False) GPIO.output(self.spi_mosi, False) GPIO.output(self.spi_clk, True) GPIO.output(self.spi_clk, False)
中略
# 12 ビットの測定結果を AD コンバータから受信 value = 0 for i in range(12): value <<= 1 GPIO.output(self.spi_clk, True) if (GPIO.input(self.spi_miso)): value |= 0x1 GPIO.output(self.spi_clk, False)
GPIO.output(self.spi_ss, True) return value
import spidevimport time CE=0 spi = spidev.SpiDev()spi.open(0,CE) while True:raw = spi.xfer2([0x68,0x00]) # 0b01101000, 0x00value = ((raw[0]<<8)+raw[1]) & 0x3ff # Shifting operation
SPIdev っていうモジュールもあるけど失敗したので諦めたhttp://orion-lifelog.com/2014/12/23/raspberrypi%ef%bc%88%e3%83%a9%e3%82%ba%e3%83%99%e3%83%aa%e3%83%bc%e3%83%91%e3%82%a4%ef%bc%89-python-spidev%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e9%83%a8%e5%b1%8b%e3%81%ae%e6%b8%a9%e5%ba%a6%e3%82%92/
温度と照度が取れた
照度センサに手をかざして暗くする温度センサを温める