RfidDoorOpener/RFID_Freigabe.ino
2018-09-19 11:43:13 +02:00

92 lines
2.5 KiB
C++

/*
* Pin Layout MFRC522 -> Arduino Uno
* ----------------------------------
* RFID Arduino
* Typ MFRC522 Uno/101
* Signal PIN PIN
* ----------------------------------
* RST/Reset RST 9
* SPI SS SDA(SS) 10
* SPI MOSI MOSI 11
* SPI MISO MISO 12
* SPI SCK SCK 13
* ----------------------------------
* ----------------------------------
* LED mit Vorwiederstand an PIN 3 des Arduino zur visuellen Rückmeldung
*/
#include <SPI.h> // SPI Bibliothek einbinden
#include <MFRC522.h> // MFRC522 Bibliothek einbinden
#define RST_PIN 9 // Definiert SPI Interface RST_PIN (Reset) auf Arduino Pin 9
#define SS_PIN 10 // Definiert SPI Interface SS_PIN (SLave Select) auf Arduino Pin 10
MFRC522 mfrc522(SS_PIN, RST_PIN); // Erzeugt "mfrc522" Objekt.
byte karteUID[] = {0xE6, 0xB8, 0xBD, 0x1A};
int karteOK = 3;
int karte_check = false;
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode(3, OUTPUT);
}
void loop()
{
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial() ) { // Nur wenn Karte gefunden UND gelesen werden konnte wird IF-Funktion ausgeführt
Serial.print("Gelesene UID:"); // Gibt Text "Gelsene UID:" über USB aus.
for (byte i = 0; i< mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); // Wenn das Byte kleiner 16, dann schreibt er eine führende 0, ansonsten nur ein Leerzeichen
Serial.print(mfrc522.uid.uidByte[i], HEX); // Ausgabe in Hexadezimal Werten...
}
Serial.println(); // Zeilenumbruch im Seriellen Monitor (an der Ausgabe)
//Beginn der Vergleichsoperation
karte_check = true;
for (int j=0; j<4; j++)
{
if (mfrc522.uid.uidByte[j] != karteUID[j])
{
karte_check = false;
}
}
if (karte_check == 1)
{
digitalWrite(karteOK, HIGH);
delay(2000);
digitalWrite(karteOK, LOW);
}
if (karte_check != 1)
{
int i = 0;
while(i<8)
{
digitalWrite(karteOK, HIGH);
delay(70);
digitalWrite(karteOK, LOW);
delay(70);
i++;
}
}
mfrc522.PICC_HaltA(); // Versetzt den gelesenen Transponder in temporären Ruhemodus um eventuell weitere Karte zu lesen
delay(1000); // 1 Sekunde Wartezeit…
}
}