0
我試圖通過串行發送數組內容。這是代碼:打印數組內容到串行,給出意想不到的值
#include <PCM.h>
const unsigned char sample[] PROGMEM = {
126, 127, 128, 128, 128, 128, 128, 127, 128, 128, 128, 129, 129, 128, 127, 128, 128, 127, 126, 127, 128, 129, 128, 127, 126, 127, 128, 128, 126, 126, 127, 127, 127, 127, 127, 127, 126, 127, 129, 130, 129, 128, 126, 126, 126, 126, 127, 129, 130, 129, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 128, 130, 131, 129, 127, 126, 126, 126, 127, 127, 128, 128, 128, 128, 127, 128, 128, 127, 127};
void setup()
{
Serial.begin(115200);
delay(3000);
for (int i=0; i<sizeof(sample); i++)
{
delay(100);
Serial.println(sample[i]);
}
}
void loop()
{
}
當我開始監測串行端口時,它給出非預期的輸出,而不是數組內的原始值。 這是第一個代碼「用的println」的輸出:
0
0
6
0
0
0
1
0
0
6
6
6
6
6
6
6
0
0
135
0
0
6
0
0
1
3
0
6
171
0
0
0
0
0
0
0
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
2
6
1
4
45
0
0
6
0
6
0
248
254
這是「寫」的輸出: i could not paste the output of "write", i captured it as jpg
但是,當我這樣做,我得到了我想要的值,但我會失去FOR循環,
#include <PCM.h>
const unsigned char sample[] PROGMEM = {
126, 127, 128, 128, 128, 128, 128, 127, 128, 128, 128, 129, 129, 128, 127, 128, 128, 127, 126, 127, 128, 129, 128, 127, 126, 127, 128};
void setup()
{
Serial.begin(115200);
delay(3000);
//for (int i=0; i<sizeof(sample); i++)
// {
delay(100);
Serial.println(sample[0]);
Serial.println(sample[1]);
Serial.println(sample[2]);
Serial.println(sample[3]);
Serial.println(sample[4]);
// }
}
void loop()
{
}
什麼問題? 我想不起來。 任何幫助將不勝感激。
注意:兩個代碼應該對數組中的前5個值給出相同的結果,但它沒有,第二個代碼給出了「126 127 128 128 128」,它是好的,但是第一個代碼不會,並且它只有變量「i」而不是逐一列出數組的所有內容。
謝謝你在前進,
我不確定這裏發生了什麼,但是如果你在每個'println'之前放了一個延遲,第二個例子仍然「工作」嗎?這更像第一個例子。同樣,如果你剛剛在循環中有第一個'println'會發生什麼:你正確地得到126的負載? –
使用write而不是println。 Printeln在每個字節後添加LF字符。 –
感謝您的重播, 是的,我得到的126s你提到的負載,這是我的問題, 當我使用變量「我」循環數組,我得到非數組值(如在第一個代碼中) ,但是當我通過它們各自的索引調用這些項時,我在數組中正確地得到它們......但是我將失去for循環,因爲我無法一個一個地迭代它們! – Sharista