我还在学习诀窍,所以如果答案是显而易见的,请原谅我。我用的是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上。有没有办法做到这一点?
发布于 2019-04-21 20:45:39
我建议创建一个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 "";
}https://stackoverflow.com/questions/55782064
复制相似问题