#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <iarduino_RTC.h>
#include <Max72xxPanel.h>


int H=0;
int M=0;
uint8_t h,m,s;
int pinCS=10;
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 4;

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

iarduino_RTC time(RTC_DS1307);

#define BSET_PIN 7
#define BPLUS_PIN 6
#define BMINUS_PIN 5
#define LEDH_PIN 9
#define LEDM_PIN 8


void setup() {
  
  
  matrix.setIntensity(1);
 
    matrix.setRotation(0,4); 
   matrix.setRotation(1,4);
    matrix.setRotation(2,4);
     matrix.setRotation(3,4);
     matrix.setRotation(matrix.getRotation()+1);
 Serial.begin(9600);
    time.begin();
   time.settime(0,0,0);

    pinMode (BSET_PIN, INPUT);
    pinMode (BPLUS_PIN, INPUT);
    pinMode (BMINUS_PIN, INPUT);
    pinMode (LEDH_PIN, OUTPUT);
    pinMode (LEDM_PIN, OUTPUT);
    digitalWrite(LEDM_PIN, HIGH);
    digitalWrite(LEDH_PIN, HIGH);


}
    void loop() {
  
 
  if(millis()%1000==0){
    h=time.Hours;
    m=time.minutes;
    s=time.seconds;
    Serial.println(time.gettime("H:i:s"));
    delay(2);

  }
    Serial.println(time.gettime("H:i:s")); 
    
      if(digitalRead(BSET_PIN)) {
      
      digitalWrite(LEDM_PIN,LOW);
      M=1;
      digitalWrite(LEDH_PIN, HIGH);
      H=0;
      delay(500);}
      if(digitalRead(BSET_PIN)) {

      digitalWrite(LEDM_PIN, HIGH);
      M=0;
      digitalWrite(LEDH_PIN, LOW);
      H=1;
      delay(500);}
      if(digitalRead(BSET_PIN)){

      digitalWrite(LEDM_PIN, HIGH);
      M=0;
      digitalWrite(LEDH_PIN, HIGH);
      H=0;
      delay(500);}

  

if(digitalRead(BPLUS_PIN)&&H==1) {

 h++;
    if(h>23) h=0;
   time.settime(h);
    delay(100);
  }

if(digitalRead(BMINUS_PIN)&&H==1) {

  h--;
  if(h<=0) h=24;
   time.settime(h);
  delay(100);
  } 
  
  if(digitalRead(BPLUS_PIN)&&M==1) {
   
  m++;
    if(m>59) m=0;
    time.settime(m);
    delay(100);
  }

if(digitalRead(BMINUS_PIN)&&M==1) {

  m--;
  if(m<=0) m=59;
  time.settime(m);
  delay(100);
  } 

  matrix.fillScreen(0);

    String hour1 = String (h/10); // преобразовываем числа для вывода
    String hour2 = String (h%10);
    String min1 = String (m/10);
    String min2 = String (m%10);
    String sec1 = String (s/10);
    String sec2 = String (s%10);
    

 matrix.drawChar(1,1,min2[0],HIGH,LOW,1); 
    matrix.drawChar(10,1,min1[0],HIGH,LOW,1);
matrix.drawChar(17,1,hour2[0],HIGH,LOW,1);
matrix.drawChar(26,1,hour1[0],HIGH,LOW,1);
matrix.write();

    

       matrix.drawPixel(6, 0,HIGH);
     matrix.drawPixel (25, 7,HIGH);
      matrix.drawPixel(22, 0,HIGH);
       matrix.drawPixel(22, 7,HIGH);
         matrix.drawPixel(6, 7,HIGH);
          matrix.drawPixel(9, 0,HIGH);
           matrix.drawPixel(9, 7,HIGH);
            matrix.drawPixel(25, 0,HIGH);
            matrix.write();
            delay(500);

 matrix.drawPixel(6, 0,LOW); 
    matrix.drawPixel(9, 0,LOW);
     matrix.drawPixel(22, 0,LOW);
      matrix.drawPixel(25, 0,LOW);
        matrix.drawPixel(25, 7,LOW);
         matrix.drawPixel(6, 7,LOW);
           matrix.drawPixel(9, 7,LOW);
            matrix.drawPixel(22, 7,LOW);
            matrix.write();
             delay(500);

   

}

        
    





GND5VSDASCLSQWRTCDS1307+