// Header file includes
#include <Wire.h>
#include <MD_MAX72xx.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define	MAX_DEVICES	2
#define CLK_PIN    13 // CLK or SCK
#define DATA_PIN   11 // DATA or MOSI
#define CS_PIN     10 // CS or SS
#define SPEED_TIME 75 // Speed of the transition
#define PAUSE_TIME  0
MD_MAX72XX matice = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, CS_PIN, MAX_DEVICES);
int x = 0, x_max = 7, x_min = 0;
int y = 0, y_max = 7, y_min = 0;
int sestka[24][2] = {{0, 7}, {0, 6}, {0, 1}, {0, 0}, 
                 {1, 7}, {1, 6}, {1, 1}, {1, 0},
                 {3, 7}, {3, 6}, {3, 1}, {3, 0},
                 {4, 7}, {4, 6}, {4, 1}, {4, 0},
                 {6, 7}, {6, 6}, {6, 1}, {6, 0},
                 {7, 7}, {7, 6}, {7, 1}, {7, 0}
                 };
void setup() {
  // put your setup code here, to run once:
  matice.begin(); // Inicializuje knihovnu a nastaví piny pro komunikaci s displejem.
  //matice.setIntensity(8); // Nastaví jas displeje. Hodnota intensity může být od 0 (nejnižší jas) do 15 (nejvyšší jas).
  matice.clear(); //Vymaže obsah displeje.
}
void loop() {
  // put your main code here, to run repeatedly:
  int size = sizeof(sestka) / sizeof(sestka[0]);
  for (int i = 0; i < size; i++) {
    matice.setPoint(sestka[i][0], sestka[i][1], true);  
  }
   // Zobrazí bod na zadaní pozici
  // matice.setRow(3, 0b11100111);
  // matice.setColumn(3, 0b11100111);
  // matice.setChar(i, 'A'); // Zobrazí písmeno "A" na různé pozici vertikálně
  matice.update(); // Aktualizuje displej s novými hodnotami
  delay(100);
  matice.clear();
}