#include <MD_MAX72xx.h> //deklarasi penggunaan library MD_MAX72xx
#include <SPI.h>        //deklarasi penggunaan library SPI

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW //pendefinisian tipe FC16_HW
#define MAX_DEVICES 4   //pendefinisian total modul yg dikaskade
#define CS_PIN    10    //pin CS terhubung ke pin 10 pd Arduino

// Koneksi hardware SPI
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

//pengaturan penyalaan titik pada Dot Matrix
byte heart[8] = {0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x18};
byte face[8] = {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C};
byte face2[8] = {0x00, 0x24, 0x24, 0x24, 0x00, 0x42, 0x3C, 0x00};
byte arrow[8] = {0x18, 0x0C, 0x06, 0xFF, 0xFF, 0x06, 0x0C, 0x18};

void setup() {  
  mx.begin();   //Inisialisasi dot matrix 
  mx.control(MD_MAX72XX::INTENSITY, 0); //setting intensitas 0-15
  mx.clear();   //hapus layar
  }

void loop() {
  for (int i = 0; i <= 7; i++) {
    mx.setRow(0, 0, i, heart[i]); //menyalakan baris ke-n utk heart[]
  }
  delay(300);
  for (int i = 0; i <= 7; i++) {
    mx.setRow(1, 1, i, face[i]); //menyalakan baris ke-n utk face[]
  }
  delay(300);
  for (int i = 0; i <= 7; i++) {
    mx.setRow(2, 2, i, face2[i]); //menyalakan baris ke-n utk face2[]
  }
  delay(300);
  for (int i = 0; i <= 7; i++) {
    mx.setRow(3, 3, i, arrow[i]); //menyalakan baris ke-n utk arrow[]
  }
  delay(300);
  mx.clear();     //hapus layar
  delay(300);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
matrix1:V+
matrix1:GND
matrix1:DIN
matrix1:CS
matrix1:CLK
matrix1:V+.2
matrix1:GND.2
matrix1:DOUT
matrix1:CS.2
matrix1:CLK.2
gnd1:GND