0

这是代码,使用Arduino IDE,简单的草图试图打印300个不同文本的const char*数组中的所有不同文本。我做错了什么?如何使用循环逐个打印,但使用对数组的动态引用,将整个数组带到变量内存中,编译器会失败地说:全局变量使用3692字节(180%),最大值为2048字节。

但是,当我仅硬编码一个时,例如使用数组的索引50,它可以很好地工作,只需要最少的内存。我相信一定有办法一个接一个地带来。

这是代码:

const char*程序[]={“MyValue001”、“MyValue002”、“MyValue003”、”MyValue004“、”MyValue005“、,"MyValue011","MyValue012","MyValue013","MyValue014","MyValue015","MyValue016","MyValue017","MyValue018","MyValue019","MyValue020",“MyValue021”,“MyValue022”,“MyValue023”,. . . .. . . .    // 总共300种不同的文本. . . .,"MyValue281","MyValue282","MyValue283","MyValue284","MyValue285","MyValue286","MyValue287","MyValue288","MyValue289","MyValue290","MyValue291","MyValue292","MyValue293","MyValue294","MyValue295","MyValue296","MyValue297","MyValue298","MyValue299","MyValue300"}无效设置(){序列开始(115200);对于(int i=0;i<256;i++){串行打印(程序[50]);//有了这个Arduino IDE可以很好地编译串行打印(程序[i]);//有了这个Arduino IDE,变量的内存不足(2048}}无效循环(){//将主代码放在此处,以便重复运行:}

当编译器使用-->Serial.print(program[i])时内存不足180%时,出现此错误;

草图使用4992字节(16%)的程序存储空间。最大为30720字节。全局变量使用3692字节(180%)的动态内存,为局部变量保留-1644字节。最大为2048字节。内存不足;看见https://support.arduino.cc/hc/en-us/articles/360013825179有关减少足迹的提示。数据段超出板中的可用空间

编译错误:数据段超出板中的可用空间

这是完成消息好吧,编译器只使用8%的变量内存

草图使用1438字节(4%)的程序存储空间。最大为30720字节。全局变量使用184字节(8%)的动态内存,为局部变量保留1864字节。最大为2048字节。

我想在一个字符数组上有300个不同的文本,每个最多14个字符。让我们称之为程序或补丁列表,就像Synth键盘上的程序一样,根据旋转编码器输入的值,只需在LCD显示器上打印所选程序的名称。
我选择的示例(上面)比我原来的项目更基本,但修复此代码上的问题将帮助我理解并轻松地将解决方案应用于我的主要项目

0

重置为默认值

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.