Как запомнить текущее время при нажатии копки?

Тема в разделе "Arduino & Shields", создана пользователем issida, 25 май 2016.

  1. issida

    issida Нерд

    Используется DS1307. Кусок кода, который считает время
    Код (C++):
    void loop() {

    DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла
    long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX
    utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках,
    //Это дает количество секунд с начала текущих суток
    Как запомнить значение utime в момент нажатия кнопки, и чтоб оно не изменялось до следующего нажатия?
     
  2. ostrov

    ostrov Гуру

    Сами часы остановить не получится, скорее всего. Можно так: запомнили, а при следующем нажатии записали в часы запомненное.
     
  3. issida

    issida Нерд

    Часы пускай идут как шли, а время с них записать в какую-нибудь переменную, и значение этой переменной не должно изменяться вместе с часами до следующего нажатия кнопки
     
  4. Onkel

    Onkel Гуру

    для кнопки объявляете PINx как цифровой вход с подтяжкой, потом

    if(!PINx)
    long utime = myTime.unixtime();
     
    issida нравится это.
  5. issida

    issida Нерд

    Получилось
    Код (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);
    }