当前位置:   article > 正文

Arduino与RC522读卡测试代码_rc522判断初始化成功

rc522判断初始化成功

RC522与Arduino读卡代码

做了Arduino作品集4年多了,让我印象比较深刻的是每当有人用RC522的时候都会遇到同样一个问题,就是为什么我的卡读取不了卡号,我明明是用网上的教程啊?在这里我声明一点,网上的教程不一定是正确的,当然大部分都是有参考意义的。并且还会有一个小问题,就是我读到卡号了,但是就是不会用?兄弟们,不要急,接下来三铭学长为你解答。

1.准备材料

材料名称数量
Arduino UNO 1
RC522模块1
IC卡2
LED(大功率,不接电阻)1

2.接线

RC522与Arduino接线
RC522Adruino
DAD10
SCKD13
MOSID11
MISOD12
GNDGND
RST(不要接9)5V
3.3V

LED与Arduino接线

LED正极(长引脚)D6
LED负极(短引脚)D7

3.示例成功代码

  1. /*TB店铺:DC创客科技*/
  2. /*博主WX:16620156636*/
  3. #include <SPI.h>
  4. #include <MFRC522.h>
  5. #define SS_PIN 10
  6. #define RST_PIN 9//重置
  7. MFRC522 rfid(SS_PIN, RST_PIN); //实例化类
  8. // 初始化数组用于存储读取到的NUID
  9. byte nuidPICC[4];
  10. void setup()
  11. {
  12. Serial.begin(9600);
  13. SPI.begin(); // 初始化SPI总线
  14. rfid.PCD_Init(); // 初始化 MFRC522
  15. pinMode(6,OUTPUT);
  16. pinMode(7,OUTPUT);
  17. }
  18. void loop()
  19. {
  20. Read();
  21. if(nuidPICC[0]==0x22 &&nuidPICC[1]==0xB9 &&nuidPICC[2]==0x7A &&nuidPICC[3]==0x34 )
  22. {
  23. digitalWrite(6,HIGH);
  24. digitalWrite(7,LOW);
  25. }
  26. else
  27. {
  28. digitalWrite(6,LOW);
  29. digitalWrite(7,LOW);
  30. }
  31. }
  32. void printHex(byte *buffer, byte bufferSize)
  33. {
  34. for (byte i = 0; i < bufferSize; i++)
  35. {
  36. Serial.print(buffer[i] < 0x10 ? " 0" : " ");
  37. Serial.print(buffer[i], HEX);
  38. }
  39. }
  40. void Read()
  41. {
  42. if ( ! rfid.PICC_IsNewCardPresent())
  43. return;
  44. // 验证NUID是否可读
  45. if ( ! rfid.PICC_ReadCardSerial())
  46. return;
  47. MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  48. // 检查是否MIFARE卡类型
  49. if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
  50. piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
  51. piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
  52. Serial.println("不支持读取此卡类型");
  53. return;
  54. }
  55. // 将NUID保存到nuidPICC数组
  56. for (byte i = 0; i < 4; i++)
  57. {
  58. nuidPICC[i] = rfid.uid.uidByte[i];
  59. }
  60. Serial.print("UID:");
  61. printHex(rfid.uid.uidByte, rfid.uid.size);
  62. Serial.println();
  63. // 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
  64. //rfid.PICC_HaltA();
  65. // 停止读卡模块编码
  66. //rfid.PCD_StopCrypto1();
  67. }

4.效果

刷正确的卡LED亮,刷其他卡LED 灭。

串口监视器可以读出卡号。

如果有用,请关注或者打赏博主,您的认可是我最大的动力!

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

闽ICP备14008679号