Code fehler, oder hardwer?

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;
}

Leider bin ich nicht so schlau wie ChatGPT, daher die Frage: Welcher Controller ?

Hallo vogel29

Mein Rat:

Fragen Sie den Roboter so lange, bis er Ihnen das richtige Ergebnis liefert, das Sie erwarten.

Eine Antwort könnte wahrscheinlich auch 42 sein.

Na da wird ChatGPT doch wohl seine eigenen Fehler beseitigen können.
Wir sind nicht die Diener des Roboters.

Gruß Tommy

Wie wärs mit Beispielen aus der Lib ?

So ein Unsinn kann nur ChatGPT Producieren

naja, er findet hier kein fehler, weshalb ich euch frage, weil ich auch kein fehler sehe.

Tja dann Pech gehabt.
Wie geschrieben Beispiele testen dann erweitern. Wenn das zu hoch für dich such anderes Hobby

habe ich, er findet keine fehler, und ich auch nicht weshalb ich ratlos bin

Und Fragen musst du hier nicht beantworten ?

Na, dann ist ja alles gut und das Thema gelöst.

Es soll funktionieren ohne Controller :innocent:

Hier wird dir geholfen :wink:
Und wenn du danach fragen hast wird auch geantwortet.
Dass Forum ist nicht da um Maschinen reparieren

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.