Şimdi Ara

arduino rfid hakkında yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
409
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar ben manyetik kartla devamli şekilde okuma işlemi yapamiyorum .manyetik kartı okuyuca göstericem led yanacak bir daha aynı kartı göstereceğim led sönecek. Internette bulduğum kod üzerinde çalışma yapıyorum. Herhalde aşağıda verdiğim koddan geçemiyorum . Ne önerirsiniz yardımcı olursanız sevinirim . kodu da ekledim bakarsanız sevinirim. iyi çalışmalar

    void loop()
    {
    //yeni kart okununmadıkça devam etme
    if ( ! mfrc522.PICC_IsNewCardPresent())
    {
    return;
    }



  • Kütüphaneyi aldığın linki ve varsa kendi eklediğin kodu da paylas.mevcut verdiğin kod parçası için söylenebilecek tek şey, bu kısım koddan çıkınca kod doğru çalışmıyorsa kütüphaneden bu fonksiyonun tam olarak ne yaptığına bakmak lazım . Ayrıca senin yazdığın kısımda da bi hata olabilir. Sadece bu kod parçası ile sağlıklı bir çözüm bulunamaz. Bulunsa da sans eseri gibi birşey olur.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • hazır bulduğum kod. ben sadece if ( rfid==kart1)|| kısmından sonra değişiklik yaptım. bakarsanız sevinirim. iyi günler.


    Programımız için Gerekli Kodlar
    #include <SPI.h>
    #include <MFRC522.h>
    #include <EEPROM.h>

    #define RST_PIN 9
    #define SS_PIN 10

    byte readCard[4];
    int successRead;

    MFRC522 mfrc522(SS_PIN, RST_PIN);

    MFRC522::MIFARE_Key key;

    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    mfrc522.PCD_Init();
    Serial.println("RFID KART KAYIT UYGULAMASI");
    Serial.println("--------------------------");
    Serial.println("Lutfen 1 numarali karti okutun");
    Serial.println();
    do {
    //okuma başarılı olana kadar getID fonksiyonunu çağır
    successRead = getID();
    }
    while (!successRead);
    for ( int i = 0; i < mfrc522.uid.size; i++ )
    {
    //kartın UID'sini EEPROM'a kaydet
    EEPROM.write(i, readCard );
    }
    Serial.println("Kart EEPROM'a kaydedildi.");
    Serial.println();
    Serial.println("Lutfen 2 numarali karti okutun.");
    Serial.println();
    do {
    successRead = getID();
    }
    while (!successRead);
    for ( int i = 0; i < mfrc522.uid.size; i++ )
    {
    EEPROM.write(i + 4, readCard );
    }
    Serial.println("Kart EEPROM'a kaydedildi.");
    Serial.println();
    Serial.println("Kart kayit islemi basarili!");
    }

    void loop()
    {
    }

    int getID() {
    //yeni bir kart okunmadıysa 0 döndür
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return 0;
    }
    if ( ! mfrc522.PICC_ReadCardSerial()) {
    return 0;
    }
    Serial.print("Kart UID'si: ");
    //kartın UID'sini byte byte oku ve seri monitöre yaz
    for (int i = 0; i < mfrc522.uid.size; i++) { //
    readCard = mfrc522.uid.uidByte;
    Serial.print(readCard, HEX);
    }
    Serial.println("");
    //kart okumayı durdur ve 1 döndür (okuma başarılı)
    mfrc522.PICC_HaltA();
    return 1;
    }
    İlk Kartımızı Rfid Modülüne Yaklaştırıp Hızlıca Çekiyoruz.

    Eğer Ekranda “Kart Eeprom’a Kaydedildi” Yazarsa İşlem Başarılıdır.

    2.Kartı Rfid Modülüne Yaklaştırıp Çekiyoruz.
    Eğer Ekranda “Kart Eeprom’a Kaydedildi” Yazarsa İşlem Başarılıdır.

    Daha Sonra Arduinoya Bu Kodu Yüklüyoruz:
    Programımız için Gerekli Kodlar

    #include <SPI.h>
    #include <MFRC522.h>
    #include <EEPROM.h>

    #define RST_PIN 9
    #define SS_PIN 10
    #define ledPin 7

    MFRC522 mfrc522(SS_PIN, RST_PIN);

    String lastRfid = "";
    String kart1 = "";
    String kart2 = "";
    Int control = 0;
    MFRC522::MIFARE_Key key;

    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    mfrc522.PCD_Init();
    pinMode(ledPin, OUTPUT);
    Serial.println("RFID KART OKUMA UYGULAMASI");
    Serial.println("--------------------------");
    Serial.println();
    //EEPROM'dan kart bilgisini oku
    readEEPROM();
    }

    void loop()
    {
    //yeni kart okununmadıkça devam etme
    if ( ! mfrc522.PICC_IsNewCardPresent())
    {
    return;
    }
    if ( ! mfrc522.PICC_ReadCardSerial())
    {
    return;
    }
    //kartın UID'sini oku, rfid isimli string'e kaydet
    String rfid = "";
    for (byte i = 0; i < mfrc522.uid.size; i++)
    {
    rfid += mfrc522.uid.uidByte < 0x10 ? " 0" : " ";
    rfid += String(mfrc522.uid.uidByte, HEX);
    }
    //string'in boyutunu ayarla ve tamamını büyük harfe çevir
    rfid.trim();
    rfid.toUpperCase();

    if (rfid == lastRfid)
    return;
    lastRfid = rfid;

    Serial.print("Kart 1: ");
    Serial.println(kart1);
    Serial.print("Kart 2: ");
    Serial.println(kart2);
    Serial.print("Okunan: ");
    Serial.println(rfid);
    Serial.println();

    //1 nolu kart okunduysa LED'i yak, 2 nolu kart okunduysa LED'i söndür
    if (((rfid == kart1) || (rfid == kart2))&&(control==0))
    {
    digitalWrite(ledPin, HIGH);
    control=1;
    Serial.println("LED yandi.");
    Serial.println(control);
    }
    else if (((rfid == kart1) || (rfid == kart2))&&(control==1))
    {
    digitalWrite(ledPin, LOW);
    control=0;
    Serial.println("LED sondu.");
    Serial.println(control);
    }

    Serial.println();
    delay(200);

    }

    void readEEPROM()
    {
    //EEPROM'dan ilk kartın UID'sini oku (ilk 4 byte)
    for (int i = 0 ; i < 4 ; i++)
    {
    kart1 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart1 += String(EEPROM.read(i), HEX);
    }
    //EEPROM'dan ikinci kartın UID'sini oku
    for (int i = 4 ; i < 8 ; i++)
    {
    kart2 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart2 += String(EEPROM.read(i), HEX);
    }
    //Okunan stringleri düzenle
    kart1.trim();
    kart1.toUpperCase();
    kart2.trim();
    kart2.toUpperCase();
    }




  • Burdaki iki kod kart tanımlaması ve sonrasında hafizadakileri okuyup herhangi bir işlem yaptırmak için gerekenler. Kütüphane dosyası bu = MFRC522.h .

    Ona bakmak gerek ama mevcut durumda



    "if ( ! mfrc522.PICC_IsNewCardPresent())

    {

    return;

    }

    if ( ! mfrc522.PICC_ReadCardSerial())

    {

    return;

    } "



    kodlarindaki ünlem işaretlerini kaldırırsan koşulun sıfır dönmesini önlersin. Eğer kütüphane içinde sıkıntı yaratacak bir durum yoksa bu durum tekrar okumaya izin verecektir.



    Aynı kartı okutup sıralı olarak farklı işlem yaptırmak için kullandığın control değişkeni kısmı doğru hani. Onda bir sıkıntı göremedim

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ünlemi kaldırınca bi değişiklik olmadı . yine aynı kartı ikinci kez okutamıyorum . kütüphanenin içindeki şu kod izin vermiyor büyük ihtimalle.


    +Check if a card is present
    bool MFRC522::PICC_IsNewCardPresent()
    Returns true if a PICC responds to PICC_CMD_REQA.
    Only "new" cards in state IDLE are invited. Sleeping cards in state HALT are ignored.
    Example:
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) return;
  • Yapay Zeka’dan İlgili Konular
    Arduino projesi hk. birkaç soru
    9 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.