Tür­öff­ner RFID

// eingebaute Bibliothek einbinden
# include "Servo.h"

// RFID-Bibiothek hinzufügen
# include "MFRC522.h"

// Anschlüsse definieren
# define SDA 10
# define RST 9

// Schranke nach Betreten wieder schließen
bool Status = false;

// RFID-Empfänger benennen
MFRC522 mfrc522(SDA, RST);

// Bezeichnung des Motors
Servo Motor;

void setup()
{
  // Pin des Motors zuordnen
  Motor.attach(7);
  Serial.begin(9600);

  SPI.begin();

  // Initialisierung des RFID-Empfängers
  mfrc522.PCD_Init();

  // Motor in "geschlossen"-Position fahren
  Motor.write(5);
}

void loop()
{
  String WertHEX;
  String WertDEZ;

  // Wenn keine Karte in Reichweite ist ..
  if (!mfrc522.PICC_IsNewCardPresent())
  {
    // .. wird die Abfrage wiederholt.
    return;
  }

  // Wenn kein RFID-Sender ausgewählt wurde ..
  if (!mfrc522.PICC_ReadCardSerial())
  {
    // .. wird die Abfrage wiederholt.
    return;
  }

  Serial.println(F("  Karte entdeckt!"));

  // HEX-Werte/Dezimal-Werte in Strings schreiben
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    WertHEX = WertHEX + String(mfrc522.uid.uidByte[i], HEX) + " ";
    WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + " ";

    // Kleinbuchstaben des HEX-Wertes in Großbuchstaben umwandeln
    WertHEX.toUpperCase();
  }

  Serial.println();

  // hexadezimal/dezimal anzeigen
  Serial.println("  Wert in hexadezimal: " + WertHEX);
  Serial.println("  Wert in dezimal: " + WertDEZ);

  // Leerzeichen am Ende entfernen
  WertDEZ.trim();

  // WertDEZ mit korrektem Wert vergleichen -> Schranke öffnen
  if (WertDEZ.compareTo("80 236 29 59") == 0)
  {
    Serial.println("  korrekte Karte -> Schranke \u00f6ffnen");
    Motor.write(90);
    Status = !Status;
  }

  if (WertDEZ.compareTo("80 236 29 59") == 0 && !Status)
  {
    Serial.println("  korrekte Karte/Zutritt erfolgt -> Schranke schlie\u00dfen");
    Motor.write(5);
  }

  // wenn die Karte falsch ist
  else if (WertDEZ.compareTo("80 236 29 59") != 0)
  {
    Motor.write(5);
    Serial.println("  falsche Karte -> Schranke geschlossen lassen");
    Status = false;
  }

  delay(500);
}

Letzte Aktualisierung: 25. Jul 2023 @ 21:13