Ich habe mir ein RFID reader gekauft (RC255) und eine LED sind am Arduino Uno angeschlossen (alles ist richtig verkabelt), doch die LED leuchtet nur eine Millisekunde obwohl er 5 sek leuchten sollte.
Der code ist größten teils von ChatGPT, aber auch bisl von mir.
Danke schon mal im vorraus!
Das ist der code:
(PS: die UIDs habe ich natürlich geänder für das forum)
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10 // Chip Select Pin
#define RST_PIN 9 // Reset Pin
MFRC522 rfid(SS_PIN, RST_PIN); // Create MFRC522 instance
// Hier die erlaubten UID-Werte eintragen (Hex-Format)
byte allowedUID1[] = {0xD5, 0xBC, 0x41, 0x53}; // Name1
byte allowedUID2[] = {0x63, 0xE0, 0x06, 0xB7}; // Name2
int plusPin = A5; // Pin für Plus-Strom
int minusPin = A4; // Pin für Minus-Strom
bool accessGranted = false;
// Hier die Namen den erlaubten UID-Werten zuordnen
String allowedNames[] = {"Name1", "Name2"};
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
pinMode(plusPin, OUTPUT);
pinMode(minusPin, OUTPUT);
digitalWrite(plusPin, LOW); // Setze Anfangszustand aus
digitalWrite(minusPin, LOW);
Serial.println("Bereit zum Scannen...");
}
void loop() {
accessGranted = false;
// Versuche eine RFID-Karte zu erkennen
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
Serial.println("Karte erkannt!");
byte uid[4];
for (byte i = 0; i < 4; i++) {
uid[i] = rfid.uid.uidByte[i];
}
// Überprüfe, ob die UID mit den erlaubten UIDs übereinstimmt
bool matchUID1 = compareUID(uid, allowedUID1);
bool matchUID2 = compareUID(uid, allowedUID2);
if (matchUID1 || matchUID2) {
accessGranted = true;
if (matchUID1) {
Serial.println("Willkommen, " + allowedNames[0]);
} else {
Serial.println("Willkommen, " + allowedNames[1]);
}
digitalWrite(plusPin, HIGH);
digitalWrite(minusPin, HIGH);
delay(5000); // Strom für 5 Sekunden einschalten
digitalWrite(plusPin, LOW);
digitalWrite(minusPin, LOW);
Serial.println("Strom ausgeschaltet!");
} else {
Serial.println("Zugriff verweigert - Unbekannte Karte!");
}
rfid.PICC_HaltA(); // Halt PICC (Power-down the card)
rfid.PCD_StopCrypto1(); // Stop encryption on PCD
}
}
// Funktion zum Vergleichen von zwei UIDs
bool compareUID(byte uid1[], byte uid2[]) {
for (byte i = 0; i < 4; i++) {
if (uid1[i] != uid2[i]) {
return false;
}
}
return true;
}