#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="P1";// меню главное
int XU=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-
//---------------------------------------------------------------------------------кнопка
int value11 = digitalRead((BUTTON11_PIN));
//if (value11 == HIGH){XU=0;}
if (value11 == LOW) { Serial.println(XU);CH=0;// Если нажата красная кнопка №11 (закрываем часы) меню...
tm1637.point(false);// TM1637 отключаем двоеточие
if (P0=="P3") {tm1637.display("P-3 ");P0="P0"; delay (50);goto go;}
if (P0=="P2") {tm1637.display("P-2 ");P0="P3"; delay (50);}
if (P0=="P1") {tm1637.display("P-1 ");P0="P2"; delay (50);}
if (P0=="P0") {tm1637.display("P-0 ");P0="P1"; delay (50);}
go:
delay(100);
}
int value10 = digitalRead((BUTTON10_PIN));
if (value10 == LOW) {Serial.println(" 10 yes");
CH=1;
}
int value9 = digitalRead((BUTTON9_PIN));
if (value9 == LOW) {Serial.println(" 9 yes");
rtc.adjust(DateTime(1977, 04, 29, 12, 00, 10));
}
int value8 = digitalRead((BUTTON8_PIN));
if (value8 == LOW) {Serial.println(" 8 yes");
rtc.adjust(DateTime(1977, 04, 29, 12, 00, 10));
}
//--------------------------------------------------------------------------------кнопка
delay(50);
}