//Tutorial from
//https://arduino8.webnode.cz/news/lekce-17-arduino-a-eeprom/
//256 32768Byte = -1 for num, /8 = 4095 code
//128 32768Byte = -1 for num, /8 = 4095 code
//32 = -1 for num, /8 = 511 code
#include <EEPROM.h>
void setup() {
Serial.begin(9600);
//budeme zapisovat do pameti kody
//zapiseme pocet cipu
EEPROM.write(1, 8);
int adr=10; //start Adr
//naplnime data
//TextToEEPROM(adr,8, "F8A21000");
//adr+=8;
TextToEEPROM(adr,8,"D2C3AB85");
TextToEEPROM(adr+=8,8,"A258DB40");
TextToEEPROM(adr+=8,8,"D20AC850");
TextToEEPROM(adr+=8,8,"C2C3AB85");
TextToEEPROM(adr+=8,8,"D258DB40");
TextToEEPROM(adr+=8,8,"E20AC850");
TextToEEPROM(adr+=8,8,"AF58DB20");
TextToEEPROM(adr+=8,8,"FF58DB20");
//for (int i=10; i< 42; i+=8){
// Serial.println(TextFromEEPROM(i,8));
//}
//hledame cip
Serial.println("SEARCH");
if (Compare("E20AC850")){
Serial.println("FOUND end srch");
}else{
Serial.println("NOT FOUND");
}
}
void loop() {}
//najdeme v pameti
bool Compare(String srchCode){
//read num of code
int codeCount = EEPROM.read(1);
Serial.println(codeCount);
int adr = 10; //prvni adresa pro kody
String value;
//maximalni pocet cipu 255 tj po 4 cipe 63 bytu store in 1B
// 2Byte 510 tj po 4 cipech 127 bytu
//nacteme adresy
//cisla cipu budou od 10 po 8byte
//nacitame dokud nenarazime na prazdnou hodnotu
for (int i=1; i<=codeCount; i++){
value = TextFromEEPROM(adr,8);
//Serial.print(srchCode);
//Serial.print(" ");
Serial.println(value);
//cteme kody od prvni pozice do posledni
adr += 8;
if (value == srchCode)
return true;
}
return false;
}
void TextToEEPROM(int adresa, int maxVelikost, String text){
for (int i = 0;i < text.length();i++){
EEPROM.write(adresa + i, (byte)text[i]);
}
for (int i = text.length();i < maxVelikost;i++){
EEPROM.write(adresa + i, ' ');
}
}
String TextFromEEPROM(int adresa, int maxVelikost){
String TextFromEEPROM = "";
for (int i = 0;i < maxVelikost;i++){
char znak = (char)EEPROM.read(adresa + i);
TextFromEEPROM = TextFromEEPROM + znak;
}
while (TextFromEEPROM[TextFromEEPROM.length() - 1] == ' '){
TextFromEEPROM = TextFromEEPROM.substring(0,TextFromEEPROM.length() - 1);
}
return TextFromEEPROM;
}