MPU-6050のジャイロセンサーのデータでAndroid端末の画面の矢印を変化させるアクセサリーを作成した。
本当はセンサーを帽子につけて頭でAndroid端末を操作しているようなものを作りたかったけど、自分で首を回しながら端末の画面と自分の頭を一緒にビデオに撮るのが難しかったので、手に持ってビデオに撮るようにした。
USB Host ShieldでADKが作れるのは手軽でいい。
前回、全部1バイトのデータしか送受信してなかったけど、今回はint16_t
のデータを3つ(x, y, z)送受信するのにAndroid側でbyte
配列からshort
に戻すのに-10くらいの値が-266に化ける現象があって、調べたら原因はbyte
配列からshort
に戻すところだった。
byte[] buffer = new byte[16384]; 略 // bufferに読み込んで、buffer[i]はコマンドが入っている。 short x, y, z; x = (short)((buffer[i+1] << 8) + (buffer[i+2]&0xff)); y = (short)((buffer[i+3] << 8) + (buffer[i+4]&0xff)); z = (short)((buffer[i+5] << 8) + (buffer[i+6]&0xff));
下位バイトの0xff
との&
を行わないと化ける。