Espruino/libs/js/MPU9250.min.js
2023-06-13 09:22:21 +01:00

4 lines
1.8 KiB
JavaScript

function e(a,b,c,d){this.r=a;this.w=b;this.rmag=c;this.wmag=d;this.Gscale=this.Ascale=0;this.gyrosensitivity=131;this.accelsensitivity=16384;this.samplerate=200}e.prototype.calibrateMPU9250=function(){return new Promise(function(a){a("calibrateMPU9250 not working at the moment")})};e.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(b){setTimeout(b,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(c){setTimeout(c,100)})})};e.prototype.dataReady=function(){return this.r(58,1)&1};e.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}};e.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}};e.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}};e.prototype.read=
function(){return{accel:this.readAccel(),gyro:this.readGyro(),mag:this.readMag(),new:this.dataReady()}};exports.connectI2C=function(a,b){return new e(function(c,d){a.writeTo(104,c);return a.readFrom(104,d)},function(c,d){a.writeTo(104,c,d)},function(c,d){a.writeTo(12,c);return a.readFrom(12,d)},function(c,d){a.writeTo(12,c,d)},b)}