#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
PN532_I2C pn532_i2c(Wire);
PN532 nfc(pn532_i2c);
void setup() {
Serial.begin(115200);
Serial.println("เริ่มต้นการทำงาน NFC Reader");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.println("ไม่พบ PN532 บอร์ด");
while (1); // หยุดการทำงานถ้าไม่พบบอร์ด
}
// แสดงข้อมูลของ chip
Serial.print("พบ chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
// ตั้งค่า maximum number of retry attempts
nfc.setPassiveActivationRetries(0xFF);
// ตั้งค่าโหมดการทำงานเป็น reader
nfc.SAMConfig();
Serial.println("รอการ์ด...");
}
void loop() {
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
// รอการ์ด ISO14443A
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (success) {
// แสดง UID ของการ์ด
Serial.println("พบการ์ด!");
Serial.print("UID Length: "); Serial.print(uidLength, DEC); Serial.println(" bytes");
Serial.print("UID Value: ");
for (uint8_t i = 0; i < uidLength; i++) {
Serial.print(" 0x"); Serial.print(uid[i], HEX);
}
Serial.println("");
delay(1000); // หน่วงเวลาก่อนอ่านการ์ดถัดไป
}
}