
接线
Arduino Uno <———> RFID-RC522
10 <------> SDA13 <------> SCK11 <------> MOSI12 <------> MISO--null-- <------> IRQGND <------> GND9 <------> RST3.3V <------> 3.3V
#include <SPI.h>//nfc库文件#include <MFRC522.h>//nfc库文件#include "Adafruit_SSD1306.h"//显示屏库文件#include "Adafruit_GFX.h"//显示屏库文件#include <Wire.h>//显示屏库文件#include <Servo.h>//舵机头文件Servo mg90s;//定义舵机Adafruit_SSD1306 display(128,64,&Wire,4);//定义屏幕参数#define blue 6//宏定义MFRC522 rfid(10, 9);//创建一个rc522读卡器对象byte nuidPICC[4];//存储读取到的NUIDvoid Show_Begin(){//OLED屏幕初始化display.begin(SSD1306_SWITCHCAPVCC,0x3C);//设置字体颜色display.setTextColor(WHITE);//清除屏幕数据display.clearDisplay();//显示数据display.display();}void Show_Text(int x,int y,String TEXT){//清除屏幕数据display.clearDisplay();//设置字体大小display.setTextSize(1);//设置光标display.setCursor(x,y);//显示内容设置display.println(TEXT);//显示内容display.display();}void setup(){Show_Begin();SPI.begin(); // 初始化SPI总线rfid.PCD_Init();Serial.begin(9600);mg90s.attach(8);//初始化舵机引脚mg90s.write(0);//舵机转到0度pinMode(6, OUTPUT);定义六号引脚}void loop(){Show_Text(0,0,"lease swipe your card"); //显示器打印 请刷卡if ( ! rfid.PICC_IsNewCardPresent())// 找卡return;if ( ! rfid.PICC_ReadCardSerial()) // 验证NUID是否可读return;MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);// 将NUID保存到nuidPICC数组for (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];//Serial.println(nuidPICC[i]);}if ( (nuidPICC[0]==0xFC&& nuidPICC[1]==0xAB && nuidPICC[2]==0x24 && nuidPICC[3]==0x49)) //改成自己卡的uid{Show_Text(0,0,"Welcome Home");//显示屏打印提示 欢迎回家mg90s.write(90);//舵机旋转90度digitalWrite(blue, HIGH);//灯打开delay(2500);mg90s.write(0);digitalWrite(blue,LOW);//灯灭}}
