Используется DS1307. Кусок кода, который считает время Код (C++): void loop() { DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках, //Это дает количество секунд с начала текущих суток Как запомнить значение utime в момент нажатия кнопки, и чтоб оно не изменялось до следующего нажатия?
Сами часы остановить не получится, скорее всего. Можно так: запомнили, а при следующем нажатии записали в часы запомненное.
Часы пускай идут как шли, а время с них записать в какую-нибудь переменную, и значение этой переменной не должно изменяться вместе с часами до следующего нажатия кнопки
для кнопки объявляете PINx как цифровой вход с подтяжкой, потом if(!PINx) long utime = myTime.unixtime();
Получилось Код (C++): #include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC #include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC int PINx = 8; long ttime = 0; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(PINx, INPUT); Wire.begin(); //Инициируем I2C интерфейс RTC.begin(); //Инициирум RTC модуль } void loop() { // put your main code here, to run repeatedly: DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках, if(digitalRead(PINx)==HIGH){ ttime = utime; } Serial.println(ttime); }