Espruino/libs/js/BME280.min.js

4 lines
1.9 KiB
JavaScript

function f(a,b,c){this.read=b;this.write=c;this.write(242,1);this.write(244,39);this.write(245,160);this.readCoefficients()}function d(a,b){var c=(a[b+1]<<8)+a[b];c&32768&&(c-=65536);return c}f.prototype.setPower=function(a){this.read(244,1)};f.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]]};f.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]};f.prototype.calibration_T=function(a){var b,c=this.dT;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};f.prototype.calibration_P=function(a){var b,c,e=this.dP;b=this.t_fine/
2-64E3;c=b*b*e[6]/32768;c+=b*e[5]*2;c=c/4+65536*e[4];b=(e[3]*b*b/524288+e[2]*b)/524288;b=(1+b/32768)*e[1];if(0===b)return 0;a=6250*(1048576-a-c/4096)/b;b=e[9]*a*a/2147483648;c=a*e[8]/32768;return a+=(b+c+e[7])/16};f.prototype.calibration_H=function(a){var b,c=this.dH;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=Math.clip(b,0,419430400);return b>>12};f.prototype.getData=function(a){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,b){return new f(b,function(b,e){a.writeTo(118,b);return a.readFrom(118,e)},function(b,e){a.writeTo(118,[b,e])})};exports.connectSPI=function(a,b,c){return new f(c,function(c,d){new Uint8Array(d+1);return a.send([c|128,new Uint8Array(d)],b).slice(1)},function(c,d){a.write(c&127,d,b)})}