Przede wszystkim nie rób testów na EEPROM w loop, ręka Ci się omsknie i procek do kosza. Wiem, że przesadzam, ale Eeprom można zapisywać ograniczoną ilość razy. Oczywiście symulatora to nie dotyczy.
Zapisujesz 8 bajtów, a odczytujesz 256, to bez sensu.
i oraz j były do tego by ustalić adres EEPROM od 0 do 255, gdy odczytujesz cały EEPROM, a ty sobie tak samo wstawiasz j do indexu swojego stringa, który ma wartość tylko od 0 do 8. Masz odczytać 8 bajtów, wstawić do 8 bajtów w swoim stringu, wydrukować, potem powtórzyć.
A ty jedziesz sobie po komórkach pamięci 248 bajtów za swoją tablicę, za każdym z 32 dwóch razy.
Mieszasz poza tym stringi i c stringi, przecież ten 12345678 też może być c stringiem, czyli tablicą char.
Kod:
#include <EEPROM.h>
char StrUID[9]="12345678";
char odczyt[9]="";
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
delay(100);
}
void loop() {
save_rfid();
read_rfid();
delay(10000);
}
void save_rfid(){
for (int i=0; i<8; i++){
//char r = StrUID.charAt(i);
EEPROM.write (i, StrUID[i]);
}
//EEPROM.commit();
delay(500);
}
void read_rfid()
{
for (int j=0;j<32;j++)
{
for (int i=0; i<8; i++)
{
odczyt[i] = EEPROM.read((j*8)+ i);
}
Serial.println(odczyt);
}
Serial.println("koniec");
}
Wynik:
Kod:
12345678
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ
koniec