RFID Code wird nicht gelesen

Guten Tag ich bin neu in diesem Forum und weiß nicht ob ich meine Frage an dem richtigen “Ort” Stelle oder diese schon existiert habe nichts gefunden.

Mein Problem ist dass das RFID Modul (MFRC522) meine Karte oder Karten (habe 2 Karten + 2 Chips) erkennt aber nicht deren Code ausliest.

Der Fehler wird mir auch im Sketch angezeigt und zwar momentan in der Reihe.

// code= ((code+mfrc522.uid.uidByte_)*10)_
(Den kompletten Sketch schreibe ich nochmal weiter unten auf )
“Momentan” momentan weil ich verschiedene Varianten ausprobiert habe mir die Kartennummer anzeigen zulassen. Der Fehlercode bleibt jedoch immer derselbe :

  • / ‘i’ was not declared in this scope*
    Nun die Frage was habe ich falsch gemacht ? i müsste doch eigentlich durch die vorherige Zeile bestimmt worden sein oder durch die Bibliothek? Oder könnte es sein das ich einen Fehler bei der Bibliothek gemacht habe ?
    Ich habe die Bibliothek aufgrund der Ardunio Website bei GitHub - miguelbalboa/rfid: Arduino RFID Library for MFRC522 heruntergeladen.
    Da wurde aber auch gesagt das ich dann bei der Datei Rfid-Master den Bindestrich entfernen soll zu RFIDMaster ich konnte diese aber erst nicht unbennen und hab sie mit Bindestrich hinzugefügt.
    Im Nachhinein konnte ich den Bindestrich entfernen konnte aber dann die Bibliothek nicht hinzufügen.
    Und ich habe einen Funduino UNO
    Hier der aktuelle Sketch:
    #include <MFRC522.h>
    #include <SPI.h>
    #define SS_PIN 10
    #define RST_PIN 9
    MFRC mfrc522(SS_PIN, RST_PIN)
    void septup () {
    Serial.begin(9600);
    SPI.begin();
    mfrc522.PCD_Init();
    }
    void loop
    If ( ! mfrc522.PICC_UsNewCardPresent())
    {
    return;
    }
    If ( ! mfrc522.PICC_Read.CardSerial ())
    {
    return;
    }
    long code = 0;
    for (byte i = 0; i < mfrc522.uid.uid.size; i++);
    {
    code= (( code +mfrc522.uid.uidByte_)10)_
    _
    // Die fehlerhafte Zeile*_
    }
    Serial.print (“Die Kartennummer lautet:”);
    Serial.println (code);
    Serial.print(" ");
    }
    Serial.println();
    Wenn ich jetzt den Sketch hochladen und eine Karte an dran halte erscheint immer im serial Monitor
    Die Kartennummer lautet
    Die Kartennummer lautet
    Die Kartennummer lautet
    Die Kartennummer lautet
    … .
    Ich hoffe ihr könnt mir helfen da ich nicht mehr weiter weiß :’(

ZX6r-rider:
Ich hoffe ihr könnt mir helfen da ich nicht mehr weiter weiß :’(

Wir versuchen es.
Da du den Sketch aber nicht in Code-Tags gesetzt hast, ist dieser sehr schwer zu lesen.
Bitte verwende Code-Tags (Schaltfläche </>) im Editor-Fenster-
Das kannst du auch nachträglich noch ändern.

for (byte i = 0; i < mfrc522.uid.uid.size; i++);

Erkläre mir bitte einmal, wozu das Semikolon hinter dem for gut sein soll.
(nur für dieses Semikolon und das for ist i deklariert…)

Viele vielen Dank Whandall

Ich habe auf deinen Kommentar die Zeile mit der Anleitung nocheinmal verglichen und mir ist auch gefallen das dort tatsächlich kein Semikolon vorhanden ist ich habe es entfernt und siehe da es hat funktioniert.

Vielen Dank

Nur zum Verständnis wenn ich etwas deklarieren will darf ich also am Ende der Zeile kein simikolon setzten ?

Wieso ist das denn so ?

The for loop The for loop is designed to iterate a number of times. Its syntax is:

for (initialization; condition; increase) statement;

Like the while-loop, this loop repeats statement while condition is true. But, in addition, the for loop provides specific locations to contain an initialization and an increase expression, executed before the loop begins the first time, and after each iteration, respectively. Therefore, it is especially useful to use counter variables as condition.

It works in the following way:

initialization is executed. Generally, this declares a counter variable, and sets it to some initial value. This is executed a single time, at the beginning of the loop. condition is checked. If it is true, the loop continues; otherwise, the loop ends, and statement is skipped, going directly to step 5. statement is executed. As usual, it can be either a single statement or a block enclosed in curly braces { }. increase is executed, and the loop gets back to step 2. the loop ends: execution continues by the next statement after it.

Wenn du hinter das for ein Semikolon machst, ist das kontrollierte Statement leer...