Arduino EEPROM写入和读取阵列?

时间:2013-03-18 10:15:20

标签: arrays arduino eeprom

当Arduino上电时,它有一个存储在闪存中的int数组,例如:

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 个答案:

答案 0 :(得分: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 );