3.3v--------------3.3v
RST---------------9
GND-------------GND
MISO----------12
MOSI--------------11
SCX------------13
SDA--------------10
//RFID
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10 //定義SDA位置
#define RST_PIN 9 //定義SDA位置
#define ACCESS_DELAY 2000 //自定義時間變數
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立MFRC522物件 Create MFRC522 instance.
void setup()
{
Serial.begin(9600);
SPI.begin(); // Initiate(啟動) SPI bus
mfrc522.PCD_Init(); // Initiate(啟動) MFRC522 上面步驟可歸類為MFRC522的初始化
Serial.println("Put your card to the reader THX*");
Serial.println();
}
void loop()
{
//mfrc522.PICC_IsNewCardPresent() = new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
//(mfrc522.PICC_ReadCardSerial = 卡片的資料)
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//建立了一個string來儲存UID 但不知道byte是幹嘛的??
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++) //for(起始位置,限制條件;i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); //(mfrc522.uid.uidByte=UID陣列)我們似乎無法讀取 #mfrc522.uid.uidByte[i]=UID十進位制
Serial.print(mfrc522.uid.uidByte[i], HEX); //(mfrc522.uid.uidByte=UID陣列)轉成可是別的16進位制(HEX=16進位置)
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); //塞到定義的content中
content.concat(String(mfrc522.uid.uidByte[i], HEX)); //轉換成16進位置 塞到content中
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
/* if (content.substring(1) == "29 90 28 B5") //找到設定的卡片(設定UID)
{ //在下面放入動作
Serial.println("Authorized access AC");
}
else if (content.substring(1) == "7A 30 6E 7F") //找到設定的卡片(設定UID)
{ //在下面放入動作
Serial.println("Authorized access 7A ");
}
else {
Serial.println(" Access denied");//如果找不到設定的卡片
Serial.print("NEW CARD");
delay(DENIED_DELAY);
}
*/
}