У меня есть следующее в Codes.h
, к которому я обращаюсь, щелкая вкладку в программном обеспечении 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[]
.
Проблема в том, что когда я пытаюсь получить доступ к массиву в заголовочном файле, он не содержит никаких значений.
Вместо этого, если я объявлю выше PROGMEM
выше setup()
метода, он содержит значения.
Не совсем уверен, почему у меня эта проблема. Я могу подтвердить, что правильно объявил свой заголовочный файл, выполнив следующее в моем наброске.
#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 тоже не работает. Очень странно.