現在、ArduinoのEEPROMにデータを保存する関数を書き込もうとしています。これまでのところ、指定した文字列を書き込んでから、プログラムが最初に実行されたときにそれを読み戻しています。文字列の長さを最初のバイトとして格納しようとしていますが、コードは次のとおりです。
#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char string[] = "Test";
void setup() {
lcd.begin( 16, 2 );
for (int i = 1; i <= EEPROM.read(0); i++){ // Here is my error
lcd.write(EEPROM.read(i));
}
delay(5000);
EEPROM_write(string);
}
void loop() {
}
void EEPROM_write(char data[])
{
lcd.clear();
int length = sizeof(data); // I think my problem originates here!
for (int i = 0; i <= length + 2; i++){
if (i == 0){
EEPROM.write(i, length); // Am I storing the length correctly?
lcd.write(length);
}
else{
byte character = data[i - 1];
EEPROM.write(i, character);
lcd.write(character);
}
}
}
私が抱えている問題は、EEPROMの最初のバイトを読み取るときに、想定される長さの値を取得することです。ただし、ループは3回しか実行されません。コードのいくつかの興味深い点にコメントしましたが、エラーはどこにありますか?