加速度センサーを触る †GPSを使って、GoogleMAPにて自分の移動したポイントを表示するアプリケーションを作っている友人の話に触発されて、加速度センサーを試してみる。 加速度センサーキットは、秋月で売っている。 picが載っていて、シリアルでコマンドを送ると、x軸y軸で、2バイトずつ計4バイトのデータを返してくれる。 作ってみた。 加速度センサー付属のソフトで見てみる。 †作ったキットが、ちゃんと動くのか付属のソフトで試してみる。 こうなる。 Pythonで制御してみる †Pythonには、PySerialというライブラリがある。Windowsで使うには、window extensionが必要になる。 使い方は簡単で、シリアルをオープンして、'G'(0x47h)を書き込むと、4バイトデータが帰って来るというのも、最初に'G'を送った時、初期化のため少し時間がかかるが、その後は、連続して'G'を送り、連続して値を受け取る。 プログラムはこんな感じ。50回連続で、加速度を読む。 import serial,time ser=serial.Serial(0) print ser.portstr ser.timeout=2 ser.write('G') recv=ser.read(4) for i in range(50): t1=time.time() ser.write('G') recv=ser.read(4) if len(recv)!=4: continue x=255*ord(recv[0])+ord(recv[1]) y=255*ord(recv[2])+ord(recv[3]) x=x/10000.0 y=y/10000.0 xg=(x-0.5)/0.125 yg=(y-0.5)/0.125 t1=(time.time()-t1)*1000 print 'time=%d xg=%f yg=%f' % (t1,xg,yg) time.sleep(0.025) ser.close() 結果は、 time=9 ms xg=-0.440000 yg=0.066400 time=9 ms xg=-0.458400 yg=0.029600 time=9 ms xg=-0.468800 yg=0.075200 time=9 ms xg=-0.422400 yg=0.066400 time=9 ms xg=-0.468800 yg=0.039200 time=9 ms xg=-0.440000 yg=0.066400 みたいな感じになる。 変換の部分は、 x=255*ord(recv[0])+ord(recv[1]) y=255*ord(recv[2])+ord(recv[3]) x=x/10000.0 y=y/10000.0 xg=(x-0.5)/0.125 yg=(y-0.5)/0.125 こんな感じで書けば良い。 pygameを使って見る。 †pygameを使って作ってみると、こうなる。 pygameのstarsをベースとした。 |