基于ESP8266门禁系统显示器读卡部分代码
时间: 2024-03-24 17:40:20 浏览: 65
以下是一个基于ESP8266门禁系统显示器读卡部分的代码示例:
```c++
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <MFRC522.h>
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET); //创建SSD1306 OLED显示器实例
#define SS_PIN 4
#define RST_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN); //创建MFRC522实例
const char* ssid = "WiFi名称";
const char* password = "WiFi密码";
void setup() {
Serial.begin(9600); //初始化串口通信
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //初始化OLED显示器
display.clearDisplay(); //清空显示器
display.setTextSize(2); //设置字体大小
display.setTextColor(WHITE); //设置字体颜色
display.setCursor(0, 0); //设置光标位置
display.println("门禁系统"); //显示开机信息
display.display(); //显示到OLED
WiFi.begin(ssid, password); //连接WiFi
while (WiFi.status() != WL_CONNECTED) { //等待连接成功
delay(1000);
}
Serial.println("WiFi连接成功!");
Serial.println(WiFi.localIP());
display.clearDisplay(); //清空显示器
display.setCursor(0, 0); //设置光标位置
display.println("WiFi连接成功!"); //显示连接成功信息
display.display(); //显示到OLED
SPI.begin(); //初始化SPI总线
mfrc522.PCD_Init(); //初始化MFRC522
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { //检测到新的RFID卡
Serial.print("RFID卡UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++) { //打印UID
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
display.clearDisplay(); //清空显示器
if (mfrc522.uid.uidByte[0] == 0x12 && mfrc522.uid.uidByte[1] == 0x34 && mfrc522.uid.uidByte[2] == 0x56 && mfrc522.uid.uidByte[3] == 0x78) { //示例卡的UID为0x12 0x34 0x56 0x78
display.setCursor(0, 0); //设置光标位置
display.println("欢迎光临!"); //显示欢迎信息
display.display(); //显示到OLED
delay(1000); //延时1秒
} else {
display.setCursor(0, 0); //设置光标位置
display.println("无权限!"); //显示无权限信息
display.display(); //显示到OLED
delay(1000); //延时1秒
}
}
mfrc522.PICC_HaltA(); //停止感应卡
mfrc522.PCD_StopCrypto1(); //关闭加密
}
```
这段代码使用了Adafruit_SSD1306库进行OLED显示器的控制,实现了在检测到RFID卡时在显示器上显示欢迎信息或无权限信息。需要注意的是,示例中使用了一个固定的UID来判断授权,实际应用中需要根据具体需求进行修改。同时,需要根据实际情况修改代码中的WiFi连接信息和引脚定义。
阅读全文