gpt4 book ai didi

arduino - Arduino 的内存限制

转载 作者:行者123 更新时间:2023-12-02 11:38:49 28 4
gpt4 key购买 nike

我最近买了一个Arduino Uno ,现在我正在尝试一下。我有几个 18B20 传感器和一个连接到它的 ENC28J60 网络模块,然后我正在制作一个草图,以便我可以从浏览器连接到它,并以简单的网页或 JSON 的形式读出温度。 。制作网页的代码如下所示:

client.print("Inne: ");
client.print(tempin);
client.println("<br />");
client.print("Ute: ");
client.print(tempout);
client.print("<br /><br />");
client.println(millis()/1000);
// client.print("<a href=\"/json\">j</a>");

奇怪的是:如果我取消注释最后一行,草图编译正常,上传正常,但我无法连接到开发板。如果我在其他一些打印输出中添加更多字符,也会发生同样的情况。因此,在我看来,好像遇到了某种内存限制(草图的总大小约为 15 KB,并且代码中的其他地方使用了一些其他字符串 - 是的,我知道,我将重写它使用数组来存储临时变量,我刚刚从示例中窃取了一些代码)。

在 Arduino 中存储字符串的内存量是否有限制?有什么方法可以解决这个问题吗? (在装有 GCC-AVR 4.3.5 和 GUI 1.6.8 的 Debian PC 上使用 AVR Libc v 1.0.1)。

最佳答案

RAM相当小,因为UNO的328只有2K。您可能只是内存不足。我了解到,当它用完时,它就只是坐在那里。

我建议阅读readme从这个库获取 FreeRAM。它提到“.print”如何同时消耗 RAM 和 ROM。

我现在总是使用(Arduino IDE 1.0.+)

Serial.print(F("HELLO"));

对比

Serial.print("HELLO");

因为它可以节省 RAM,这对于 lcd.print 来说应该是正确的。我总是放一个

Serial.println(freeMemory(), DEC);  // print how much RAM is available.

在代码的开头,注意一下。请注意,需要有空间来运行实际代码并重新调用其子例程。

对于 1.0.0 之前的 IDE,该库提供 getPSTR())。

IDE 1.0.3 现在开始在编译结束时显示 RAM 的预期使用情况。然而,我发现它通常很短,因为它只是一个估计。

<小时/>

我还建议您查看Webduino因为它有一个支持 JSON 的库。它的例子很快就能上手。但它不直接支持ENC28J60。

关于arduino - Arduino 的内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663543/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com