#include <Wire.h>
#include "TM1637.h"// TM1637 библиотека
const int CLK = 2;// TM1637 Определения контактов для TM1637 и могут быть изменены на другие порты
const int DIO = 3;// TM1637 Определения контактов для TM1637 и могут быть изменены на другие порты
TM1637 tm1637(CLK, DIO);// TM1637
#include "RTClib.h"// RTC 1307 часы
RTC_DS1307 rtc;// RTC 1307 часы
#define BUTTON11_PIN 11// кнопка 11
#define BUTTON10_PIN 10// кнопка 10
#define BUTTON9_PIN 9// кнопка 9
#define BUTTON8_PIN 8// кнопка 8
int lastState = HIGH;// кнопка
int CH=1;
int TIMCH1=0; int TIMMI1=0;int DOS1=0;
int TIMCH2=0; int TIMMI2=0;int DOS2=0;
int TIMCH3=0; int TIMMI3=0;int DOS3=0;
int P0=0;// меню главное
int XU=0;// счётчик нажатия красной кнопки
int TUMB=1;// тумблер для опроса кнопок
int TUMBK=1;// счетчик запрета красной кнопки
int TUMBJ=0;// счетчик запрета жёлтой кнопки
int TUMBZ=0;// счетчик запрета зелёной кнопки
int DA = 0; int ME = 0; int GO = 2024;int CHA = 12; int MI = 11; int SEC = 0;
void setup() {//_______________________________________________________________________________________________________________
pinMode(BUTTON11_PIN, INPUT_PULLUP);// кнопка 11
pinMode(BUTTON10_PIN, INPUT_PULLUP);// кнопка 10
pinMode(BUTTON9_PIN, INPUT_PULLUP);// кнопка 9
pinMode(BUTTON8_PIN, INPUT_PULLUP);// кнопка 8
tm1637.init();// TM1637 Инициализация модуля
tm1637.set(5);// TM1637 BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
Serial.begin(57600);// RTC 1307 часы
#ifndef ESP8266 // RTC 1307 часы
while (!Serial); // RTC 1307 часы дождитесь подключения последовательного порта. Требуется для встроенного USB
#endif// RTC 1307 часы
if (! rtc.begin()) {// RTC 1307 часы
Serial.println("Couldn't find RTC");//Не удалось найти RTC RTC 1307 часы
Serial.flush();// RTC 1307 часы
while (1) delay(10);// RTC 1307 часы
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");//RTC не запущен, давайте установим время!
// Когда необходимо установить время на новом устройстве или после отключения питания,следующая строка устанавливает RTC на дату и время, когда был составлен этот эскиз
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Эта строка задает RTC с явной датой и временем, например, для установки 21 января 2014 года в 3 часа ночи вы бы позвонили: rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}//___________________________________________________________________________________________________________
void loop() {
//tm1637.displayStr("P-1");
//delay (500);
DateTime now = rtc.now();
//TM1637 минуты
if (CH==1) {// цикл CH=1
if (now.minute()<10) { tm1637.display(3,(now.minute()));tm1637.display(2,0);}// TM1637 <10 Выводим минуты <10 + 0
if (now.minute()>=10) {
String s(now.minute(), DEC);// TM1637 >10 Разделяем 2 цифры минуты на 2 разные С2,С1
char c1 = s[0];// TM1637 >10 Разделяем 2 цифры минуты на 2 разные, С1 первая цифра
char c2 = s[1];// TM1637 >10 Разделяем 2 цифры минуты на 2 разные, С2 вторая цифра
tm1637.display(3,c2);// TM1637 >10 Выводим на экран С2 минуты
tm1637.display(2,c1);// TM1637 >10 Выводим на экран С1 минуты
//Serial.print(c1); Serial.print(c2);// потом удалить (информация)>10
}
//TM1637 часы
if (now.hour()<10) { tm1637.display(1,(now.hour()));tm1637.display(0,0);}// TM1637 <10 Выводим часы <10 + 0
if (now.hour()>=10) {
String s(now.hour(), DEC);// TM1637 >10 Разделяем 2 цифры часы на 2 разные С4,С3
char c3 = s[0];// TM1637 >10 Разделяем 2 цифры часы на 2 разные, С3 первая цифра
char c4 = s[1];// TM1637 >10 Разделяем 2 цифры часы на 2 разные, С4 вторая цифра
tm1637.display(1,c4);// TM1637 >10 Выводим на экран С4 часы
tm1637.display(0,c3);// TM1637 >10 Выводим на экран С3 часы
//Serial.print(c3); Serial.print(c4);// потом удалить (информация)>10
}
//TM1637 двоеточее
if (now.second() % 2 > 0) {tm1637.point(true); } else {tm1637.point(false);}// TM1637 определяем чётное/нечётное секунды,выводим двоеточее
}// цикл CH=1-
//---------------------------------------------------------------------------------кнопка
//if (TUMB==1) {// красная
//if (TUMBK==1){
//int value11 = digitalRead((BUTTON11_PIN));// красная
//if (value11 == HIGH){XU=0;} красная
//if (value11 == LOW) { CH=0;// красная Если нажата красная кнопка №11 (закрываем часы) меню...
//tm1637.point(false);// красная TM1637 отключаем двоеточие
//P0=P0+1;if (P0==4) {P0=0;}
//if (P0==3) {tm1637.display("P-3 "); delay (50);}// красная
//if (P0==2) {tm1637.display("P-2 "); delay (50);}// красная
//if (P0==1) {tm1637.display("P-1 "); delay (50);}// красная
//if (P0==0) {tm1637.display("P-0 "); delay (50);}// красная
//delay(300);// красная
//}// TUMBK- красная
//}// красная
//int value10 = digitalRead((BUTTON10_PIN));// чёрная
//if (value10 == LOW) {// чёрная
//if (P0==0){MI=(now.minute());CHA=(now.hour());}// записали в переменную MI текущую минуту чёрная
//CH=1;// включили часы чёрная
//if (TUMBJ==0 && TUMBZ==0) {TUMBK=0;TUMBJ=1;TUMBZ=1;goto end;}
//if (TUMBJ==1 && TUMBZ==1) {TUMBK=1;TUMBJ=0;TUMBZ=0;
// tm1637.displayStr("oooo");
// delay(1000);tm1637.set(5);
// goto end;}
//end:
//delay(100);// чёрная
//} // чёрная
//if (TUMBJ==1) {
//if (P0==0){// нажали зелёную клавишу P=0 (настройка минут на часах) жёлтая
//if (now.second() % 2 > 0) {tm1637.set(1); } else {tm1637.set(5);}//------------------------
//int value9 = digitalRead((BUTTON9_PIN));// жёлтая
//if (value9 == LOW) {Serial.println("жёлтая");// жёлтая
//CH=1; //;жёлтая СH=1 значит запуск часов,CH=0 часы отключены жёлтая
//CHA=CHA+1;if (CHA>23){CHA=0;}// жёлтая
//Serial.println(CHA);// жёлтая
//SEC=(now.second());//секунда// жёлтая
//MI=(now.minute());// минута// жёлтая
//CHA=(now.hour());// час// жёлтая
//DA=(now.day());// день (дата)// жёлтая
//ME=(now.month());// месяц// жёлтая
//GO=(now.year());// год// жёлтая
//rtc.adjust(DateTime(GO, ME, DA, CHA, MI, SEC)); // жёлтая
//delay (100);
//}
//}
//}//TUMBJ-
//if (TUMBZ==1) {
//if (P0==0){// нажали зелёную клавишу P=0 (настройка минут на часах) зелёная
//int value8 = digitalRead((BUTTON8_PIN));// зелёная
//if (value8 == LOW) {Serial.println("зелёная");// зелёная
//CH=1; //зелёная СH=1 значит запуск часов,CH=0 часы отключены зелёная
//MI=MI+1;if (MI>59){MI=0;}// зелёная
//Serial.println(MI);// зелёная
//SEC=(now.second());//секунда// зелёная
//MI=(now.minute());// минута// зелёная
//CHA=(now.hour());// час// зелёная
//DA=(now.day());// день (дата)// зелёная
//ME=(now.month());// месяц// зелёная
//GO=(now.year());// год// зелёная
//rtc.adjust(DateTime(GO, ME, DA, CHA, MI, SEC)); // зелёная
//}
//}
//}
//--------------------------------------------------------------------------------кнопка
//delay(50);
//}// TUMB-
}