mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
4 lines
1.9 KiB
JavaScript
4 lines
1.9 KiB
JavaScript
function e(a,c,b){this.read=c;this.write=b;this.write(242,1);this.write(244,39);this.write(245,160);this.readCoefficients()}function d(a,c){var b=(a[c+1]<<8)+a[c];b&32768&&(b-=65536);return b}e.prototype.setPower=function(a){var c=this.read(244,1)[0];this.write(244,a?c|3:c&-4)};e.prototype.readCoefficients=function(){var a=new Uint8Array(32);a.set(this.read(136,24),0);a.set(this.read(161,1),24);a.set(this.read(225,7),25);this.dT=[,a[1]<<8|a[0],d(a,2),d(a,4)];this.dP=[,a[7]<<8|a[6],d(a,
|
|
8),d(a,10),d(a,12),d(a,14),d(a,16),d(a,18),d(a,20),d(a,22)];this.dH=[,a[24],d(a,25),a[27],a[28]<<4|15&a[29],a[30]<<4|a[29]>>4&15,a[31]]};e.prototype.readRawData=function(){var a=this.read(247,8);this.pres_raw=a[0]<<12|a[1]<<4|a[2]>>4;this.temp_raw=a[3]<<12|a[4]<<4|a[5]>>4;this.hum_raw=a[6]<<8|a[7]};e.prototype.calibration_T=function(a){var c=this.dT;var b=(a/16384-c[1]/1024)*c[2];a=(a/131072-c[1]/8192)*(a/131072-c[1]/8192)*c[3];this.t_fine=b+a;return(b+a)/5120*100};e.prototype.calibration_P=function(a){var c=
|
|
this.dP;var b=this.t_fine/2-64E3;var f=b*b*c[6]/32768;f+=b*c[5]*2;f=f/4+65536*c[4];b=(c[3]*b*b/524288+c[2]*b)/524288;b=(1+b/32768)*c[1];if(0===b)return 0;a=6250*(1048576-a-f/4096)/b;b=c[9]*a*a/2147483648;f=a*c[8]/32768;return a+=(b+f+c[7])/16};e.prototype.calibration_H=function(a){var c=this.dH;var b=this.t_fine-76800;b=((a<<14)-(c[4]<<20)-c[5]*b+16384>>15)*((((b*c[6]>>10)*((b*c[3]>>11)+32768)>>10)+2097152)*c[2]+8192>>14);b-=((b>>15)*(b>>15)>>7)*c[1]>>4;b=E.clip(b,0,419430400);return b>>12};e.prototype.getData=
|
|
function(){this.readRawData();return{temp:this.calibration_T(this.temp_raw)/100,pressure:this.calibration_P(this.pres_raw)/100,humidity:this.calibration_H(this.hum_raw)/1024}};exports.connect=function(a,c){return new e(c,function(b,c){a.writeTo(118,b);return a.readFrom(118,c)},function(b,c){a.writeTo(118,[b,c])})};exports.connectSPI=function(a,c,b){return new e(b,function(b,d){return a.send([b|128,new Uint8Array(d)],c).slice(1)},function(b,d){a.write(b&127,d,c)})} |