Şimdi Ara

Arduino NFC ile bina kapısı açma Kodlama Sıkıntısı Yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
2
Cevap
0
Favori
1.256
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba , arduino ile nfc'li kapı sistemi yaptım.Bir sorunum var, 1 kere nfc ile kapı açıldıktan sonra tekrar aynı nfc ile kapıyı açamıyorum.İlla ki farklı bir nfc gösterip tekrar ilk nfc yi göstermem gerekiyor . Kodlama Şu şekilde ;
     
    #include <SPI.h>
    #include <MFRC522.h>
    #include <EEPROM.h>

    #define RST_PIN 9
    #define SS_PIN 10
    #define RelayPin 8

    MFRC522 mfrc522(SS_PIN, RST_PIN);

    String lastRfid = "";
    String kart1 = "";
    String kart2 = "";
    String kart3 = "";
    String kart4 = "";

    MFRC522::MIFARE_Key key;


    void setup()
    {
    Serial.begin(9600);
    SPI.begin();
    mfrc522.PCD_Init();
    pinMode(RelayPin, OUTPUT);
    digitalWrite(RelayPin, LOW);
    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[i] < 0x10 ? " 0" : " ";
    rfid += String(mfrc522.uid.uidByte[i], 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("Kart 3: ");
    Serial.println(kart3);
    Serial.print("Kart 4: ");
    Serial.println(kart4);
    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)
    {
    digitalWrite(RelayPin, HIGH);
    Serial.println("LED yandi.");
    delay(1000);
    digitalWrite(RelayPin, LOW);
    }
    if (rfid == kart2)
    {
    digitalWrite(RelayPin, HIGH);
    Serial.println("LED yandi.");
    delay(1000);
    digitalWrite(RelayPin, LOW);
    }
    if (rfid == kart3)
    {
    digitalWrite(RelayPin, HIGH);
    Serial.println("LED yandi.");
    delay(1000);
    digitalWrite(RelayPin, LOW);
    }
    if (rfid == kart4)
    {
    digitalWrite(RelayPin, HIGH);
    Serial.println("LED yandi.");
    delay(1000);
    digitalWrite(RelayPin, LOW);
    }

    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);
    }
    //EEPROM'dan 3 kartın UID'sini oku
    for (int i = 8 ; i < 12 ; i++)
    {
    kart3 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart3 += String(EEPROM.read(i), HEX);
    }
    //EEPROM'dan 4 kartın UID'sini oku
    for (int i = 12 ; i < 16 ; i++)
    {
    kart4 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart4 += String(EEPROM.read(i), HEX);
    }
    //Okunan stringleri düzenle
    kart1.trim();
    kart1.toUpperCase();
    kart2.trim();
    kart2.toUpperCase();
    kart3.trim();
    kart3.toUpperCase();
    kart4.trim();
    kart4.toUpperCase();
    }

    Sistem şu şekil işliyor ;
    EEPROM a kayıtlı herhangi bir nfc kart okutunca , arduino delay pininden sinyal gönderiyor.
    Delay pini role devresine bağlı.Sinyal alan role otomatın elektriğinin geçişine izin veriyor.
    Sıkıntı aynı kartla üst üste 2 kere kapıyı açamamam.







  • Dostum kodlamayı tekrar gözden geçir istersen(loop kısmından sonraki bölüm de ilk if kodun da zaten kendin oluşturmuşssun koşulu)

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.