Estou estudando outro projeto, e como ou iniciante estou com dificuldades.

Estou usando o  RFID - RC522.

Gostaria que quando aproximasse o cartão fosse gravado uma string, todas as vezes que fosse aproximado novamente seria gravado de forma adicional o conteúdo no cartão e a nova string.

Verifiquei que tem vários blocos e vários setores, porem não soube encontrar o local para  fazer essa adição de dados.

Exibições: 3204

Responder esta

Respostas a este tópico

Dúvida:

Só é possível gravar 16 caracteres em cada bloco do cartão?

QUantos blocos possui um cartão ?

Obrigado Flávio.

Uso do chaveiro que vem com o kit do RFID RC522.

Gostaria apenas que quando aproximasse o cartão, fosse inserido no mesmo uma string, essa string já está programada no arduino uno, sem que seja preciso digitar.

Segue o código de gravação que estou usando e tentando manipular, mas sem sucesso.

void gravar()
{
//Aguarda cartao
while ( ! mfrc522.PICC_IsNewCardPresent()) {
delay(100);
}
if ( ! mfrc522.PICC_ReadCardSerial()) return;

//Mostra UID na serial
Serial.print(F("UID do Cartao: ")); //Dump UID
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
//Mostra o tipo do cartao
// Serial.print(F("\nTipo do PICC: "));
// byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
// Serial.println(mfrc522.PICC_GetTypeName(piccType));
Serial.println();
byte buffer[32];
byte block;
byte status, len;


Serial.setTimeout(20000L) ;
// Serial.println(F("Digite o sobrenome,em seguida o caractere #"));


//Pega a quantidade de caracteres
//len = Serial.readBytesUntil( '#', ( char * ) buffer, 16) ;

//for (byte i = len; i < 16; i++) buffer[i] = ' ';

// aqui tentai dar entrada no array, mas sem sucesso

buffer[1] = '1';
buffer[2] = 's';
buffer[3] = 'e';
buffer[4] = 'r';
buffer[5] = 'i';
buffer[6] = 'e';



block = 1;
//Serial.println(F("Autenticacao usando chave A..."));
status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print(F("PCD_Authenticate() failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}

//Grava no bloco 1
status = mfrc522.MIFARE_Write(block, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print(F("MIFARE_Write() failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}

else
{
Serial.println(F("Dados gravados com sucesso!"));
Serial.println(len);


}

mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD
delay(2000);


}

Fredh, estou no mesmo problema, conseguiu gravar a string no cartão?

para quem estiver com a mesma duvida e caiu aki:

transforme a string em bytes antes dessa função:

status = mfrc522.MIFARE_Write(block, buffer, 16);

para isto vc faz dessa forma:

stringaserconvertida.getBytes(buffer, intdotamanhodastringmenorquedecesseis ); 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço