当前位置:   article > 正文

nodemcu-32s对接RC522读取卡信息_picc_isnewcardpresent 找不到卡

picc_isnewcardpresent 找不到卡

 

 

 

 

  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #define RST_PIN 22 //15 //5 配置针脚
  4. #define SS_PIN 21 //5 //4
  5. MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建新的RFID实例
  6. MFRC522::MIFARE_Key key;
  7. void setup() {
  8. Serial.begin(9600); // 设置串口波特率为9600
  9. SPI.begin(); // SPI开始
  10. mfrc522.PCD_Init(); // Init MFRC522 card
  11. Serial.println("test-demo-start");
  12. }
  13. void loop() {
  14. // 寻找新卡
  15. if ( ! mfrc522.PICC_IsNewCardPresent()) {
  16. //Serial.println("没有找到卡");
  17. return;
  18. }
  19. // 选择一张卡
  20. if ( ! mfrc522.PICC_ReadCardSerial()) {
  21. Serial.println("没有卡可选");
  22. return;
  23. }
  24. // 显示卡片的详细信息
  25. Serial.print(F("卡片 UID:"));
  26. dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  27. Serial.println();
  28. Serial.print(F("卡片类型: "));
  29. MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  30. Serial.println(mfrc522.PICC_GetTypeName(piccType));
  31. // 检查兼容性
  32. if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
  33. && piccType != MFRC522::PICC_TYPE_MIFARE_1K
  34. && piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
  35. Serial.println(F("仅仅适合Mifare Classic卡的读写"));
  36. return;
  37. }
  38. GetCode(11);
  39. GetCode(12);
  40. GetCode(13);
  41. GetCode(14);
  42. GetCode(15);
  43. //停止 PICC
  44. mfrc522.PICC_HaltA();
  45. //停止加密PCD
  46. mfrc522.PCD_StopCrypto1();
  47. delay(2000);
  48. return;
  49. }
  50. /**
  51. 将字节数组转储为串行的十六进制值
  52. */
  53. void dump_byte_array(byte *buffer, byte bufferSize) {
  54. for (byte i = 0; i < bufferSize; i++) {
  55. // Serial.print(buffer[i] < 0x10 ? " 0" : " ");
  56. // Serial.print(buffer[i], HEX);
  57. Serial.print(buffer[i]);
  58. }
  59. }
  60. void GetCode(byte blockAddr)
  61. {
  62. //byte blockAddr =1;
  63. MFRC522::StatusCode status;
  64. byte buffer[18];
  65. byte size = sizeof(buffer);
  66. // if (status != MFRC522::STATUS_OK) {
  67. // Serial.print(F("身份验证失败?或者是卡链接失败"));
  68. // Serial.println(mfrc522.GetStatusCodeName(status));
  69. // return;
  70. // }
  71. // 从块儿读取数据
  72. Serial.print(F("读取块儿的数据在:")); Serial.print(blockAddr);
  73. Serial.println(F("块 ..."));
  74. status = (MFRC522::StatusCode) mfrc522.MIFARE_Read(blockAddr, buffer, &size);//读取size个第blockAddr块的数据到buffer
  75. Serial.print(F("数据内容在第 "));
  76. Serial.print(blockAddr);
  77. Serial.println(F(" 块:"));
  78. dump_byte_array(buffer, 16);
  79. Serial.println();//输出第4块的数据
  80. Serial.println();
  81. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/67750
推荐阅读
相关标签
  

闽ICP备14008679号