2013-03-18 131 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