Hello everyone again 
finally my code is working fine, but just for one card.. =(
if I am using a second card it work so so..
- after cleaned my EEPROM I have programming my Arduino. Then:
- start-> read a tag1 -> save it in EEPROM (position1, 10 to 24 in EEPROM)
- when read a second tag2-> save it in EEPROM (position2, 30 to 44 in EEPROM)
- but when it has read a tag saved before in position 10 to 24 in EEPROM, my code clean the EEPROM from 10 to 44, but here my code must clean just between 10 to 24
//ArduinoUNO
//code_test_7.5.4
#include <EEPROM.h>
char code[15];
char valor[12];
int val = 0;
byte value1;
byte value2;
int bytesread = 0;
int led = 13;
int addr = 10;
int addr2 = 30;
int a = 0;
byte x= 1; // (00000001)
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
if(Serial.available() > 0)
{
if((val = Serial.read()) == 10)
{
bytesread = 0;
while(bytesread < 15)
{
if( Serial.available() > 0)
{
val = Serial.read();
if((val == 10)||(val == 15))
{
break;
}
code[bytesread] = val;
bytesread++;
}
}
Serial.print("tag read: ");
Serial.println(code); //tag1 x2400CC392AFBxxx tag2 x2400CC572897xxx
Serial.print(" bitRead: ");
//test read bit to bit (00000001)
Serial.print(bitRead(x,7));
Serial.print(bitRead(x,6));
Serial.print(bitRead(x,5));
Serial.print(bitRead(x,4));
Serial.print(bitRead(x,3));
Serial.print(bitRead(x,2));
Serial.print(bitRead(x,1));
Serial.println(bitRead(x,0));
//test read eeprom 10 to 49
Serial.print("EEPROM desde 10 to 49: ");
for (int k=10; k<49; k++)
{
value1 = EEPROM.read(k);
Serial.print(value1);
}
Serial.println(" ");
//comparation value in eeprom with value read tag
bool match1 = true;
byte offs1=10;
bool match2 = true;
byte offs2=30;
for (byte b=2; b<13; b++)
{
if (EEPROM.read( b + offs1) != code [b])
{
match1 = false;
break;
}
}
if (match1 == true)
{
Serial.println("ok position1 - tag deleted from position1, EERPOM 10 to 29");
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
delay(250);
bitWrite(x, 1, 0);
//clean EEPROM 10 to 29
for (int i = 10; i < 29; i++)
EEPROM.write(i, 0);
}
else
//comparation value in eeprom with value read tag
for (byte b=2; b<13; b++)
{
if (EEPROM.read( b + offs2) != code [b])
{
match2 = false;
break;
}
}
if (match2 == true)
{
Serial.println("ok position2 - tag deleted from position2, EERPOM 30 to 49");
digitalWrite(12, HIGH);
delay(250);
digitalWrite(12, LOW);
delay(250);
bitWrite(x, 2, 0);
//clean EEPROM 30 to 49
for (int i = 30; i < 49; i++)
EEPROM.write(i, 0);
}
else
//bitread position 1
if (bitRead(x,1) == 0)
{
//write 1
bitWrite(x, 1, 1);
//write in eerpom
for(byte b=0; b<bytesread; b++)
{ //addr = star in position 10
EEPROM.write(addr + b, code[b]);
}
//turn on led pin13
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
delay(250);
Serial.println("1 at position 1 of X - Tag saved at position1, 10 to 24 in EEPROM");
}
//bitread position 2
else if (bitRead(x,2) == 0)
{
//write 1
bitWrite(x, 2, 1);
//write in eerpom
for(byte b=0; b<bytesread; b++)
{ //addr2 = star in position 30
EEPROM.write(addr2 + b, code[b]);
}
//turn on led pin12
digitalWrite(12, HIGH);
delay(250);
digitalWrite(12, LOW);
delay(250);
Serial.println("1 at position 2 of X - Tag saved at position2, 30 to 44 in EEPROM");
}
//test read bit to bit (00000001)
Serial.print(" bitRead: ");
Serial.print(bitRead(x,7));
Serial.print(bitRead(x,6));
Serial.print(bitRead(x,5));
Serial.print(bitRead(x,4));
Serial.print(bitRead(x,3));
Serial.print(bitRead(x,2));
Serial.print(bitRead(x,1));
Serial.println(bitRead(x,0));
//test read EEPROM
Serial.print("EEPROM desde 0 to 44: ");
for (int k=0; k<44; k++)
{
Serial.print(EEPROM.read(k));
}
Serial.println(" ");
Serial.println("__________________________");
}
}
}