mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
10 lines
4.9 KiB
JavaScript
10 lines
4.9 KiB
JavaScript
var p=V8,z=D6,q=V9,r=D25,t=D26,u=V10,v=V11,A=V12,B=D22,w=[V13,V14,V15],x=D23,C=D24,D=D17,F=D28,y=V4,g=D27,k=D29,c=new I2C;c.setup({sda:7,scl:8,bitrate:4E5});exports.I2C=c;var l=new I2C;l.setup({sda:14,scl:15,bitrate:4E5});exports.I2CE=l;exports.onAcceleration=function(a){a?(this.accel||(this.accel=require("LIS2DH12").connectI2C(l)),this.accel.callback=a,this.accel.setPowerMode("low")):(this.accel&&this.accel.setPowerMode("powerdown"),this.accel=void 0)};exports.getAcceleration=
|
|
function(a){this.accel?this.accel.readXYZ(a):require("LIS2DH12").connectI2C(l).readXYZ(a)};exports.onMPU=function(a){a?this.mpu?this.mpu.callback=a:(p.set(),this.mpu=require("MPU9250").connectI2C(c),this.mpu.samplerate=10,this.mpu.callback=a,this.mpu.watch=setWatch(function(){this.mpu.callback(this.mpu.read())}.bind(this),z,{repeat:1,edge:"rising"}),setTimeout(this.mpu.initMPU9250.bind(this.mpu),10)):(this.mpu&&clearWatch(this.mpu.watch),p.reset(),this.mpu=void 0)};exports.getMPU=function(a){if(this.mpu)a(this.mpu.read());
|
|
else this.onMPU(function(b){this.onMPU();a(b)}.bind(this))};exports.onPressure=function(a){a?(this.pressure||(this.pressure=require("LPS22HB").connectI2C(c,{int:x}),this.pressure.on("data",function(b){this.pressureCallback(b)}.bind(this))),this.pressureCallback=a):(this.pressure&&this.pressure.stop(),this.pressureCallback=this.pressure=void 0)};exports.getPressure=function(a){if(this.pressure)this.pressure.read(a);else{var b=require("LPS22HB").connectI2C(c,{int:x});b.read(function(d){b.stop();a(d)})}};
|
|
exports.onHumidity=function(a){a?(this.humidity||(this.humidity=require("HTS221").connect(c,{int:C}),this.humidity.on("data",function(b){this.humidityCallback(b)}.bind(this))),this.humidityCallback=a):(this.humidity&&this.humidity.stop(),this.humidityCallback=this.humidity=void 0)};exports.getHumidity=function(a){if(this.humidity)this.humidity.read(a);else this.onHumidity(function(b){this.onHumidity();a(b)}.bind(this))};exports.onGas=function(a){a?(this.gas||(u.set(),v.set(),A.reset(),this.gas=require("CCS811").connectI2C(c,
|
|
{int:B}),this.gas.on("data",function(b){this.gasCallback(b)}.bind(this))),this.gasCallback=a):(this.gas&&(this.gas.stop(),v.reset(),u.reset()),this.gasCallback=this.gas=void 0)};exports.getGas=function(a){if(this.gas)a(this.gas.get());else this.onGas(function(b){this.onGas();a(b)}.bind(this))};exports.onColor=function(a){a?(this.color||(digitalWrite(w,0),this.color=require("BH1745").connectI2C(c),this.colorInt=setInterval(function(){this.colorCallback(this.color.read())}.bind(this),200)),this.colorCallback=
|
|
a):(this.color&&(clearInterval(this.colorInt),this.color.stop(),digitalWrite(w,7)),this.colorCallback=this.colorInt=this.color=void 0)};exports.getColor=function(a){if(this.color)a(this.color.read());else this.onColor(function(b){this.onColor();a(b)}.bind(this))};exports.getBattery=function(a){y.set();var b={charging:D.read(),voltage:E.getAnalogVRef()*analogRead(F)*1500/180};y.reset();a&&a(b);return b};exports.sound=function(a,b,d){this.sounds||(this.sounds=0);if(2<this.sounds)throw Error("Too many sounds playing at once");
|
|
var e=new Waveform(a.length);e.buffer.set(a);e.on("finish",function(h){this.sounds--;this.sounds||(k.reset(),digitalWrite(g,0));d&&d()}.bind(this));this.sounds||(analogWrite(g,.5,{freq:4E4}),k.set());this.sounds++;e.startOutput(g,b)};exports.beep=function(a,b){b=0<b?b:250;analogWrite(g,.5,{freq:0<a?a:500});k.set();this.beepTimeout&&clearTimeout(this.beepTimeout);this.beepTimeout=setTimeout(function(){delete this.beepTimeout;k.reset();digitalWrite(g,0)}.bind(this),b)};exports.record=function(a,b){function d(){clearInterval(G);
|
|
poke8(1073860612,1);poke8(1073861888,0);poke32(1073861952,4294967295);poke32(1073861956,4294967295);q.reset();E.mapInPlace(f,f,function(H){return H+128});b&&setTimeout(b,0,f)}var e=new ArrayBuffer(2049),h=E.getAddressOf(e,!0);if(!h)throw Error("Unable to create a buffer");var f=new Uint8Array(a),n=0,m=0;q.set();t.mode("output");r.mode("input");poke32(1073861892,138412032);poke32(1073861896,1);poke32(1073861912,72);poke32(1073861916,72);poke32(1073861952,t.getInfo().num);poke32(1073861956,r.getInfo().num);
|
|
poke32(1073861984,h);poke32(1073861988,512);poke32(1073861888,1);poke8(1073860864,0);poke8(1073860868,0);poke8(1073860872,0);poke8(1073860608,1);poke32(1073861984,h+1024);var G=setInterval(function(){peek8(1073860872)&&(poke8(1073860872,0),poke32(1073861984,h+1024*m),f.set(new Uint32Array(e,1+1024*m,256),n),m=1-m,n+=256,n>=f.length&&d())},5);return f};E.on("init",function(){if(exports.accel&&exports.accel.callback){var a=exports.accel.callback;exports.accel=void 0;exports.onAcceleration(a)}exports.pressureCallback&&
|
|
(exports.pressure=void 0,exports.onPressure(exports.pressureCallback));exports.humidityCallback&&(exports.humidity=void 0,exports.onHumidity(exports.humidityCallback));exports.gasCallback&&(exports.gas=void 0,exports.onGas(exports.gasCallback));exports.colorCallback&&(exports.color=void 0,exports.onColor(exports.colorCallback))}) |