mirror of https://github.com/espruino/BangleApps
Add demo app
parent
7f77ffa477
commit
8992ad545a
15
apps.json
15
apps.json
|
@ -736,5 +736,20 @@
|
|||
{"name":"*ctrclk","url":"app-icon.js","evaluate":true}
|
||||
],
|
||||
"sortorder" : -9
|
||||
},
|
||||
{ "id": "demoapp",
|
||||
"name": "Demo Loop",
|
||||
"icon": "app.png",
|
||||
"version":"0.01",
|
||||
"description": "Simple demo app - displays Bangle.js, JS logo, graphics, and Bangle.js information",
|
||||
"tags": "",
|
||||
"type":"app",
|
||||
"allow_emulator":true,
|
||||
"storage": [
|
||||
{"name":"+demoapp","url":"app.json"},
|
||||
{"name":"-demoapp","url":"app.js"},
|
||||
{"name":"*demoapp","url":"app-icon.js","evaluate":true}
|
||||
],
|
||||
"sortorder" : -9
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA=="));
|
||||
require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA=="))
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwhC/AH4AT7oAQC43e9oXU73u93hiIALC5PiC6YWBAAOIABWBC7xHDC9fdl3ilAXUjAVLC5NETQQaLC46zEDAmCAogXGgLMFCwcuM4gXGcgwqBwMU9wXSDAICB7wXTAAUiO5YXKMgYXTU5gSFwLEJC5gNBFwf/AAPzC52IFwYXRqoALqAXWqoXIioXRoIXW9shC4UQNQgAMh1BinUC4Xd6AKBhqJDBAYAEoNN7tBiASBCYQDBCYIIEAAkBBIPRC6gvXL60BR6oXBkUikMQgQEBBIIDBkEABAgAEBIUiiADCkAIDDYQcCAAgJCABwXdAH4A/ABg"))
|
|
@ -0,0 +1,168 @@
|
|||
Bangle.setLCDPower(1);
|
||||
Bangle.setLCDTimeout(0);
|
||||
|
||||
var scenes = [
|
||||
function() {
|
||||
y = -100;
|
||||
var step = 4;
|
||||
var i = setInterval(function() {
|
||||
y+=step;
|
||||
if (y>70) {
|
||||
clearInterval(i);
|
||||
i = undefined;
|
||||
}
|
||||
g.clearRect(0,y-(step+1),240,y-1);
|
||||
g.drawImage(Bangle.getLogo(),0,y);
|
||||
}, 20);
|
||||
Bangle.setLCDMode();
|
||||
g.clear();
|
||||
return function() {
|
||||
if (i) clearInterval(i);
|
||||
};
|
||||
},
|
||||
function() {
|
||||
var txt = [" ____ _ \n"+
|
||||
"| __|___ ___ ___ _ _|_|___ ___ \n"+
|
||||
"| __|_ -| . | _| | | | | . |\n"+
|
||||
"|____|___| _|_| |___|_|_|_|___|\n"+
|
||||
" |_| espruino.com\n\n",
|
||||
"The JavaScript Interpreter for uCs\n",
|
||||
" * On-chip JS Interpreter",
|
||||
" * GPS, Acclerometer, Compass",
|
||||
" * 64 MHz, 64kB RAM, 512kB + 4MB Flash",
|
||||
" * 240x240 IPS LCD",
|
||||
" * Speaker & Vibration motor",
|
||||
" * Bluetooth LE",
|
||||
" * 1 week battery life",
|
||||
"",
|
||||
"Includes:",
|
||||
" * Tensorflow AI",
|
||||
" * Bluetooth LE central & periph",
|
||||
" * Graphics Library",
|
||||
" * VT100 terminal",
|
||||
"","",""
|
||||
];
|
||||
var n=0;
|
||||
var i = setInterval(function() {
|
||||
Terminal.println(txt[n]);
|
||||
n++;
|
||||
if (n>=txt.length) {
|
||||
clearInterval(i);
|
||||
i=undefined;
|
||||
}
|
||||
}, 200);
|
||||
Bangle.setLCDMode();
|
||||
return function() {
|
||||
|
||||
|
||||
if (i) clearInterval(i);
|
||||
};
|
||||
},
|
||||
function() {
|
||||
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
|
||||
|
||||
g.clear();
|
||||
y = 0;
|
||||
var step = 4;
|
||||
var i = setInterval(function() {
|
||||
y+=step;
|
||||
g.clear();
|
||||
g.drawImage(img,60,60,{rotate:Math.sin(y*0.03)*0.5});
|
||||
g.flip();
|
||||
}, 20);
|
||||
Bangle.setLCDMode("120x120");
|
||||
return function() {
|
||||
if (i) clearInterval(i);
|
||||
};
|
||||
},
|
||||
function() {
|
||||
var rx = 0, ry = 0;
|
||||
|
||||
// draw a cube
|
||||
function draw() {
|
||||
var rcx=Math.cos(rx),
|
||||
rsx=Math.sin(rx),
|
||||
rcy=Math.cos(ry),
|
||||
rsy=Math.sin(ry);
|
||||
// Project 3D coordinates into 2D
|
||||
function p(x,y,z) {
|
||||
var t;
|
||||
t = x*rcy + z*rsy;
|
||||
z = z*rcy - x*rsy;
|
||||
x=t;
|
||||
t = y*rcx + z*rsx;
|
||||
z = z*rcx - y*rsx;
|
||||
y=t;
|
||||
z += 6;
|
||||
return [240 * (0.5 + x/z), 240 * (0.3 + y/z)];
|
||||
}
|
||||
|
||||
var a;
|
||||
// draw a series of lines to make up our cube
|
||||
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
|
||||
a = p(1,-1,-1); g.lineTo(a[0],a[1]);
|
||||
a = p(1,1,-1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,1,-1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,-1,-1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,-1,1); g.moveTo(a[0],a[1]);
|
||||
a = p(1,-1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(1,1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
|
||||
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(1,-1,-1); g.moveTo(a[0],a[1]);
|
||||
a = p(1,-1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(1,1,-1); g.moveTo(a[0],a[1]);
|
||||
a = p(1,1,1); g.lineTo(a[0],a[1]);
|
||||
a = p(-1,1,-1); g.moveTo(a[0],a[1]);
|
||||
a = p(-1,1,1); g.lineTo(a[0],a[1]);
|
||||
}
|
||||
|
||||
// rotate and redraw the cube
|
||||
function step() {
|
||||
// rotate
|
||||
rx += 0.1;
|
||||
ry += 0.11;
|
||||
// draw
|
||||
g.clear();
|
||||
g.setColor(0xFFFF);
|
||||
draw();
|
||||
g.flip();
|
||||
}
|
||||
|
||||
Bangle.setLCDMode("doublebuffered");
|
||||
g.clear();g.flip();
|
||||
var i = setInterval(step,50);
|
||||
return function() {
|
||||
clearInterval(i);
|
||||
};
|
||||
},
|
||||
function() {
|
||||
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
|
||||
|
||||
g.clear();
|
||||
y = 0;
|
||||
var step = 4;
|
||||
var i = setInterval(function() {
|
||||
y+=step;
|
||||
g.scroll(0,1);
|
||||
g.drawImage(img,Math.random()*240,Math.random()*240,
|
||||
{rotate:Math.random()*6.3, scale:0.5+Math.random()});
|
||||
}, 1);
|
||||
Bangle.setLCDMode();
|
||||
return function() {
|
||||
if (i) clearInterval(i);
|
||||
};
|
||||
}
|
||||
|
||||
];
|
||||
var sceneNo = scenes.length-1;
|
||||
|
||||
var stop = scenes[sceneNo]();
|
||||
setInterval(function() {
|
||||
sceneNo++;
|
||||
if (sceneNo>=scenes.length) sceneNo=0;
|
||||
stop();
|
||||
stop = scenes[sceneNo]();
|
||||
}, 10000);
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name":"Demo Loop",
|
||||
"icon":"*demoapp",
|
||||
"src":"-demoapp"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -11,6 +11,7 @@ var APPJSON = ROOTDIR+'/apps.json';
|
|||
var OUTFILE = ROOTDIR+'/firmware.js';
|
||||
var APPS = [ // IDs of apps to install
|
||||
"boot",
|
||||
"launch",
|
||||
"mclock",
|
||||
"setting",
|
||||
"astroid",
|
||||
|
|
Loading…
Reference in New Issue