赞
踩
- #include <SPI.h>
- #include <MFRC522.h>
- #define RST_PIN 22 //15 //5 配置针脚
- #define SS_PIN 21 //5 //4
- MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建新的RFID实例
- MFRC522::MIFARE_Key key;
- void setup() {
- Serial.begin(9600); // 设置串口波特率为9600
- SPI.begin(); // SPI开始
- mfrc522.PCD_Init(); // Init MFRC522 card
- Serial.println("test-demo-start");
-
-
- }
-
-
- void loop() {
- // 寻找新卡
- if ( ! mfrc522.PICC_IsNewCardPresent()) {
- //Serial.println("没有找到卡");
- return;
- }
-
- // 选择一张卡
- if ( ! mfrc522.PICC_ReadCardSerial()) {
- Serial.println("没有卡可选");
- return;
- }
-
-
- // 显示卡片的详细信息
- Serial.print(F("卡片 UID:"));
-
-
- dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
- Serial.println();
- Serial.print(F("卡片类型: "));
- MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
- Serial.println(mfrc522.PICC_GetTypeName(piccType));
-
- // 检查兼容性
- if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
- && piccType != MFRC522::PICC_TYPE_MIFARE_1K
- && piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
- Serial.println(F("仅仅适合Mifare Classic卡的读写"));
- return;
- }
-
-
- GetCode(11);
- GetCode(12);
- GetCode(13);
- GetCode(14);
- GetCode(15);
-
-
-
-
- //停止 PICC
- mfrc522.PICC_HaltA();
- //停止加密PCD
- mfrc522.PCD_StopCrypto1();
-
- delay(2000);
- return;
- }
-
- /**
- 将字节数组转储为串行的十六进制值
- */
- void dump_byte_array(byte *buffer, byte bufferSize) {
- for (byte i = 0; i < bufferSize; i++) {
- // Serial.print(buffer[i] < 0x10 ? " 0" : " ");
- // Serial.print(buffer[i], HEX);
-
- Serial.print(buffer[i]);
- }
- }
-
-
- void GetCode(byte blockAddr)
- {
- //byte blockAddr =1;
- MFRC522::StatusCode status;
- byte buffer[18];
- byte size = sizeof(buffer);
- // if (status != MFRC522::STATUS_OK) {
- // Serial.print(F("身份验证失败?或者是卡链接失败"));
- // Serial.println(mfrc522.GetStatusCodeName(status));
- // return;
- // }
-
- // 从块儿读取数据
- Serial.print(F("读取块儿的数据在:")); Serial.print(blockAddr);
- Serial.println(F("块 ..."));
- status = (MFRC522::StatusCode) mfrc522.MIFARE_Read(blockAddr, buffer, &size);//读取size个第blockAddr块的数据到buffer
-
- Serial.print(F("数据内容在第 "));
- Serial.print(blockAddr);
- Serial.println(F(" 块:"));
- dump_byte_array(buffer, 16);
- Serial.println();//输出第4块的数据
- Serial.println();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。