RC522 RFID

Hallo zusammen,

ich möchte gerne mehreren Chips eine bestimmte Nummer zuteilen. Diese Nummer soll nachher über den RC522 ausgelesen werden.

Leider habe ich nicht soviel Erfahrun mit dem Arduino und dem RC522. Jedoch habe ich schon einige Ansätze versucht, allerdings ohne Erfolg:

Nun zu meiner Frage: Gibt es die Möglichkeit nur einen bestimmten Wert (in dem Fall meine defnierte Nummer) im Seriellen Monitor anzeigen zu lassen? Dabei sollen keine weiteren Informationen wie UDI angezeigt werden.

Für einen Versuch nutzte ich die read_personal_Data. Jedoch habe ich hier das Problem das der Code erst in der zweiten Zeile des seriellen Montors ausgegeben wird. Ich möchte über ein anderes Programm auf die serielle Schnittstelle zugreifen. Leider kann ich aber nur die erste Zeile auslesen.

Ps. Ich bin kompletter Neuling in Sachen Forenbeiträge. Für Verbesserungsvorschläge bin ich gerne offen :slight_smile:

ich hoffe ihr könnt mir weiter helfen

Vielen Dank und Gruß

Levin

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9           // Configurable, see typical pin layout above
#define SS_PIN          10          // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance

//*****************************************************************************************//
void setup() {
  Serial.begin(9600);                                           // Initialize serial communications with the PC
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();                                              // Init MFRC522 card
  //Serial.println(F("Read personal data on a MIFARE PICC:"));    //shows in serial that it is ready to read
}

//*****************************************************************************************//
void loop() {

  // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

  //some variables we need
  byte block;
  byte len;
  MFRC522::StatusCode status;

  //-------------------------------------------

  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }


  byte buffer2[18];
  block = 1;

  

  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
  if (status != MFRC522::STATUS_OK) {   
   
    Serial.print(mfrc522.GetStatusCodeName(status));
    Serial.print(F("Authentication failed: "));
    return;
  }



  status = mfrc522.MIFARE_Read(block, buffer2, &len);
    if (status != MFRC522::STATUS_OK) {   
      Serial.print(mfrc522.GetStatusCodeName(status));
       Serial.print(F("Reading failed: "));
      return;
    }

     
    for (uint8_t i = 0; i < 16; i++) {
    Serial.write(buffer2[i] );
  }


  //----------------------------------------

  delay(2000); //change value if you want to read cards faster

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//

rfid_einWert.ino (4.69 KB)

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). So ist er auch auf portablen Geräten lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Warum schreibst du in Rätseln ?
Was ist WPF ?

Und setze den Sketch hier in Code-Tags rein, dann ist er für alle, auch den mobilen Usern besser lesbar.
Verwende dazu die Schaltfläche </> oben links im Editorfenster.

Dadurch dass du jetzt WPF einfach raus löschst, wird es auch nicht deutlicher.

Wer halt keine Hilfe wil, ...

Gruß Tommy

Sorry bin unterwegs, lade das Programm morgen in den Beitrag. Danke für eure Antworten

Hab den Code hochgeladen

Ich sehe die von angeblich genutzte Funktion in deinem Sketch nicht.
Du musst diese Ausgabe an die erste Stelle im seriellen Monitor setzen.

Ja aber wie geht das? Wie setzte ich die Ausgabe an die erste Stelle?

HotSystems:
Was ist WPF ?

Windows Presentation Foundation? Ein .NET GUI Framework

Serenifly:
Windows Presentation Foundation? Ein .NET GUI Framework

Danke und ok, ich hatte vermutet, es geht um Arduino.

Leeeeeevin:
Ja aber wie geht das? Wie setzte ich die Ausgabe an die erste Stelle?

Indem du es sehr weit an den Anfang der Ausgaben setzt. Wie wäre es, wenn du es ausprobierst ?

Das hab ich schon. Wenn ich allerdings die Ausgabe vor die zwei Blöcke stelle, welche für die erste Zeile verantwortlich sind, kommt nur eine falsche Ausgabe raus.

.....

byte buffer2[18];
block = 1;

for (uint8_t i = 0; i < 16; i++) { // Das ist die Ausgabe für meine Zahl
Serial.write(buffer2 );

  • }*

  • status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); *

  • if (status != MFRC522::STATUS_OK) { *

  • Serial.print(mfrc522.GetStatusCodeName(status));*

  • Serial.print(F("Authentication failed: "));*

  • return;*

  • }*

  • status = mfrc522.MIFARE_Read(block, buffer2, &len);*

  • if (status != MFRC522::STATUS_OK) { *

  • Serial.print(mfrc522.GetStatusCodeName(status));*

  • Serial.print(F("Reading failed: "));*

  • return;*

  • }*

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Außerdem wird Dein Code dann nicht verstümmelt.

Gruß Tommy