Dies ist mein erster Test mit dem MAX7219 Chip am Espruino Board. Das Board ist über die 3 Ausgänge B13 bis B15 angeschlossen und steuert eine 8×8 LED Matrix an. Die habe ich für ein paar Euro bei ebay bestellt.
Mit den folgenden Zeilen JavaScript Code kann man das Beispiel aus dem Video nachstellen. Viel Spaß beim basteln :-).
clearInterval();
clearTimeout();
digitalWrite (LED1,0);
digitalWrite (LED2,0);
digitalWrite (LED3,1);
SPI2.setup({mosi:B15, sck:B13});
var disp = require("MAX7219").connect(SPI2,B14);
var stage = 0;
var off = [0,0,0,0,0,0,0,0];
var all = [255,255,255,255,255,255,255,255];
var half1 = [255,0,255,0,255,0,255,0];
var half2 = [0,255,0,255,0,255,0,255];
var diagonale = [1,2,4,8,16,32,64,128];
var smiley = [60,66,153,165,129,165,66,60];
var invertsmiley = [195,189,102,90,126,90,189,195];
var heart = [0,54,127,127,127,62,28,8];
function counter () {
digitalWrite (LED1, 1);
clearInterval ();
var a = new Array(0, 0, 0, 0, 0, 0, 0, 0);
setInterval(function() {
disp.raw([a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]]);
disp.intensity(1);
a[0]+= 1;
for (i = 0; i < 7; i++)
{
if (a[i] > 255)
{
a[i] = 0;
a[i+1]+=1;
}
}
if (a[7] > 255)
{
a = new Array(0, 0, 0, 0, 0, 0, 0, 0);
}
}, 5);
}
function showAll () {
// Alle LEDs einschalten
disp.raw(off);
intensity = 0;
diff = 0.1;
setInterval(function() {
disp.intensity(intensity);
if (intensity > 1 || intensity < 0)
diff = -diff;
intensity += diff;
disp.raw(all);
}, 100);
}
function showSmiley () {
// Smiley zeichnen
disp.intensity(1);
disp.raw(smiley);
}
function blinkHeart () {
// Herz blinken lassen
intensity = 0;
diff = 0.1;
setInterval(function() {
disp.intensity(intensity);
if (intensity > 1 || intensity < 0)
diff = -diff;
intensity += diff;
disp.raw(heart);
}, 100);
}
function showDiagonale () {
// Diaginale Linie
disp.intensity(1);
disp.raw(diagonale);
}
function blinkSmiley () {
on = 1;
inv = 1;
disp.intensity(on);
setInterval(function() {
if (inv)
disp.raw(smiley);
else
disp.raw(invertsmiley);
inv =! inv;
},500);
}
function run () {
clearInterval();
clearTimeout();
disp = require("MAX7219").connect(SPI2,B14);
disp.raw(off);
switch (stage)
{
case 0:
setTimeout(showAll, 100);
break;
case 1:
showDiagonale ();
break;
case 2:
setTimeout(showSmiley, 100);
break;
case 3:
setTimeout(blinkSmiley, 100);
break;
case 4:
setTimeout(blinkHeart, 100);
break;
case 5:
setTimeout(counter,100);
break;
default:
stage = -1;
}
stage ++;
}
setWatch(run, BTN1, {repeat:true,edge:"rising", debounce:1/*ms*/});