forked from FOSS/BangleApps
Add new, more useful spirit level app
parent
a4c822c0f5
commit
a98ce79c43
|
@ -0,0 +1 @@
|
||||||
|
0.01: New App!
|
|
@ -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();
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1 @@
|
||||||
|
require("heatshrink").decompress(atob("mEw4cA///ov+5lChWMyGuxdzpdj4/lKf4AUkgQPgm0wAiPy2QCBsBkmS6QRNhIRBrVACJlPu2+pdICBcCrVJlvJtIRLifStMl3MtkARKydUyMkzMl0CMKyWWyUk1MkSJXkyR7BogRLgVcydSrVGzLHKgdLyfSpdE3JYKklqTwNJknJYJVkxcSp+pnygKhMs1OSEQOSYhVJl1bCIbBK5Mq7gRCyARJiVbqyPBCIKMKuVM24yBCIIiJnVOqu5CISMKp9JlvJCIRXKpP3nxoCRhUSBwSMNBwaMMgn6yp6DRhUl0mypiMMgM9ksipaMMhMtCINKRhlJmoRBpJuBCBIRGRhUE5I1CpKMLgmZn5ZDGhUAycnRoNMRhTDCsn3tfkRhLnDTwYQLNgSMMUQkyRhbGEkyMKAApFOAH4AGA"))
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
|
@ -1,2 +1 @@
|
||||||
require("heatshrink").decompress(atob("mEwghC/AF8OoMRC6nu8kRiAuT93uGCgWBGCguCGCgsBoMUGCQuBFYMRDAIwQFQUhDAIFCFx/hiUyC4NOGAKMP8MRmYwBjwwBCxkEFAIXBiYwBC4PuC5hxCC4IwCDwPgC5gpBpxxBiMSL4QWMgQpBIIKnEFxsikcxOISODCxkDmUiLIQADFxsjUIQWELp0iLwYuQgMzkUiFydBkcyFycOoMSXoIuST4YuTB4NBZwIuSABAuPAA5dQdSQuBoIXBLwouPiUxGAguOC4imDRh3hC4wuMgBABC44WMgBxBI4wuNgBxCC4MhAoQWNC4IwBU4guOgEBFQVBiguQGAi7PGBCMPGBAuRGAoWSGAYuTAH4AcA="))
|
require("heatshrink").decompress(atob("mEw4cA///ov+5lChWMyGuxdzpdj4/lKf4AUkgQPgm0wAiPy2QCBsBkmS6QRNhIRBrVACJlPu2+pdICBcCrVJlvJtIRLifStMl3MtkARKydUyMkzMl0CMKyWWyUk1MkSJXkyR7BogRLgVcydSrVGzLHKgdLyfSpdE3JYKklqTwNJknJYJVkxcSp+pnygKhMs1OSEQOSYhVJl1bCIbBK5Mq7gRCyARJiVbqyPBCIKMKuVM24yBCIIiJnVOqu5CISMKp9JlvJCIRXKpP3nxoCRhUSBwSMNBwaMMgn6yp6DRhUl0mypiMMgM9ksipaMMhMtCINKRhlJmoRBpJuBCBIRGRhUE5I1CpKMLgmZn5ZDGhUAycnRoNMRhTDCsn3tfkRhLnDTwYQLNgSMMUQkyRhbGEkyMKAApFOAH4AGA"))
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 12 KiB |
Loading…
Reference in New Issue