// 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: