Сведения о карте на OLED-дисплее с использованием RFID - Arduino Uno - PullRequest
0 голосов
/ 21 апреля 2019

Я все еще изучаю веревки, так что прости меня, если ответ на этот вопрос очевиден. Я использую Arduino Uno и считыватель карт RFID RC522. Моя цель состоит в том, чтобы отсканировать карточку на считывателе, и чтобы на 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 всякий раз, когда карта помечена на ридере. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 21 апреля 2019

Я предлагаю создать struct для хранения идентификатора и связанного с ним имени.

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;

Затем вы можете получить имя пользователя, передав идентификатор функции, подобной этой.

String lookup(String id) {
  for (int i = 0; i < MAX_USER_NUM; i++) {
    if (users[i].id == id) {
      return users[i].name;
    }
  }
  return "";
}
...