First atempt to HR indication

pull/378/head^2
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 date;
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 = {
width: g.getWidth(),
@ -41,17 +49,7 @@
};
const dateStr = function (date) {
day = date.getDate();
month = date.getMonth();
year = date.getFullYear();
if (day < 10) {
day = "0" + day;
}
if (month < 10) {
month = "0" + month;
}
return year + "-" + month + "-" + day;
return locale.date(new Date(), 1);
};
const getArcXY = function (centerX, centerY, radius, angle) {
@ -72,7 +70,7 @@
//g.setPixel(r[0],r[1]);
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
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) {
@ -84,7 +82,7 @@
//g.setPixel(r[0],r[1]);
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
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 () {
@ -104,7 +102,7 @@
}
first = false;
}
// Reset seconds
if (seconds == 59) {
g.setColor('#000000');
@ -128,14 +126,34 @@
//Update seconds when needed
if (seconds != currentTime.getSeconds()) {
seconds = currentTime.getSeconds();
drawSecArc(seconds, settings.circle.colorsec);
drawSecArc(seconds, settings.circle.colorsec);
}
//Write the time as configured in the settings
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.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
g.setColor(settings.date.color);
@ -147,19 +165,61 @@
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
g.clear();
g.setFontAlign( 0, 0, 0);
g.setFontAlign(0, 0, 0);
Bangle.loadWidgets();
Bangle.drawWidgets();
// refesh every 30 sec
setInterval(drawClock, 1E3);
//start HR monitor and draw heart rate
Bangle.setHRMPower(1);
Bangle.on('HRM', function (d) {
newBeats(d);
});
// draw now
drawClock();
// Show launcher when middle button pressed
setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" });
}
}