Skip to content

Instantly share code, notes, and snippets.

@michaelsarduino
Created January 29, 2017 14:44
Show Gist options
  • Save michaelsarduino/921ff7f33b92fcf8ba43c70edb97b439 to your computer and use it in GitHub Desktop.
Save michaelsarduino/921ff7f33b92fcf8ba43c70edb97b439 to your computer and use it in GitHub Desktop.
#include <SPI.h>
#include <MFRC522.h> // Nachladen der notwendigen Bibliotheken
#define RST_PIN 9
#define SS_PIN 10 // Pinout definieren (siehe Abschnitt Verkabelung)
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte readCard[4]; // Array zum Abspeichern der UID der gerade gelesenen Karte
byte schluessel[4]; // Array zum Abspeichern der UID des Schluessels
void setup() {
Serial.begin(9600); // Serielle Kommunikation mit dem PC
while (!Serial);
Serial.println("Siehe michaelsarduino.blogspot.de!");
SPI.begin(); // SPI starten
mfrc522.PCD_Init(); // RFID Reader starten
mfrc522.PCD_DumpVersionToSerial(); // Details des RFID Readers anzeigen
schluessel[0] = 1;
schluessel[1] = 1;
schluessel[2] = 1;
schluessel[3] = 1; // Schluessel UID zuruecksetzen
pinMode(6, OUTPUT);
pinMode(7, OUTPUT); // LED Pins definieren
digitalWrite(7, LOW);
digitalWrite(6, HIGH); // Rote LED an, Gruene aus
Serial.println("Bitte Schluessel in die Naehe bringen zum Definieren!");
}
void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent()) { // Ueberpruefen ob neue Karte vorhanden
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) { // Verfuegbare Karte auswaehlen und auslesen
return;
}
for ( uint8_t i = 0; i < 4; i++) { // UID der aktuellen Karte in Array readCard abspeichern
readCard[i] = mfrc522.uid.uidByte[i];
}
if(schluessel[0] == 1) // Wenn schluessel noch undefiniert aktuelle Karte als
{ // als Schluessel im Array schluessel abspeichern
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
schluessel[0] = readCard[0];
schluessel[1] = readCard[1];
schluessel[2] = readCard[2];
schluessel[3] = readCard[3];
Serial.println("Schluessel definiert!");
readCard[0] = 0;
readCard[1] = 0;
readCard[2] = 0;
readCard[3] = 0;
delay(1500);
digitalWrite(7, LOW);
}
if((readCard[0] == schluessel[0])&&(readCard[1] == schluessel[1])&&(readCard[2] == schluessel[2])&&(readCard[3] == schluessel[3]))
{
digitalWrite(6, LOW); // Wenn aktuelle Karte gleich Schluessel ist
digitalWrite(7, HIGH);
Serial.println("Zugriff gewaehrt!");
readCard[0] = 0;
readCard[1] = 0;
readCard[2] = 0;
readCard[3] = 0;
delay(1500);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
}
else
{
Serial.println("Falscher Schluessel!"); //Falls falsche Karte hingehalten wird
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay(200);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(200);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(200);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(200);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(200);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(200);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
delay(200);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment