Arduino RFID modülüne nasıl birden fazla kart eklenir?

yardimcioyuncu1

Hectopat
Katılım
19 Eylül 2020
Mesajlar
137
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Merhaba, ben Arduino ile RFID kart modülünü alıp Robotistan kanalının videosunu izledim sistem sıkıntısız çalışıyor. Fakat bu sistemde tek kart kullanılıyor ben birden fazla kart eklemek istiyorum. Nasıl ekleyebilirim?

Kod aşağıdadır.

Kod:
#include <SPI.h>                          //SPI kütüphanemizi tanımlıyoruz.
#include <MFRC522.h>                      //MFRC522 kütüphanemizi tanımlıyoruz.
#include <Servo.h>                        //Servo kütüphanemizi tanımlıyoruz.

int RST_PIN = 9;                          //RC522 modülü reset pinini tanımlıyoruz.
int SS_PIN = 10;                          //RC522 modülü chip select pinini tanımlıyoruz.
int servoPin = 8;                         //Servo motor pinini tanımlıyoruz.

Servo motor;                              //Servo motor için değişken oluşturuyoruz.
MFRC522 rfid(SS_PIN, RST_PIN);            //RC522 modülü ayarlarını yapıyoruz.
byte ID[4] = {62, 97, 170, 89};            //Yetkili kart ID'sini tanımlıyoruz.

void setup() {
  motor.attach(servoPin);                 //Servo motor pinini motor değişkeni ile ilişkilendiriyoruz.
  Serial.begin(9600);                     //Seri haberleşmeyi başlatıyoruz.
  SPI.begin();                            //SPI iletişimini başlatıyoruz.
  rfid.PCD_Init();                        //RC522 modülünü başlatıyoruz.
}
 
void loop() {

  if ( ! rfid.PICC_IsNewCardPresent())    //Yeni kartın okunmasını bekliyoruz.
    return;

  if ( ! rfid.PICC_ReadCardSerial())      //Kart okunmadığı zaman bekliyoruz.
    return;

  if (rfid.uid.uidByte[0] == ID[0] &&     //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.
    rfid.uid.uidByte[1] == ID[1] &&
    rfid.uid.uidByte[2] == ID[2] &&
    rfid.uid.uidByte[3] == ID[3] ) {
        Serial.println("HOŞ GELDİNİZ ÜYE:UMUT SAYLAĞ YETKİSİ:KÜTÜPHANE ÜYESİ");
        ekranaYazdir();
        motor.write(180);                 //Servo motoru 180 dereceye getiriyoruz.
        delay(3000);
        motor.write(0);                   //Servo motoru 0 dereceye getiriyoruz.
        delay(1000);
    }
    else{                                 //Yetkisiz girişte içerideki komutlar çalıştırılır.
      Serial.println("BU KARTTA KULLANICI KAYDI BULUNAMADI  KARTA SİSTEME KULLANICI TANIMLAYIN");
      ekranaYazdir();
    }
  rfid.PICC_HaltA();
}
void ekranaYazdir(){
  Serial.print("ID Numarasi: ");
  for(int sayac = 0; sayac < 4; sayac++){
    Serial.print(rfid.uid.uidByte[sayac]);
    Serial.print(" ");
  }
  Serial.println("");
}
 
Son düzenleyen: Moderatör:
byte ID[4] = {62, 97, 170, 89}; //Yetkili kart ID'sini tanımlıyoruz.
Her kartın farklı ID bilgisi bulunuyor. Buradaki gibi her kart için yeni ID bilgisi ekleyeceksiniz.

C++:
void ekranaYazdir(){
 Serial.print("ID Numarasi: ");
 for(int sayac = 0; sayac < 4; sayac++){
 Serial.print(rfid.uid.uidByte[sayac]);
 Serial.print(" ");
 }

Eğer okutulan kart eşleşmezse ID bilgisini buradaki fonksiyon ekrana yazdırıyor.
 
byte ID[4] = {62, 97, 170, 89}; //Yetkili kart ID'sini tanımlıyoruz.
Her kartın farklı ID bilgisi bulunuyor. Buradaki gibi her kart için yeni ID bilgisi ekleyeceksiniz.

C++:
void ekranaYazdir(){
 Serial.print("ID Numarasi: ");
 for(int sayac = 0; sayac < 4; sayac++){
 Serial.print(rfid.uid.uidByte[sayac]);
 Serial.print(" ");
 }

Eğer okutulan kart eşleşmezse ID bilgisini buradaki fonksiyon ekrana yazdırıyor.

Pardon geç sürede cevap veriyorum da byte ID[4] = {62, 97, 170, 89}; fakat bu kodu kopyala yapıştır yaptığımda hata veriyor.
 
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

int RST_PIN = 9;
int SS_PIN = 10;
int servoPin = 8;

Servo motor;
MFRC522 rfid(SS_PIN, RST_PIN);

byte authorizedIDs[][4] = {
{62, 97, 170, 89}, // Yetkili kart ID'si 1
{12, 34, 56, 78} // Yetkili kart ID'si 2 (Örnek olarak ekledim)
};

int authorizedIDCount = sizeof(authorizedIDs) / sizeof(authorizedIDs[0]);

void setup() {
motor.attach(servoPin);
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}

void loop() {
if (!rfid.PICC_IsNewCardPresent())
return;

if (!rfid.PICC_ReadCardSerial())
return;

bool isAuthorized = false;

for (int i = 0; i < authorizedIDCount; i++) {
if (compareIDs(rfid.uid.uidByte, authorizedIDs)) {
isAuthorized = true;
break;
}
}

if (isAuthorized) {
Serial.println("HOŞ GELDİNİZ ÜYE:UMUT SAYLAĞ YETKİSİ:KÜTÜPHANE ÜYESİ");
ekranaYazdir();
motor.write(180);
delay(3000);
motor.write(0);
delay(1000);
} else {
Serial.println("BU KARTTA KULLANICI KAYDI BULUNAMADI KARTA SİSTEME KULLANICI TANIMLAYIN");
ekranaYazdir();
}

rfid.PICC_HaltA();
}

void ekranaYazdir() {
Serial.print("ID Numarasi: ");
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
Serial.println("");
}

bool compareIDs(byte* id1, byte* id2) {
for (int i = 0; i < 4; i++) {
if (id1 != id2) {
return false;
}
}
return true;
}
 

Yeni konular

Geri
Yukarı