From a98ce79c43e3ec55a1ace361e2cb1916b7880d8d Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Mon, 22 Jan 2024 15:30:17 +0000 Subject: [PATCH] Add new, more useful spirit level app --- apps/angles/ChangeLog | 1 + apps/angles/app.js | 49 ++++++++++++++++++++++++++++++++ apps/angles/icon.js | 1 + apps/angles/icon.png | Bin 0 -> 12090 bytes apps/angles/metadata.json | 15 ++++++++++ apps/angles/screenshot.png | Bin 0 -> 2433 bytes apps/slevel/spiritlevel-icon.js | 3 +- apps/slevel/spiritlevel.png | Bin 5214 -> 12090 bytes 8 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 apps/angles/ChangeLog create mode 100644 apps/angles/app.js create mode 100644 apps/angles/icon.js create mode 100644 apps/angles/icon.png create mode 100644 apps/angles/metadata.json create mode 100644 apps/angles/screenshot.png diff --git a/apps/angles/ChangeLog b/apps/angles/ChangeLog new file mode 100644 index 000000000..2286a7f70 --- /dev/null +++ b/apps/angles/ChangeLog @@ -0,0 +1 @@ +0.01: New App! \ No newline at end of file diff --git a/apps/angles/app.js b/apps/angles/app.js new file mode 100644 index 000000000..a07c29199 --- /dev/null +++ b/apps/angles/app.js @@ -0,0 +1,49 @@ +g.clear().setRotation(1); +// g.setRotation ALSO changes accelerometer axes +var avrAngle = undefined; +var history = []; + +var R = Bangle.appRect; +var W = g.getWidth(); +var H = g.getHeight(); +var relativeTo = undefined; + +function draw(v) { + if (v===undefined) v = Bangle.getAccel(); + // current angle + var d = Math.sqrt(v.y*v.y + v.z*v.z); + var ang = Math.atan2(-v.x, d)*180/Math.PI; + // Median filter + if (history.length > 10) history.shift(); // pull old reading off the start + history.push(ang); + avrAngle = history.slice().sort()[(history.length-1)>>1]; // median filter + // Render + var x = R.x + R.w/2; + var y = R.y + R.h/2; + g.reset().clearRect(R).setFontAlign(0,0); + var displayAngle = avrAngle; + g.setFont("6x15").drawString("ANGLE (DEGREES)", x, R.y2-8); + if (relativeTo!==undefined) { + g.drawString("RELATIVE TO", x,y-50); + g.setFont("Vector:30").drawString(relativeTo.toFixed(1),x,y-30); + y += 20; + displayAngle = displayAngle-relativeTo; + } + g.setFont("Vector:60").drawString(displayAngle.toFixed(1),x,y); + +} + +draw(); +Bangle.on('accel',draw); + +// Pressing the button turns relative angle on/off +Bangle.setUI({ + mode : "custom", + btn : function(n) { + if (relativeTo===undefined) + relativeTo = avrAngle; + else + relativeTo = undefined; + draw(); + } +}); \ No newline at end of file diff --git a/apps/angles/icon.js b/apps/angles/icon.js new file mode 100644 index 000000000..3f051f95f --- /dev/null +++ b/apps/angles/icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEw4cA///ov+5lChWMyGuxdzpdj4/lKf4AUkgQPgm0wAiPy2QCBsBkmS6QRNhIRBrVACJlPu2+pdICBcCrVJlvJtIRLifStMl3MtkARKydUyMkzMl0CMKyWWyUk1MkSJXkyR7BogRLgVcydSrVGzLHKgdLyfSpdE3JYKklqTwNJknJYJVkxcSp+pnygKhMs1OSEQOSYhVJl1bCIbBK5Mq7gRCyARJiVbqyPBCIKMKuVM24yBCIIiJnVOqu5CISMKp9JlvJCIRXKpP3nxoCRhUSBwSMNBwaMMgn6yp6DRhUl0mypiMMgM9ksipaMMhMtCINKRhlJmoRBpJuBCBIRGRhUE5I1CpKMLgmZn5ZDGhUAycnRoNMRhTDCsn3tfkRhLnDTwYQLNgSMMUQkyRhbGEkyMKAApFOAH4AGA")) \ No newline at end of file diff --git a/apps/angles/icon.png b/apps/angles/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4559d44f503572e8b11823b5f775a2fac46068 GIT binary patch literal 12090 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 F`9BuIC9wbi literal 0 HcmV?d00001 diff --git a/apps/angles/metadata.json b/apps/angles/metadata.json new file mode 100644 index 000000000..f8a90a305 --- /dev/null +++ b/apps/angles/metadata.json @@ -0,0 +1,15 @@ +{ + "id": "angles", + "name": "Angles (Spirit Level)", + "shortName": "Angles", + "version": "0.01", + "description": "Shows Angle or Relative angle in degrees (Digital Protractor/Inclinometer). Place Bangle sideways against a surface with the button facing away for best readings.", + "icon": "icon.png", + "screenshots": [{"url":"screenshot.png"}], + "tags": "tool", + "supports": ["BANGLEJS2"], + "storage": [ + {"name":"angles.app.js","url":"app.js"}, + {"name":"angles.img","url":"icon.js","evaluate":true} + ] +} diff --git a/apps/angles/screenshot.png b/apps/angles/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..9d631cf74b04dec9d3223278ea1bf805127a22de GIT binary patch literal 2433 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 F`9BuIC9wbi literal 5214 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