mirror of https://github.com/espruino/BangleApps
172 lines
5.0 KiB
JavaScript
172 lines
5.0 KiB
JavaScript
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() {
|
|
Bangle.setLCDMode("120x120");
|
|
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);
|
|
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;
|
|
function next() {
|
|
sceneNo++;
|
|
if (sceneNo>=scenes.length) sceneNo=0;
|
|
if (stop) stop();
|
|
clearInterval();
|
|
stop = scenes[sceneNo]();
|
|
setTimeout(next, 10000);
|
|
}
|
|
next()
|