我最近买了一个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>");
Run Code Online (Sandbox Code Playgroud)
奇怪的是:如果我取消注释最后一行,草图编译得很好,上传很好,但我无法连接到电路板.如果我在其他一些打印输出中添加更多字符,也会发生同样的事情.因此,它看起来好像我遇到了某种内存限制(草图的总大小约为15 KB,代码中的其他地方还有一些其他字符串 - 是的,我知道,我会重写它使用数组来存储临时数据,我刚刚从一个例子中窃取了一些代码).
我可以使用多少内存来存储Arduino中的字符串,有没有办法解决这个问题?(在具有GCC-AVR 4.3.5和AVR Libc 1.6.8 的Debian PC 上使用GUI v 1.0.1 ).
mpf*_*aga 17
RAM相当小,因为UNO的328只有2K.你可能只是用完了RAM.我了解到,当它耗尽时,它只是坐在那里.
我建议从这个库中读取自述文件以获取FreeRAM.它提到了".print"如何消耗RAM和ROM.
我现在总是使用(对于Arduino IDE 1.0.+)
Serial.print(F("HELLO"));
Run Code Online (Sandbox Code Playgroud)
与
Serial.print("HELLO");
Run Code Online (Sandbox Code Playgroud)
因为它节省了RAM,这应该适用于lcd.print.我总是放在哪里
Serial.println(freeMemory(), DEC); // print how much RAM is available.
Run Code Online (Sandbox Code Playgroud)
在代码的开头,并注意.注意到需要有空间来运行实际代码并重新编入其子程序.
对于1.0.0之前的IDE,库提供了getPSTR()).
IDE 1.0.3现在开始在编译结束时显示RAM的预期用法.但是,我发现它通常很短,因为它只是一个估计值.
我还建议您查看Webduino,因为它有一个支持JSON的库.它的例子很快就开始了.但它并不直接支持ENC28J60.
| 归档时间: |
|
| 查看次数: |
17654 次 |
| 最近记录: |