私は Arduino Uno と adaFruit PN532 ボードを使用しています。目標は、現在 NFC シールドの範囲内にある MiFare カードのリストを作成できるようにすることです。
ボードはループごとに 1 つのカードしか検出しないように見えるため、このロジックを記述する最善の方法を見つけるのに苦労しています。
ボードに 2 枚のカードを配置できますが、両方が表示されますが、ループごとに 1 枚しか表示されません。では、現在範囲内にあるものの現在のリストを作成するにはどうすればよいですか
私のループ:
void loop()
{
Serial.println("--------------------Loop begin-------------------");
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
uint8_t index =0;
// Wait for an ISO14443A type cards (Mifare, etc.). When one is found
// 'uid' will be populated with the UID, and uidLength will indicate
// if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (success) {
// Display some basic information about the card
Serial.println("Found an ISO14443A card");
Serial.print(" UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
Serial.print(" UID Value: ");
nfc.PrintHex(uid, uidLength);
Serial.println("");
}
Serial.println("************************Loop END*********************");
}
両方のカードが範囲内にある場合のシリアル モニター出力は次のとおりです。
--------------------ループ開始-------------------
ISO14443A カードが見つかりました
UID 長さ: 4 バイト
UID 値: 0x13 0x99 0x1C 0xD4********************** ループ END********************
--------------------ループ開始----------------------------------
ISO14443A カード
UID が見つかりました 長さ: 4 バイト
UID 値: 0x13 0x34 0x27 0xD4********************** ループ END********************