Last active
December 5, 2019 12:10
-
-
Save aallan/5a287ad134ca987220fd9cad4b0a3c09 to your computer and use it in GitHub Desktop.
A simple clock app for the Bangle.js JavaScript-powered smart watch.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// drawWidgets() is added by bootloader.js when loading a clock app, but when you upload via the IDE it just | |
// resets the watch and skips out running bootloader.js completely. So add the relevant code from the bootloader. | |
var WIDGETPOS={tl:32,tr:g.getWidth()-32,bl:32,br:g.getWidth()-32}; | |
var WIDGETS={}; | |
function drawWidgets() { for (var w of WIDGETS) w.draw(); } | |
require("Storage").list().filter(a=>a[0]=='=').forEach( | |
widget=>eval(require("Storage").read(widget))); | |
setTimeout(drawWidgets,100); | |
// Example application code | |
// Taken from https://github.com/espruino/BangleApps/blob/master/apps/sclock/clock-simple.js | |
(function() { | |
const timeFontSize = 6; | |
const dateFontSize = 3; | |
const gmtFontSize = 2; | |
const font = "6x8"; | |
const xyCenter = g.getWidth() / 2; | |
const yposTime = 75; | |
const yposDate = 130; | |
const yposYear = 175; | |
const yposGMT = 220; | |
function drawSimpleClock() { | |
// get date | |
var d = new Date(); | |
var da = d.toString().split(" "); | |
// drawSting centered | |
g.setFontAlign(0, 0); | |
// draw time | |
var time = da[4].substr(0, 5); | |
g.setFont(font, timeFontSize); | |
g.drawString(time, xyCenter, yposTime, true); | |
// draw Day, name of month, Date | |
var date = [da[0], da[1], da[2]].join(" "); | |
g.setFont(font, dateFontSize); | |
g.drawString(date, xyCenter, yposDate, true); | |
// draw year | |
g.setFont(font, dateFontSize); | |
g.drawString(d.getFullYear(), xyCenter, yposYear, true); | |
// draw gmt | |
var gmt = da[5]; | |
g.setFont(font, gmtFontSize); | |
g.drawString(gmt, xyCenter, yposGMT, true); | |
} | |
// handle switch display on by pressing BTN1 | |
Bangle.on('lcdPower', function(on) { | |
if (on) { | |
drawWidgets(); | |
drawSimpleClock(); | |
} | |
}); | |
// clean app screen | |
g.clear(); | |
// refesh every 15 sec | |
setInterval(drawSimpleClock, 15E3); | |
// draw now | |
drawSimpleClock(); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment