【问题标题】:Concatenating strings in PROGMEM for arduino UNO在 PROGMEM 中为 arduino UNO 连接字符串
【发布时间】:2015-05-11 01:32:30
【问题描述】:

我正在尝试创建一个波文件名称列表 soundList 以通过 arduino UNO 上的 adafruit WAV 屏蔽来播放。由于这些文件名永远不会改变,而且我的 sRam 快用完了,我想将它们存储在 PROGMEM 中,但出现错误:

invalid operands of types 'const char*' and 'const char [5]' 
to binary 'operator+'

我不能在 PROGMEM 中连接字符串吗?我不明白为什么。

for (int i = 1; i < 19; ++i)
  {
    const char soundList[i] PROGMEM = "Track" + i + ".WAV";
    return soundList;
  }

我也很难从 soundList 中读取波形文件?

pgm_read_word(&(soundList[i])));

有什么智慧之言吗?

【问题讨论】:

    标签: c++ arrays string arduino progmem


    【解决方案1】:

    for 循环是运行时操作。您无法执行分配给PROGMEM 变量的运行时操作,因为该变量将存储在(运行时只读)闪存中。

    但由于唯一的可变部分是数字,所以将其他两个部分存储在闪存中并在运行时创建文件名。

    #define FILEPREFIXLEN 5
    char fileprefix[] PROGMEM = "Track";
    #define FILESUFFIXLEN 4
    char filesuffix[] PROGMEM = ".WAV";
    #define FILEMIDLEN 2
    
     ...
    
    char filename[FILEPREFIXLEN + FILEMIDLEN + FILESUFFIXLEN + 1];
    // Read fileprefix into filename, append number, append filesuffix
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2023-03-31
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多