我有一个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));
}
当我运行此代码并将其中一张卡放入RFID阅读器时,很多信息显示在Arduino IDE的串行监视器上 . 像这样......(我无法发布图片)
//
Scan PICC to see UID and type...
Card UID : 84 90 6C A7
PICC type : MIFARE 1KB
Sector Block 0 1 2 3 4 5 6 7 ...
15 63 00 00 00 00 ...
//
但我需要的只是卡片UID . 这个案子是84 90 6C A7 .
实际上,我有项目 . 如果我放一张RFID卡,我想打开LED . 为此,我需要读取Card UID并将其分配给Arduino sketch程序中的某个变量 .
但我不知道在这种情况下如何获得RFID标签的UID(这个库和功能对我来说很复杂) .
如果有人知道如何做到这一点,请帮助我 .
4 回答
这是未经测试的代码,因为我现在没有Arduino . 我希望它有效 .
用这样的方法替换示例中的DumpToSerial代码
if (mfrc522.uid.uidByte[0] == 0x84 && mfrc522.uid.uidByte[1] == 0x90 && mfrc522.uid.uidByte[2] == 0x6c && mfrc522.uid.uidByte[3] == 0xa7) { // turn your LED on }
这是一个返回UID的函数 .
像这样使用它:
基于Thomas Matthews在_1666391中的回答 .
你可以通过这样做得到它:
它是一个字节[10]
我发现了另一种方式 .
在图书馆 MFRC522.cpp 第1391行
我在这个函数调用中创建了另一个函数:
PICC_DumpDetailsToSerialUid(Uid *uid)
看起来像:
你可以把它放在你需要的任何地方,我只是把它放在大功能附近,知道它在哪里 .
添加该功能后,您需要进入第409行的 MFRC522.h 库并添加
在该库中进行了这两次编辑后,您可以在任意位置调用该函数 .
用Arduino调用它:
mfrc522.PICC_DumpDetailsToSerialUid(&(mfrc522.uid));
你只有一个函数用于uid .如果你需要别的东西,你可以用其他功能做到这一点....祝你好运:)