Arduino函数干扰loop()代码

时间:2013-06-18 12:26:57

标签: arrays arduino

我在循环函数中有以下几行:

item = String(buffer);
Serial.println(item);  

其中item是String并缓冲char数组。这完全有效,直到我在文件末尾添加一个函数(在循环函数之外):

void storeData(String item){
  Serial.println("StoreData");
  for (int k=0; k<11; k++){
    Serial.print("*");
    if(item == products[k]){
      items[index] = names[k];
      index++;
      Serial.print("\n");
      Serial.print(item);
      Serial.print("\t");
      Serial.print(names[k]);
    }
  }
}

将字符串item与值列表进行比较,并在找到值时存储相应的名称。 当我在最后添加此代码时,即使我不调用该函数,转换的输出也会变为:

978973103 Á
9789731030418

第一个值是不正确的转换,第二个值是buffer的值。

可能会发生什么?我已经重新启动并重新布线并从头开始重复一切。

2 个答案:

答案 0 :(得分:1)

您可能正在耗尽2K SRAM。字符串数组可以快速使用它。

此外,我建议使用F()函数,因为不使用RAM作为constanst。例如Serial.println(F("StoreData");

最新的IDE显示了预期的RAM使用率。但这是猜测。如果它甚至接近那么可能存在问题。我在代码中的特定点使用以下MemoryFree library来揭示高水位。

答案 1 :(得分:0)

由于item是字符串。我想你可以尝试使用

Serial.println(item);

而不是

Serial.print(item);

在你的storeData函数中。其他字符串也类似