加速度センサとたわむれてみる

D

以下がMXMLのソース。ほとんどコピペ。まるで自信無しw

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="36" width="383" height="204"  creationComplete="init()">
	<mx:Label x="25" y="10" text="X軸:"/>
	<mx:Label x="28" y="68" text="Y軸:"/>
	<mx:Text x="117" y="10" id="idx"/>
	<mx:Text x="117" y="68" id="idy"/>
	<mx:Script>
		<![CDATA[
			import gainer.Gainer;
		
			private var _gio:Gainer;
		
			public function init():void
			{
				_gio = new Gainer("localhost", 2000, Gainer.MODE1, true);
				_gio.onReady = _start;
			}
			
			private function _start():void {
				_gio.beginAnalogInput();
				addEventListener(Event.ENTER_FRAME, _onEnterFrame);
			}
		
			private function _onEnterFrame(e:Event):void
			{
				var xIn:Number = _gio.analogInput[0];
				var yIn:Number = _gio.analogInput[1];
				var xSinTheta:Number = Gainer.remap(xIn, 70, 180, -1, 1);
				var ySinTheta:Number = Gainer.remap(yIn, 70, 180, -1, 1);
				var xInDegree:Number = Math.asin(xSinTheta)/Math.PI*180;
				var yInDegree:Number = Math.asin(ySinTheta)/Math.PI*180;
				idx.text=String(xInDegree);
				idy.text=String(yInDegree);
			}
		]]>
	</mx:Script>
</mx:WindowedApplication>

加速度センサを傾けると重力加速度が変化しそれが電圧の変化につながる。
プログラムはそれを受け取って逆サイン関数で変換して角度を求めている。
右に90度に傾けたときにX軸が90になる。
前に90度に傾けたときにY軸が90になる。