2
私はCodes.h
に次のものがあります。これはArduinoソフトウェアのタブをクリックしてアクセスします。だから私は、スケッチが正しくヘッダファイルでロードされていることを知っている。Arduino Sketch - ヘッダーファイル内のオブジェクトに値が含まれていません
#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
を宣言すると、値が含まれています。
なぜこの問題が発生しているのかよく分かりません。スケッチで次のようにしてヘッダーファイルを正しく宣言したことを確認できます。私は、ヘッダファイルに配列を使用しようとした場合、コンソールで
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]);
}
}
何も出力:
#include "Codes.h"
この
は、私は、配列を使用する方法の例です。私の実際のメインスケッチプログラムの中でそれを宣言すれば動作します。私はそれが配列自体に問題ではないことを知っています。単純な文字列またはintのどちらでも機能しないためです。非常に奇妙な。
を:
Codes.h
ニーズが動作するように、このように見えます私のスケッチの中に