Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print("autosoftoff.boot.js");
- function dotProduct(x1, y1, z1, x2, y2, z2) {
- const vectorA = [x1, y1, z1];
- const vectorB = [x2, y2, z2];
- let result = 0;
- for (let i = 0; i < vectorA.length; i++) {
- result += vectorA[i] * vectorB[i];
- }
- return result;
- }
- let interval = 300000;
- let compassOnTime = 1100;
- function compassProm() {
- return new Promise((resolve,reject) => {
- Bangle.setCompassPower(1);
- let h;
- setTimeout(()=> {
- h = Bangle.getCompass().heading;
- //print("READING: " + h);
- Bangle.setCompassPower(0);
- resolve(h);
- },compassOnTime);
- });
- }
- let accelOld = Bangle.getAccel();
- let compassOld = compassProm().then(mag=>{
- setInterval(()=>{
- let compassNow = compassProm().then(mag2=> {
- let accelNow = Bangle.getAccel();
- const dotp = dotProduct(accelOld.x, accelOld.y, accelOld.z, accelNow.x, accelNow.y, accelNow.z);
- //print(dotp);
- let magDiff = Math.abs(mag2 - compassOld);
- magDiff = Math.min(magDiff,360-magDiff);
- //print(magDiff);
- return new Promise((resolve,reject)=>{
- if ( dotp > 1 && dotp <= 1.036 && !isNaN(magDiff) && magDiff < 4 )
- {
- //print("Stationary");
- let buzzDur = 2000;
- Bangle.buzz(buzzDur);
- Bangle.beep(buzzDur).then(x=>resolve(true));
- } else {
- resolve(false);
- }
- accelOld = accelNow;
- compassOld = mag2;
- });
- }).then(still=>{
- if ( still ) {
- //Going to sleep
- Bangle.softOff();
- }
- });
- },interval);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement