Не должно быть необходимости в локальной переменной массива arr
. Если вы покончили с этим, вам следует одновременно сэкономить пространство временного стека и ускорить выполнение, исключив необходимость копирования данных.
void sendCode(const prog_uint16_t inArray[]) {
unsigned int c;
for (int i = 0; c = pgm_read_word(inArray++); i++) {
if (i % 2 == 0) { // Even array elements are delays
delayMicroseconds(c);
} else { // Odd array elements are pulse lengths
pulseIR(c);
}
}
}
В этом коде предполагается, что максимальное целое число, хранящееся в int
, больше, чем максимальный размер inArray
(это кажется разумным, поскольку исходный код по существу делает то же самое предположение, используя int
для nLimit
) .