Сохраниние в еепром

LamaKING
Offline
Зарегистрирован: 16.02.2018

Есть переменная

unsigned long hour;

Она меняется раз в час до значения равному 8.  Когда hour = 8, делает определенное действие и меняется на ноль. Цикл повторяется постоянно.

Нужно сделать так, чтобы значение hour никуда не пропадало после отключения питания.

т.е если при hour = 6  выключено питание, при повторном знач. питании hour опять равнялся 6 и продолжал работу.

Green
Offline
Зарегистрирован: 01.10.2015

Это платный раздел.
Нужен весь скетч, либо контекст использования hour.
htpicc@gmail.com

Azat222
Offline
Зарегистрирован: 25.02.2018

Сделаю для вас скетч. Обсудим на почте.
Azat222@gmail.com

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014
#include <EEPROM.h>

#define TIMER_EEPROM_ADDR 0 // адрес сохранения таймера в епроме
uint8_t timeLimit; // буфер счетчика лимита времени в озу
uint32_t timer; // таймер для подсчета временных интервалов

void setup() {
  // "наказать" за каждое включение, сократив лимит на час
  timeLimit=EEPROM.read(TIMER_EEPROM_ADDR); // считать из епрома старый счетчик
  timer=millis()-6000; // засечь таймер
}

void loop() {
   if (millis()-timer>60000){ // час прошел
      if (timeLimit<255){ // счетчик еще не переполнился
         EEPROM.write(TIMER_EEPROM_ADDR,++timeLimit);// увеличить счетчик часов в епроме
         timer+=60000; // перезасечь таймер    
      } else { // счетчик накопил 255 часов работы
         while(1); // сделать гадость
      }
   }
}