2
我在Codes.h
中有以下內容,我可以通過單擊Arduino軟件中的選項卡來訪問它。所以我知道草圖被正確加載的頭文件。Arduino素描 - 頭文件中的對象不包含任何值
#ifndef __CODES_H__
#define __CODES_H__
PROGMEM prog_uint16_t show_hide_info[] = { 4216, 8900, 4380, 580, 500, 600, 500, 580, 1620, 580, 500, 600, 500, 580, 500, 600, 480, 600, 500, 580, 1620, 580, 1620, 600, 500, 580, 1620, 580, 1620, 600, 1600, 600, 1620, 580, 1620, 600, 500, 580, 1620, 580, 500, 600, 1600, 600, 500, 580, 1620, 580, 500, 600, 1620, 580, 1620, 600, 480, 600, 1620, 580, 500, 600, 1600, 600, 500, 580, 1620, 580, 500, 600, 39300, 8860, 2160, 580 };
#endif
我然後在我的代碼,使用所述show_hide_info[]
陣列的方法。
問題是,當我嘗試訪問頭文件中的數組時,它不包含任何值。
取而代之的是,如果我在setup()
方法之上聲明上面的PROGMEM
它確實包含值。
不太清楚爲什麼我得到這個問題。我可以通過在我的草圖中執行以下操作來確認我已正確地聲明瞭我的頭文件。
#include "Codes.h"
這是我如何使用陣列的例子:在控制檯
void sendCode(prog_uint16_t inArray[], int nLimit) {
unsigned int arr[nLimit];
unsigned int c;
int index = 0;
while ((c = pgm_read_word(inArray++))) {
arr[index] = c;
index++;
}
for (int i = 0; i < nLimit; i=i+2) {
Serial.println(arr[i]);
Serial.println(arr[i+1]);
}
}
沒有輸出,如果我嘗試使用陣列中的頭文件中。它只適用於我在我的實際主草圖程序中聲明它。
我知道這不是數組本身或我的方法的問題,因爲一個簡單的字符串或int不起作用。很奇怪。
我不得不在我的草圖中包含,這幾乎是我必須做的唯一修改。現在一切正常。謝謝。 –
fuzz