1

当 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 中写入和读取阵列?这对我来说是全新的,所以任何帮助都会很棒。

4

1 回答 1

2

您将使用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 );
于 2013-03-18T10:29:36.380 回答