2014-12-18 3 views
-1

Я хотел бы перезапустить плату arduino, но сохраняя значения некоторой переменной. Мое решение будет вызывать setup() всякий раз, когда я хотел бы перезапустить. Что-то вроде этого:Перезапуск Arduino и сохранение переменных

int led = 13; 
int led2 = 50; 
boolean restart = false; 

void setup() {  

    pinMode(led, OUTPUT); 
    pinMode(led2, OUTPUT); 

    if(!restart){ 
    digitalWrite(led, LOW); // will only happen once 
    delay(3000); 
    } 

    digitalWrite(led, HIGH); // turn the LED on (and will be always on even after reset) 
    restart = true; 
    delay(3000); 
    digitalWrite(led2, HIGH); // indicate restart is called 
    delay(1000); 
    digitalWrite(led2, LOW); 
    setup();} 

void loop() {   } 

Я думал, если это приведет к интенсивному использованию в ОЗУ. Или есть какие-то лучшие методы?

спасибо.

+0

Вызов настройки() изнутри setup() приведет к переполнению стека. (И да, это будет использовать всю оперативную память.) – UncleO

+0

ну, может быть, не в setup(), а один раз в цикле() .... (например, когда некоторые кнопки нажимаются/в какой-то ситуации код для начните снова с самого начала) –

+0

Как сказал UncleO, код как есть, обязательно вызовет переполнение стека (BTW: loop() никогда не запустится) – Vagaus

ответ

0

Используйте библиотеку EEPROM. Имейте кнопку с прерыванием, которое сохраняет переменную, а затем прочитайте переменную в процедуре setup().

Если вы получаете или изменяете информацию достаточно медленно, вы можете постоянно записывать значение, но будьте осторожны, EEPROM на этом чипе сертифицируется только на 100 000 записей на байт.

+0

Я не надеялся использовать EEPROM, поскольку он может писать только до 100 000 раз .... (не долгосрочное решение? ..) –

+0

Как часто вам нужно сохранять данные? Если вы будете экономить один раз в час, у вас начнутся сбои в 11yrs. Это может быть расширено за счет записи в разных секторах каждый раз, чтобы использовать всю область EEPROM. Это всегда будет зависеть от вашего варианта использования. У вас может быть внешний EEPROM-сокет с расписанием замены, если вам требуется более регулярная запись. В этот момент вы также можете использовать SD-карту и иметь еще большую гибкость. – djUniversal

+0

Сколько данных необходимо сохранить и как часто? – djUniversal

Смежные вопросы