您正在使用的庫提供的專用方法對MIFARE標籤進行讀寫操作:
StatusCode MIFARE_Read(byte blockAddr, byte *buffer, byte *bufferSize);
StatusCode MIFARE_Write(byte blockAddr, byte *buffer, byte bufferSize);
由於你的描述(部門2塊8)建議您使用MIFARE經典標籤,你會還需要對標籤進行身份驗證才能執行讀取/寫入操作。因此,您還需要驗證方法:
StatusCode PCD_Authenticate(byte command, byte blockAddr, MIFARE_Key *key, Uid *uid);
正如你會使用這個庫來讀取UID
if (mfrc522.PICC_ReadCardSerial()) {
Serial.print(F("Card UID:"));
dump_bytes(mfrc522.uid.uidByte, mfrc522.uid.size);
}
你也可以訪問這些讀/寫方法:
MFRC522::StatusCode status;
MFRC522::MIFARE_Key key;
byte buffer[18];
byte size = sizeof(buffer);
for (byte i = 0; i < MFRC522::MF_KEY_SIZE; ++i) {
key.keyByte[i] = 0xFF;
}
if (mfrc522.PICC_ReadCardSerial()) {
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 8, &key, &(mfrc522.uid));
if (status == MFRC522::STATUS_OK) {
status = mfrc522.MIFARE_Read(8, buffer, &size);
if (status == MFRC522::STATUS_OK) {
Serial.print(F("Data (block = 8): "));
dump_bytes(buffer, 16);
}
}
}
請注意,我假設使用密鑰A將塊8(=扇區2,塊0)設爲readbale,並且將密鑰A設置爲默認傳輸密鑰FF FF FF FF FF FF
。如果您的其他讀者更改了這些值,則需要相應地調整代碼。此外,我使用僞方法dump_bytes(array, length)
來表示有趣的值是array
的第一個length
字節。實際打印這些值的實現取決於您。
Btw。一個關於如何使用該庫進行讀/寫操作的完整示例實際上與該庫一起出貨!所以你可以看看ReadAndWrite.ino關於如何使用這個庫。
我將使用這個庫:https://github.com/miguelbalboa/rfid我還沒有嘗試過任何東西,因爲我還在收集零件。到目前爲止,我發現的所有內容都指向閱讀UID - 但我只想閱讀特定的部門(Sector2 Block8)。我已經有一位作家(ER301和eReader軟件),可以將我的信息寫入此扇區和區塊,並且已經驗證了這一點。一旦信息被MFRC和NANO讀取,我將使NANO輸出與4個數字I/O上的數字相等的二進制數。 – JMortonSalt
此遊戲將涉及4個相同的Arduino NANO和MFRC522閱讀器。當每人讀取遊戲片時,它將在4個數字I/O上輸出二進制等價物(片段1到8)。這16個總輸出將被輸入到Arduino MEGA的16個數字I/O中,該輸入/輸出將跟蹤哪些棋子位於4個'位置'(4個NANO設置)。 – JMortonSalt