如何在Arduino中获取RFID的UID?

如何在Arduino中获取RFID的UID?,arduino,uniqueidentifier,rfid,serial-number,Arduino,Uniqueidentifier,Rfid,Serial Number,我有一个RFID-RC522(MF-RC522)模块,我正在使用Arduino草图程序。 为了使用这个RFID,我下载了Arduino MFRC522库 我运行了库的示例代码 这是代码 /* * MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT. * The library file MFRC522.h has a wealth of useful inf

我有一个RFID-RC522(MF-RC522)模块,我正在使用Arduino草图程序。 为了使用这个RFID,我下载了Arduino MFRC522库

我运行了库的示例代码

这是代码

/*
 * MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT.
 * The library file MFRC522.h has a wealth of useful info. Please read it.
 * The functions are documented in MFRC522.cpp.
 *
 * Based on code Dr.Leong   ( WWW.B2CQSHOP.COM )
 * Created by Miguel Balboa (circuitito.com), Jan, 2012.
 * Rewritten by Søren Thing Andersen (access.thing.dk), fall of 2013 (Translation to English, refactored, comments, anti collision, cascade levels.)
 * Released into the public domain.
 *
 * Sample program showing how to read data from a PICC using a MFRC522 reader on the Arduino SPI interface.
 *----------------------------------------------------------------------------- empty_skull 
 * Aggiunti pin per arduino Mega
 * add pin configuration for arduino mega
 * http://mac86project.altervista.org/
 ----------------------------------------------------------------------------- Nicola Coppola
 * Pin layout should be as follows:
 * Signal     Pin              Pin               Pin
 *            Arduino Uno      Arduino Mega      MFRC522 board
 * ------------------------------------------------------------
 * Reset      9                5                 RST
 * SPI SS     10               53                SDA
 * SPI MOSI   11               51                MOSI
 * SPI MISO   12               50                MISO
 * SPI SCK    13               52                SCK
 *
 * The reader can be found on eBay for around 5 dollars. Search for "mf-rc522" on ebay.com. 
 */

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup() {
    Serial.begin(9600); // Initialize serial communications with the PC
    SPI.begin();            // Init SPI bus
    mfrc522.PCD_Init(); // Init MFRC522 card
    Serial.println("Scan PICC to see UID and type...");
}

void loop() {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
        return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
        return;
    }

    // Dump debug info about the card. PICC_HaltA() is automatically called.
    mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
但我需要的只是卡。这个箱子是84 90 6C A7

事实上,我有一个项目。如果我放了一张RFID卡,我想打开LED。为此,我需要读取卡UID并将其分配给Arduino草图程序上的某个变量

但是我不知道在这种情况下如何获取RFID标签的UID(这个库和函数对我来说很复杂)


如果有人知道怎么做,请帮助我。

这是未经测试的代码,因为我现在没有可用的Arduino。我希望它能起作用

用如下内容替换示例中的DumpToSerial代码

if(mfrc522.uid.uidByte[0]==0x84&&
mfrc522.uid.uidByte[1]==0x90&&
mfrc522.uid.uidByte[2]==0x6c&&
mfrc522.uid.uidByte[3]==0xa7){
//打开你的LED灯

}

这是一个返回UID的函数

/**
*mfrc522.PICC_IsNewCardPresent()应在
*@返回卡UID
*/
无符号长getID(){
如果(!mfrc522.PICC_ReadCardSerial()){//自PICC放置后获取序列并继续
返回-1;
}
无符号长十六进制数;

hex_num=mfrc522.uid.uidByte[0]您可以通过以下操作获得它:

mfrc522.uid.uidByte
这是一个字节[10]

我找到了另一种方法

在库中,第1391行的MFRC522.cpp

你可以把它放在任何你需要的地方,我只是把它放在大函数附近,以知道它在哪里

添加该函数后,需要进入第409行的MFRC522.h库并添加

在该库中进行这两次编辑之后,您可以在需要的地方调用该函数

在Arduino中使用:
mfrc522.PICC_DumpDetailsToSerialUid(&(mfrc522.uid));
调用它,您就有一个只针对uid的函数


如果需要其他功能,可以使用其他函数执行此操作。…祝您好运:)

我在编译时遇到此错误:
警告:左移位计数>=类型hex的宽度\u num=mfrc522.uid.uidByte[0]
mfrc522.uid.uidByte
Serial.print(F("Card UID:"));

for (byte i = 0; i < uid->size; i++)
 //This is just for read UID!
 void MFRC522::PICC_DumpDetailsToSerialUid(Uid *uid){
    Serial.print(F("Card JUST UID :"));
    for (byte i = 0; i < uid->size; i++) {
        if(uid->uidByte[i] < 0x10)
            Serial.print(F(" 0"));
        else
            Serial.print(F(" "));
        Serial.print(uid->uidByte[i], HEX);
    } 
    Serial.println();
 }
void PICC_DumpDetailsToSerialUid(Uid *uid);