我正在尝试编写一个简单的程序(作为更复杂程序的前导),它将字节数组存储到 progmem,然后读取并打印该数组。我已经浏览了一百万个在线博客/论坛帖子,并认为我做的一切都很好,但我仍然得到完全的胡言乱语作为输出。
这是我的代码,任何帮助将不胜感激!
void setup() {
byte hello[10] PROGMEM = {1,2,3,4,5,6,7,8,9,10};
byte buffer[10];
Serial.begin(9600);
memcpy_P(buffer, (char*)pgm_read_byte(&hello), 10);
for(int i=0;i<10;i++){
//buffer[i] = pgm_read_byte(&(hello[i])); //output is wrong even if i use this
Serial.println(buffer[i]);
}
}
void loop() {
}
如果我使用memcpy
,我会得到输出:
148
93
0
12
148
93
0
12
148
93
如果我buffer = ....
在 for 循环中使用语句(而不是memcpy
):
49
5
9
240
108
192
138
173
155
173