mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
4 lines
1.8 KiB
JavaScript
4 lines
1.8 KiB
JavaScript
function d(a,b,e,c){this.r=a;this.w=b;this.rmag=e;this.wmag=c;this.Gscale=this.Ascale=0;this.gyrosensitivity=131;this.accelsensitivity=16384;this.samplerate=200}d.prototype.calibrateMPU9250=function(){return new Promise(function(a){a("calibrateMPU9250 not working at the moment")})};d.prototype.initMPU9250=function(){if(113!=this.r(117,1)[0])throw"MPU9250 WHO_AM_I check failed";var a=this;return(new Promise(function(b){a.w(107,0);setTimeout(b,100)})).then(function(){a.w(107,1);return new Promise(function(a){setTimeout(a,
|
|
200)})}).then(function(){a.w(26,3);a.w(25,E.clip(Math.round(1E3/a.samplerate)-1,0,255));var b=a.r(27,1)[0];b=b&-27|a.Gscale<<3;a.w(27,b);b=a.r(28,1)[0];b=b&-25|a.Ascale<<3;a.w(28,b);b=a.r(29,1)[0];a.w(29,b&-16|3);a.w(55,34);a.w(56,1);a.wmag(10,18);return new Promise(function(a){setTimeout(a,100)})})};d.prototype.dataReady=function(){return this.r(58,1)&1};d.prototype.readAccel=function(){var a=new DataView((new Uint8Array(this.r(59,6))).buffer);return{x:a.getInt16(0,0)/this.accelsensitivity,y:a.getInt16(2,
|
|
0)/this.accelsensitivity,z:a.getInt16(4,0)/this.accelsensitivity}};d.prototype.readGyro=function(){var a=new DataView((new Uint8Array(this.r(67,6))).buffer);return{x:a.getInt16(0,0)/this.gyrosensitivity,y:a.getInt16(2,0)/this.gyrosensitivity,z:a.getInt16(4,0)/this.gyrosensitivity}};d.prototype.readMag=function(){var a=new DataView((new Uint8Array(this.rmag(3,7))).buffer),b=49120/32760;return{x:a.getInt16(0,1)*b,y:a.getInt16(2,1)*b,z:a.getInt16(4,1)*b}};d.prototype.read=function(){return{accel:this.readAccel(),
|
|
gyro:this.readGyro(),mag:this.readMag(),"new":this.dataReady()}};exports.connectI2C=function(a,b){return new d(function(b,c){a.writeTo(104,b);return a.readFrom(104,c)},function(b,c){a.writeTo(104,b,c)},function(b,c){a.writeTo(12,b);return a.readFrom(12,c)},function(b,c){a.writeTo(12,b,c)},b)} |