RFID - 图1
    接线
    Arduino Uno <———> RFID-RC522

    1. 10 <------> SDA
    2. 13 <------> SCK
    3. 11 <------> MOSI
    4. 12 <------> MISO
    5. --null-- <------> IRQ
    6. GND <------> GND
    7. 9 <------> RST
    8. 3.3V <------> 3.3V
    1. #include <SPI.h>//nfc库文件
    2. #include <MFRC522.h>//nfc库文件
    3. #include "Adafruit_SSD1306.h"//显示屏库文件
    4. #include "Adafruit_GFX.h"//显示屏库文件
    5. #include <Wire.h>//显示屏库文件
    6. #include <Servo.h>//舵机头文件
    7. Servo mg90s;//定义舵机
    8. Adafruit_SSD1306 display(128,64,&Wire,4);//定义屏幕参数
    9. #define blue 6//宏定义
    10. MFRC522 rfid(10, 9);//创建一个rc522读卡器对象
    11. byte nuidPICC[4];//存储读取到的NUID
    12. void Show_Begin()
    13. {
    14. //OLED屏幕初始化
    15. display.begin(SSD1306_SWITCHCAPVCC,0x3C);
    16. //设置字体颜色
    17. display.setTextColor(WHITE);
    18. //清除屏幕数据
    19. display.clearDisplay();
    20. //显示数据
    21. display.display();
    22. }
    23. void Show_Text(int x,int y,String TEXT)
    24. {
    25. //清除屏幕数据
    26. display.clearDisplay();
    27. //设置字体大小
    28. display.setTextSize(1);
    29. //设置光标
    30. display.setCursor(x,y);
    31. //显示内容设置
    32. display.println(TEXT);
    33. //显示内容
    34. display.display();
    35. }
    36. void setup()
    37. {
    38. Show_Begin();
    39. SPI.begin(); // 初始化SPI总线
    40. rfid.PCD_Init();
    41. Serial.begin(9600);
    42. mg90s.attach(8);//初始化舵机引脚
    43. mg90s.write(0);//舵机转到0度
    44. pinMode(6, OUTPUT);定义六号引脚
    45. }
    46. void loop()
    47. {
    48. Show_Text(0,0,"lease swipe your card"); //显示器打印 请刷卡
    49. if ( ! rfid.PICC_IsNewCardPresent())// 找卡
    50. return;
    51. if ( ! rfid.PICC_ReadCardSerial()) // 验证NUID是否可读
    52. return;
    53. MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
    54. // 将NUID保存到nuidPICC数组
    55. for (byte i = 0; i < 4; i++) {
    56. nuidPICC[i] = rfid.uid.uidByte[i];
    57. //Serial.println(nuidPICC[i]);
    58. }
    59. if ( (nuidPICC[0]==0xFC&& nuidPICC[1]==0xAB && nuidPICC[2]==0x24 && nuidPICC[3]==0x49)) //改成自己卡的uid
    60. {
    61. Show_Text(0,0,"Welcome Home");//显示屏打印提示 欢迎回家
    62. mg90s.write(90);//舵机旋转90度
    63. digitalWrite(blue, HIGH);//灯打开
    64. delay(2500);
    65. mg90s.write(0);
    66. digitalWrite(blue,LOW);//灯灭
    67. }
    68. }