よく使う

LEDマトリクスのイラストアニメ

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引数設定