Cookbook / Convert outputs of an acceleration sensor to angles

code

Max/MSP

icc06_acc_sample.zip

Processing

  1. //this is dummy
  2. import gainer.*;
  3.  
  4. void setup {
  5.     ...
  6. }
  7.  
  8. void draw {
  9.     ...
  10. }

Flash

  1. import gainer.*;
  2.  
  3. var gnr:Gainer = new Gainer("localhost", 2000, Gainer.MODE1, true);
  4.  
  5. var xMin:Number = 70;
  6. var xMax:Number = 180;
  7. var yMin:Number = 70;
  8. var yMax:Number = 180;
  9. var xSinTheta:Number = 0;
  10. var ySinTheta:Number = 0;
  11. var xInDegree:Number = 0;
  12. var yInDegree:Number = 0;
  13.  
  14. gnr.onReady = function() {
  15.     this.beginAnalogInput();
  16.     _root.onEnterFrame = mx.utils.Delegate.create(this, loop);
  17. }
  18.  
  19. function loop():Void {
  20.     trace("x: " + this.analogInput[0] + ", y: " + this.analogInput[1]);
  21.  
  22.     xSinTheta = Gainer.remap(this.analogInput[0], xMin, xMax, -1, 1);
  23.     ySinTheta = Gainer.remap(this.analogInput[1], yMin, yMax, -1, 1);
  24. //  trace("x: " + xSinTheta + ", y: " + ySinTheta);
  25.  
  26.     xInDegree = Math.asin(xSinTheta) / Math.PI * 180;
  27.     yInDegree = Math.asin(ySinTheta) / Math.PI * 180;
  28. //  trace("x: " + xInDegree + ", y: " + yInDegree);
  29.  
  30.     _root["x"].text = Math.round(xInDegree);
  31.     _root["y"].text = Math.round(yInDegree);
  32. }

Handling Flash

prev 1 - 2 - 3 - 4 - 5
Print