arduion【RFID-RC522】制作门禁系统问题

�一个人走� 2019-04-04 04:50:51
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

#define SS_PIN 10
#define RST_PIN 9
Servo myservo;
int pos = 0; //舵机

MFRC522 rfid(SS_PIN, RST_PIN); //实例化类

// 初始化数组用于存储读取到的NUID
byte nuidPICC[4];

void setup() {
Serial.begin(9600);
SPI.begin(); // 初始化SPI总线
rfid.PCD_Init(); // 初始化 MFRC522
myservo.attach(9);
pinMode(7, OUTPUT);
}

void loop() {

// 找卡
if ( ! rfid.PICC_IsNewCardPresent())
return;

// 验证NUID是否可读
if ( ! rfid.PICC_ReadCardSerial())
return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

// 检查是否MIFARE卡类型
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("不支持读取此卡类型");
return;
}

// 将NUID保存到nuidPICC数组
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();

Serial.print("十进制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();

// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
rfid.PICC_HaltA();

// 停止读卡模块编码
rfid.PCD_StopCrypto1();
}
{
}
}

void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], HEX);
}
}

void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], DEC);
}
}
怎么设置如果检测我卡的UID是我事先设置的卡,那么控制舵机转动。
...全文
155 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_Will 2019-04-15
  • 打赏
  • 举报
回复
在控制舵机前面加判断,读出来的是否为你设置的卡

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧