Arduino与RC522连线方法
RC522引脚 | Arduin引脚 |
---|
SDA | 自定义 |
SCK | 13(SCK) |
MOSI | 11(MOSI) |
MISO | 12(MISO) |
GND | GND |
RST | 自定义 |
3.3 | 3.3V |
以下程序在UID读卡程序上改进,添加卡片验证功能,并添加卡片功用。
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
String refid1="";
MFRC522 rfid(SS_PIN, RST_PIN);
byte nuidPICC[4];
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("不支持读取此卡类型");
return;
}
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print("十进制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
if(refid1=="13023719522")
{
Serial.println("已验证");
}
else
{
Serial.println("验证失败");
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
refid1="";
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
refid1+=nuidPICC[i];
}
Serial.print(refid1);
}