First atempt to HR indication

master
Fredrik Lautrup 2020-04-23 21:31:12 +02:00
parent 6624b1c451
commit a7305dc947
1 changed files with 78 additions and 18 deletions

View File

@ -4,6 +4,14 @@
var hours; var hours;
var date; var date;
var first = true; var first = true;
var locale = require('locale');
var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false;
//HR variables
var color="#FF0000";
var id=0;
var size=10;
var grow=true;
const screen = { const screen = {
width: g.getWidth(), width: g.getWidth(),
@ -41,17 +49,7 @@
}; };
const dateStr = function (date) { const dateStr = function (date) {
day = date.getDate(); return locale.date(new Date(), 1);
month = date.getMonth();
year = date.getFullYear();
if (day < 10) {
day = "0" + day;
}
if (month < 10) {
month = "0" + month;
}
return year + "-" + month + "-" + day;
}; };
const getArcXY = function (centerX, centerY, radius, angle) { const getArcXY = function (centerX, centerY, radius, angle) {
@ -72,7 +70,7 @@
//g.setPixel(r[0],r[1]); //g.setPixel(r[0],r[1]);
g.drawLine(r1[0], r1[1], r2[0], r2[1]); g.drawLine(r1[0], r1[1], r2[0], r2[1]);
g.setColor('#333333'); g.setColor('#333333');
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width-4) g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4)
}; };
const drawSecArc = function (sections, color) { const drawSecArc = function (sections, color) {
@ -84,7 +82,7 @@
//g.setPixel(r[0],r[1]); //g.setPixel(r[0],r[1]);
g.drawLine(r1[0], r1[1], r2[0], r2[1]); g.drawLine(r1[0], r1[1], r2[0], r2[1]);
g.setColor('#333333'); g.setColor('#333333');
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width-4) g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4)
}; };
const drawClock = function () { const drawClock = function () {
@ -128,14 +126,34 @@
//Update seconds when needed //Update seconds when needed
if (seconds != currentTime.getSeconds()) { if (seconds != currentTime.getSeconds()) {
seconds = currentTime.getSeconds(); seconds = currentTime.getSeconds();
drawSecArc(seconds, settings.circle.colorsec); drawSecArc(seconds, settings.circle.colorsec);
} }
//Write the time as configured in the settings //Write the time as configured in the settings
hours = currentTime.getHours(); hours = currentTime.getHours();
if (_12hour && hours > 13) {
hours = hours - 12;
}
var meridian;
if (typeof locale.meridian === "function") {
meridian = locale.meridian(new Date());
} else {
meridian = "";
}
var timestr;
if (meridian.length > 0 && _12hour) {
timestr = hours + " " + meridian;
} else {
timestr = hours;
}
g.setColor(settings.time.color); g.setColor(settings.time.color);
g.setFont(settings.time.font, settings.time.size); g.setFont(settings.time.font, settings.time.size);
g.drawString(hours, settings.time.center, settings.time.middle); g.drawString(timestr, settings.time.center, settings.time.middle);
//Write the date as configured in the settings //Write the date as configured in the settings
g.setColor(settings.date.color); g.setColor(settings.date.color);
@ -147,15 +165,57 @@
if (on) drawClock(); if (on) drawClock();
}); });
//setInterval for HR visualisation
const newBeats = function (hr) {
if (id != 0) {
changeInterval(id, 6e3 / hr.bpm);
} else {
id = setInterval(drawHR, 6e3 / hr.bpm);
}
};
//visualize HR with circles pulsating
const drawHR = function (hr) {
if (grow && size < 12) {
size++;
}
if (!grow && size > 3) {
size--;
}
if (size == 12 || size == 3) {
grow = !grow;
}
if (grow) {
color = "#f0af00";
g.setColor(color);
g.fillCircle(settings.circle.center, settings.circle.middle, size);
} else {
color = "#000000";
g.setColor(color);
g.drawCircle(settings.circle.center, settings.circle.middle, size);
}
print(size);
};
// clean app screen // clean app screen
g.clear(); g.clear();
g.setFontAlign( 0, 0, 0); g.setFontAlign(0, 0, 0);
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
// refesh every 30 sec // refesh every 30 sec
setInterval(drawClock, 1E3); setInterval(drawClock, 1E3);
//start HR monitor and draw heart rate
Bangle.setHRMPower(1);
Bangle.on('HRM', function (d) {
newBeats(d);
});
// draw now // draw now
drawClock(); drawClock();