#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是我事先設定的卡,那么控制舵機轉動。
uj5u.com熱心網友回復:
在控制舵機前面加判斷,讀出來的是否為你設定的卡轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/137396.html
標籤:單片機/工控
