mirror of https://github.com/espruino/BangleApps
add magnetometer clock info
parent
0e05d97056
commit
ef1f4e4064
|
@ -0,0 +1 @@
|
|||
0.01: New Widget!
|
|
@ -0,0 +1,48 @@
|
|||
(function() {
|
||||
var heading, cnt;
|
||||
function magHandler(m) {
|
||||
var h = m.heading;
|
||||
if (isNaN(heading) || isNaN(h))
|
||||
heading = h;
|
||||
else {
|
||||
// Average
|
||||
if (Math.abs(heading-h)>180) {
|
||||
if (h<180 && heading>180) h+=360;
|
||||
if (h>180 && heading<180) h-=360;
|
||||
}
|
||||
heading = heading*0.8 + h*0.2;
|
||||
if (heading<0) heading+=360;
|
||||
if (heading>=360) heading-=360;
|
||||
}
|
||||
// only draw 1 in 2 to try and save some power!
|
||||
if (!(1&cnt++)) ci.items[0].emit('redraw');
|
||||
}
|
||||
var ci = {
|
||||
name: "Bangle",
|
||||
items: [
|
||||
{ name : "Compass",
|
||||
get : function() {
|
||||
var g = Graphics.createArrayBuffer(24,24,1,{msb:true});
|
||||
if (isNaN(heading))
|
||||
g.drawLine(8,12,16,12);
|
||||
else
|
||||
g.fillPoly(g.transformVertices([0,-10,4,10,-4,10],{x:12,y:12,rotate:-heading/57}));
|
||||
return { text : isNaN(heading)?"--":Math.round(heading),
|
||||
v : 0|heading, min : 0, max : 360,
|
||||
img : g.asImage("string") }},
|
||||
show : function() {
|
||||
Bangle.setCompassPower(1,"clkinfomag");
|
||||
Bangle.on('mag',magHandler);
|
||||
cnt=0;
|
||||
heading = undefined;
|
||||
},
|
||||
hide : function() {
|
||||
Bangle.removeListener('mag', magHandler);
|
||||
Bangle.setCompassPower(0,"clkinfomag");
|
||||
},
|
||||
run : function() { Bangle.resetCompass(); }
|
||||
}
|
||||
]
|
||||
};
|
||||
return ci;
|
||||
}) // must not have a semi-colon!
|
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,12 @@
|
|||
{ "id": "clkinfomag",
|
||||
"name": "Compass Clockinfo",
|
||||
"version":"0.01",
|
||||
"description": "Extra information to add to clock screens. When selected, displays the compass heading and an arrow pointing North",
|
||||
"icon": "icon.png",
|
||||
"type": "clkinfo",
|
||||
"tags": "clkinfo,compass,mag,magnetometer",
|
||||
"supports" : ["BANGLEJS2"],
|
||||
"storage": [
|
||||
{"name":"clkinfomag.clkinfo.js","url":"clkinfo.js"}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue