mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
116 lines
3.0 KiB
JavaScript
116 lines
3.0 KiB
JavaScript
arr = new Uint8Array(26*3);
|
|
function step() {
|
|
amt += dir;
|
|
if (amt < 0) {
|
|
amt = 0;
|
|
} else if (amt > 1.5 && dir>0) {
|
|
amt = 3;
|
|
dir = 0;
|
|
} else {
|
|
if (!BTN1.read()) dir = -0.01;
|
|
}
|
|
if (amt<1 && BTN1.read()) dir = 0.04;
|
|
|
|
|
|
var n = 0;
|
|
for(var i=0;i<25;i++) {
|
|
var c = 255*(2*amt - (Math.abs(i-12.5)/12.5 +0.5));
|
|
arr[n++] = Math.clip(256+c*2, 0, 255);
|
|
arr[n++] = Math.clip(64+c, 0, 255);
|
|
arr[n++] = Math.clip(c/2, 0, 255);
|
|
}
|
|
SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
}
|
|
var amt = 0;
|
|
var stepInterval = 3;
|
|
function onInit() {
|
|
stepInterval = setInterval(step, 100);
|
|
}
|
|
var dir = -0.01;
|
|
var d = undefined;
|
|
setInterval(step, 20);
|
|
SPI1.setup({"baud":3200000,"mosi":A7});
|
|
|
|
|
|
|
|
>for (i=0;i<25;i++) r[i] = Math.random();
|
|
|
|
>var r = new Float32Array(25);
|
|
>step = function () {
|
|
: amt += 0.3;
|
|
:
|
|
: var n = 0;
|
|
: for(var i=0;i<25;i++) {
|
|
: var c = 255*(Math.sin(r[i]*220+amt) +0.5);
|
|
: arr[n++] = Math.clip(256+c*2, 0, 255);
|
|
: arr[n++] = Math.clip(64+c, 0, 255);
|
|
: arr[n++] = Math.clip(c/2, 0, 255);
|
|
: }
|
|
: SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
:};
|
|
|
|
var cols = [new Uint8Array(4),[0,0,255,255],[0,0,0,0]];
|
|
function setCol(n,r,g,b) {
|
|
cols[0][n] = r*255;
|
|
cols[1][n] = g*255;
|
|
cols[2][n] = b*255;
|
|
}
|
|
|
|
// christmas
|
|
function () {
|
|
amt += 0.3;
|
|
|
|
var n = 0;
|
|
for(var i=0;i<25;i++) {
|
|
var c = 255*(Math.sin(r[i]*220+amt)*0.5 +0.5);
|
|
arr[n++] = Math.clip(c*2, 0, 255);
|
|
arr[n++] = Math.clip(c*2-256, 0, 255);
|
|
arr[n++] = 0;
|
|
}
|
|
SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
}
|
|
|
|
// wedding
|
|
=function () {
|
|
amt += 0.1;
|
|
|
|
var n = 0;
|
|
for(var i=0;i<25;i++) {
|
|
var c = Math.sin(i*0.2+amt)*0.5+0.5;
|
|
arr[n++] = Math.clip(64+c*128, 0, 255);
|
|
arr[n++] = 0;
|
|
arr[n++] = Math.clip(255-c*128,0,255);
|
|
}
|
|
SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
}
|
|
|
|
// patriotic
|
|
=function () {
|
|
amt += 0.15;
|
|
|
|
var n = 0;
|
|
for(var i=0;i<25;i++) {
|
|
var c = (Math.random()*3)|0;
|
|
arr[n++] = c<2 ? 255 : 0;
|
|
arr[n++] = c==1 ? 255 : 0;
|
|
arr[n++] = c>0 ? 255 : 0;
|
|
}
|
|
SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
}
|
|
|
|
|
|
// One end to other
|
|
function () {
|
|
amt += 0.1;
|
|
var pos = (Math.sin(amt)*0.5+0.5)*25;
|
|
var n = 0;
|
|
for(var i=0;i<25;i++) {
|
|
var c = Math.abs(i-pos);
|
|
arr[n++] = Math.clip((4-c)*63,0,255);
|
|
arr[n++] = 0;
|
|
arr[n++] = 0;
|
|
}
|
|
SPI1.send4bit(arr, 0b0001, 0b0011);
|
|
}
|
|
|