よく使う
LEDマトリクスのイラストアニメ
LED マトリクスで複数の絵柄をコマ送りでアニメ再生するブロック。パラパラ漫画のような表示ができる。
ブロック

このブロックのテキストコード
var sbScrollChunkRTL = function(sbArray, sbPin, sbMatrixWidth, sbMatrixHeight, sbType, frameDelay, ownSize, isFirst, isLast) {
var arrayCols = sbArray.length / sbMatrixHeight;
var totalFrames, padLeft;
if (isFirst && isLast) { totalFrames = sbMatrixWidth + ownSize + 1; padLeft = sbMatrixWidth; }
else if (isFirst) { totalFrames = sbMatrixWidth + ownSize; padLeft = sbMatrixWidth; }
else if (isLast) { totalFrames = ownSize + 1; padLeft = 0; }
else { totalFrames = ownSize; padLeft = 0; }
for (var frame = 0; frame < totalFrames; frame++) {
var t0 = Date.now();
var sbData = [];
for (var sbRow = 0; sbRow < sbMatrixHeight; sbRow++) {
for (var sbCol = 0; sbCol < sbMatrixWidth; sbCol++) {
var arrayCol = frame + sbCol - padLeft;
if (arrayCol >= 0 && arrayCol < arrayCols) {
sbData.push(sbArray[sbRow * arrayCols + arrayCol]);
} else {
sbData.push("#000000");
}
}
}
sbRgbLedMatrix(sbPin, sbData, sbMatrixWidth, sbMatrixHeight, sbType);
var rest = Math.max(frameDelay - (Date.now() - t0), 0);
sbDelay(rest);
}
};
var sbScrollChunkLTR = function(sbArray, sbPin, sbMatrixWidth, sbMatrixHeight, sbType, frameDelay, ownSize, isFirst, isLast) {
var arrayCols = sbArray.length / sbMatrixHeight;
var totalFrames, padLeft;
if (isFirst && isLast) { totalFrames = sbMatrixWidth + ownSize + 1; padLeft = sbMatrixWidth; }
else if (isFirst) { totalFrames = sbMatrixWidth + ownSize; padLeft = sbMatrixWidth; }
else if (isLast) { totalFrames = ownSize + 1; padLeft = 0; }
else { totalFrames = ownSize; padLeft = 0; }
for (var frame = totalFrames - 1; frame >= 0; frame--) {
var t0 = Date.now();
var sbData = [];
for (var sbRow = 0; sbRow < sbMatrixHeight; sbRow++) {
for (var sbCol = 0; sbCol < sbMatrixWidth; sbCol++) {
var arrayCol = frame + sbCol - padLeft;
if (arrayCol >= 0 && arrayCol < arrayCols) {
sbData.push(sbArray[sbRow * arrayCols + arrayCol]);
} else {
sbData.push("#000000");
}
}
}
sbRgbLedMatrix(sbPin, sbData, sbMatrixWidth, sbMatrixHeight, sbType);
var rest = Math.max(frameDelay - (Date.now() - t0), 0);
sbDelay(rest);
}
};
var sbScrollChunkBTT = function(sbArray, sbPin, sbMatrixWidth, sbMatrixHeight, sbType, frameDelay, ownSize, isFirst, isLast) {
var arrayRows = sbArray.length / sbMatrixWidth;
var totalFrames, padTop;
if (isFirst && isLast) { totalFrames = sbMatrixHeight + ownSize + 1; padTop = sbMatrixHeight; }
else if (isFirst) { totalFrames = sbMatrixHeight + ownSize; padTop = sbMatrixHeight; }
else if (isLast) { totalFrames = ownSize + 1; padTop = 0; }
else { totalFrames = ownSize; padTop = 0; }
for (var frame = 0; frame < totalFrames; frame++) {
var t0 = Date.now();
var sbData = [];
for (var sbRow = 0; sbRow < sbMatrixHeight; sbRow++) {
var arrayRow = frame + sbRow - padTop;
for (var sbCol = 0; sbCol < sbMatrixWidth; sbCol++) {
if (arrayRow >= 0 && arrayRow < arrayRows) {
sbData.push(sbArray[arrayRow * sbMatrixWidth + sbCol]);
} else {
sbData.push("#000000");
}
}
}
sbRgbLedMatrix(sbPin, sbData, sbMatrixWidth, sbMatrixHeight, sbType);
var rest = Math.max(frameDelay - (Date.now() - t0), 0);
sbDelay(rest);
}
};
var sbScrollChunkTTB = function(sbArray, sbPin, sbMatrixWidth, sbMatrixHeight, sbType, frameDelay, ownSize, isFirst, isLast) {
var arrayRows = sbArray.length / sbMatrixWidth;
var totalFrames, padTop;
if (isFirst && isLast) { totalFrames = sbMatrixHeight + ownSize + 1; padTop = sbMatrixHeight; }
else if (isFirst) { totalFrames = sbMatrixHeight + ownSize; padTop = sbMatrixHeight; }
else if (isLast) { totalFrames = ownSize + 1; padTop = 0; }
else { totalFrames = ownSize; padTop = 0; }
for (var frame = totalFrames - 1; frame >= 0; frame--) {
var t0 = Date.now();
var sbData = [];
for (var sbRow = 0; sbRow < sbMatrixHeight; sbRow++) {
var arrayRow = frame + sbRow - padTop;
for (var sbCol = 0; sbCol < sbMatrixWidth; sbCol++) {
if (arrayRow >= 0 && arrayRow < arrayRows) {
sbData.push(sbArray[arrayRow * sbMatrixWidth + sbCol]);
} else {
sbData.push("#000000");
}
}
}
sbRgbLedMatrix(sbPin, sbData, sbMatrixWidth, sbMatrixHeight, sbType);
var rest = Math.max(frameDelay - (Date.now() - t0), 0);
sbDelay(rest);
}
};
{
var frameDelay_D5a = Math.floor((1000) / 17);
if (frameDelay_D5a < 0) frameDelay_D5a = 0;
{
var imageData_D5a_0 = ["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000"];
sbScrollChunkRTL(imageData_D5a_0, "PA10", 8, 8, 1, frameDelay_D5a, 8, true, true);
}
}引数(渡す値)
- 第1引数設定
- 第2引数設定
- 第3引数ピン番号(例: PA10)
- 第4引数選択(右から左 / 下から上 / 左から右 / 上から下 / 右から左(反転) / 下から上(反転) / 左から右(反転) / 上から下(反転))
- 第5引数数値
- 第6引数設定
- 第7引数設定