2013-03-18 11 views
1

Когда Arduino работают на него есть целочисленный массив, хранящийся в вспышке, например:Arduino EEPROM написать и прочитать массив?

int secretCode[maximumKnocks] = {50, 25, 25, 50, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

Когда кнопка программы нажата, она затем ждет пьезо подобрать стук, и этот массив, то изменения, например:

int secretCode[maximumKnocks] = {25, 50, 25, 50, 100, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

(на основе http://grathio.com/assets/secret_knock_detector.pde)

Как бы я писать и читать массив в/из EEPROM? Это совершенно ново для меня, поэтому любая помощь будет отличной.

ответ

1

Вы должны написать значения, используя цикл функции EEPROM.Write по массиву, записывая каждое значение по очереди.

Предполагая, что вам не нужно хранить целые значения> 254 (в этом случае вы должны написать два байта для каждого элемента в secretCode), это было бы:

for (int i = 0; i < maximumKnocks; ++i) 
    EEPROM.write (i, secretCode [ i ]); 

Написав их, вы должны вернуть read при запуске, используя функцию чтения в настройке. Если значения в EEPROM равны 0xff, которые они будут при первом запуске чипа, не копируйте их в секретный код.

if (EEPROM.read (0) != 0xff) 
    for (int i = 0; i < maximumKnocks; ++i) 
     secretCode [ i ] = EEPROM.read (i); 
+0

Так бы функция записи будет на линиях: EEPROM.write (адр, secretCode [1]); addr = addr + 1; Как я могу увеличивать секретный код без необходимости его писать 20 раз? – user2119971

+0

@ user2119971 использовать цикл for, как в примерах, или (непроверенный) код, который я добавил в ответ –

+0

, как бы сохранить подписанные ints? значение, которое я читаю, неверно для отрицательных целых чисел. – FlavorScape