add support for Bangle.js 2

master
bengwalker 2021-11-17 20:46:18 +01:00
parent 5fc5b83102
commit 071a7a7e68
3 changed files with 48 additions and 28 deletions

View File

@ -1553,7 +1553,7 @@
"id": "metronome",
"name": "Metronome",
"icon": "metronome_icon.png",
"version": "0.06",
"version": "0.07",
"readme": "README.md",
"description": "Makes the watch blinking and vibrating with a given rate",
"tags": "tool",

View File

@ -4,3 +4,4 @@
0.04: App shows instructions, Widgets remain visible, color changed
0.05: Buzz intensity and beats per bar can be changed via settings-app
0.06: Correct string position
0.07: Add support for Bangle.sjs2

View File

@ -5,7 +5,7 @@ var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
var tindex=0; //index to iterate through time_diffs
Bangle.setLCDTimeout(undefined); //do not deaktivate display while running this app
Bangle.setLCDTimeout(undefined); //do not deactivate display while running this app
const storage = require("Storage");
const SETTINGS_FILE = 'metronome.settings.json';
@ -15,7 +15,7 @@ function setting(key) {
//define default settings
const DEFAULTS = {
'beatsperbar': 4,
'buzzintens': 0.75,
'buzzintens': 1.0,
};
if (!settings) { loadSettings(); }
return (key in settings) ? settings[key] : DEFAULTS[key];
@ -54,14 +54,16 @@ function updateScreen() {
changecolor();
try {
Bangle.buzz(50, setting('buzzintens'));
Bangle.beep(); // TODO: make optional
} catch(err) {
}
g.setFont("Vector",40).setFontAlign(0,0);
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, 100);
}
Bangle.on('touch', function(button) {
Bangle.on('touch', function(zone, e) {
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
if ((process.env.HWVERSION==2 && e.x > 39 && e.x < 136) || process.env.HWVERSION==1){
if (tindex < time_diffs.length) {
if (Date.now()-tStart < 5000) {
time_diffs[tindex] = Date.now()-tStart;
@ -72,7 +74,7 @@ Bangle.on('touch', function(button) {
}
tindex += 1;
mean_time = 0.0;
for(count = 0; count < time_diffs.length; count++) {
for (count = 0; count < time_diffs.length; count++) {
mean_time += time_diffs[count];
}
time_diff = mean_time/count;
@ -84,9 +86,25 @@ Bangle.on('touch', function(button) {
clearInterval(interval);
interval = setInterval(updateScreen, 60000 / bpm);
return bpm;
}
else if (e.x < 39) {
if (bpm > 1) {
bpm -= 1;
clearInterval(interval);
interval = setInterval(updateScreen, 60000 / bpm);
}
}
else if (e.x > 136) {
if (bpm > 1) {
bpm += 1;
clearInterval(interval);
interval = setInterval(updateScreen, 60000 / bpm);
}}
});
// enable bpm finetuning via buttons.
// enable bpm finetuning via
if ((process.env.HWVERSION==1)) {
setWatch(() => {
bpm += 1;
clearInterval(interval);
@ -101,10 +119,11 @@ setWatch(() => {
}
}, BTN3, {repeat:true});
}
interval = setInterval(updateScreen, 60000 / bpm);
g.clear(1).setFont("6x8");
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
g.clear(1).setFont("6x8");
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
Bangle.loadWidgets();
Bangle.drawWidgets();