このコードを正しく動作させるのに苦労しています。私の目標は、PROGMEM に配置された文字列を LCD に表示することです。これらの文字列へのポインタを含む配列も PROGMEM にあります。この関数は、配列を読み取るためのインデックス番号に変換される変数を使用して呼び出されます。もちろん、pgmspace.h はコードに含まれています。
私が取得し続けるエラーは次のとおりです。配列添え字の型は 'char' [-Wchar-subscripts] - 初期化により、キャストなしで整数からポインターが作成されます [デフォルトで有効]
誰かが私がここで見逃していることを指摘できますか?
AVR GCC のコードに取り組んでいる私の IDE は Eclipse です。
const char wf0[] PROGMEM= "OFF ";
const char wf1[] PROGMEM= "SIN ";
const char wf2[] PROGMEM= "TRI ";
const char wf3[] PROGMEM= "S+T ";
const char wf4[] PROGMEM= "PUL ";
const char wf5[] PROGMEM= "P+S ";
const char wf6[] PROGMEM= "P+T ";
const char wf7[] PROGMEM= "P+ST";
const char wf8[] PROGMEM= "NOI ";
const char wf9[] PROGMEM= "N+S ";
const char wf10[] PROGMEM= "N+T ";
const char wf11[] PROGMEM= "NST ";
const char wf12[] PROGMEM= "N+P ";
const char wf13[] PROGMEM= "NPS ";
const char wf14[] PROGMEM= "NPT ";
const char wf15[] PROGMEM= "NPTS";
const char * const arrayWaveform[] PROGMEM= {wf0,wf1,wf2,wf3,wf4,wf5,wf6,wf7,wf8,wf9,wf10,wf11,wf12,wf13,wf14,wf15};
...
void showWaveform (char ctrlValue)
{
char hex = (ctrlValue & 0xf0)>>4;
char tempText[4];
char* data = pgm_read_byte(&arrayWaveform[hex]); // <<shows up both errors here
strcpy_P (tempText, data);
for (char x=0;x<4;x++)
{
char2LCD(tempText[x]); // <<shows up error: array subscript has type 'char'
}
}