我仍然在学习绳索,如果答案很明显,请原谅我。我正在使用Arduino Uno和RC522 RFID读卡器。我的目的是在读卡器上扫描卡,并让I2C OLED显示屏向我显示扫描卡的人员的姓名。这是我正在使用的程序的代码-
#include <U8glib.h>
#include <LiquidCrystal.h>
#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
int serNum[5];
String cardno;
int interval = 15000; // millisec
long now = 0;
long lasttime = millis();
// change Reader ID to your name
String readerID = "CCE3050";
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop() {
now = millis();
if (now > lasttime + interval) {
lasttime = now;
Serial.print(readerID);
Serial.print(":");
Serial.println("I am alive");
}
if (rfid.isCard()) {
if (rfid.readCardSerial()) {
lasttime = now;
cardno = String(rfid.serNum[0]) +
String(rfid.serNum[1]) +
String(rfid.serNum[2]) +
String(rfid.serNum[3]) +
String(rfid.serNum[4]);
Serial.print(readerID);
Serial.print(":");
Serial.println(cardno);
}
}
delay(5000);
}
到目前为止,每次标记卡时,卡号都会显示在串行监视器上。但是,我想为卡分配一个名称,并在将卡标记到读取器上时在OLED上显示该名称。有办法吗?
答案 0 :(得分:0)
我建议创建一个struct
来保存一个ID及其相关名称。
typedef struct {
String id;
String name;
} User;
创建一个数组以容纳该结构的多个实例。
User users[MAX_USER_NUM]; // define the size
User user1 = {"123", "A"}; // {"id", "name"}
users[0] = user1;
User user2 = {"234", "B"};
users[1] = user2;
User user3 = {"345", "C"};
users[2] = user3;
然后您可以通过将id传递给这样的函数来检索用户名。
String lookup(String id) {
for (int i = 0; i < MAX_USER_NUM; i++) {
if (users[i].id == id) {
return users[i].name;
}
}
return "";
}