2013-03-18 247 views
1

當Arduino的加電它具有存儲在閃速一個int陣列,例如: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 ]); 
寫好他們

,您將使用設置中的讀取功能重新啓動它們。如果EEPROM中的值是0xff,那麼當您第一次閃存芯片時,不要將它們複製到密碼中。

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

所以將寫入功能是對的行: EEPROM.write(ADDR,SECRETCODE [1]); addr = addr + 1; 如何增加密碼而不必寫20次? – user2119971 2013-03-18 11:07:52

+0

@ user2119971在示例中使用for循環,或者我已將(未測試)代碼添加到答案 – 2013-03-18 11:20:04

+0

如何保存已簽名的整數?我讀回的值對於負值是不正確的。 – FlavorScape 2017-03-27 00:08:10