/*
  Matrix as array of bytes
  Some people prefer to operate with arrays of bytes instead of long integers.
  This case is also supported. Here is example of using an array of bytes in binary format:

  翻譯:
  矩陣作為位元組數組
  有些人喜歡使用位元組數組而不是長整數進行操作。
  這個案例也得到支持。 以下是使用二進位格式的位元組數組的範例:

  網址:https://xantorohara.github.io/led-matrix-editor/#
*/

#include <LedControl.h>

const int DIN_PIN = 7;
const int CS_PIN = 6;
const int CLK_PIN = 5;

const byte IMAGES[][8] = {
  {
    0b11111111,
    0b00000000,
    0b00000000,
    0b10000000,
    0b10000000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b11000000,
    0b11000000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b01100000,
    0b01100000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00110000,
    0b00110000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00011000,
    0b00011000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00001100,
    0b00001100,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00000110,
    0b00000110,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00000011,
    0b00000011,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00000001,
    0b00000001,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00000011,
    0b00000011,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00000110,
    0b00000110,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00011000,
    0b00011000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b00110000,
    0b00110000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b01100000,
    0b01100000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b11000000,
    0b11000000,
    0b00000000,
    0b00000000,
    0b11111111
  }, {
    0b11111111,
    0b00000000,
    0b00000000,
    0b10000000,
    0b10000000,
    0b00000000,
    0b00000000,
    0b11111111
  }
};
const int IMAGES_LEN = sizeof(IMAGES) / 8;

LedControl display = LedControl(DIN_PIN, CLK_PIN, CS_PIN);

void setup() {
  display.clearDisplay(0);
  display.shutdown(0, false);
  display.setIntensity(0, 5);
}

void displayImage(const byte* image) {
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      display.setLed(0, i, j, bitRead(image[i], 7 - j));
    }
  }
}

int i = 0;

void loop() {
  displayImage(IMAGES[i]);
  if (++i >= IMAGES_LEN ) {
    i = 0;
  }
  delay(333);
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
matrix1:V+
matrix1:GND
matrix1:DIN
matrix1:CS
matrix1:CLK
matrix1:V+.2
matrix1:GND.2
matrix1:DOUT
matrix1:CS.2
matrix1:CLK.2