"class ..... has no member named ...... " Fehler

Hallo
Ich brauche Hilfe. Ich habe nämlich das Rc522 Modul von einem Arduino-Starterkit ausprobieren wollen. Ich habe die Schaltung so aufgebaut wie die Anleitung, und das Programm so reinkopiert wie in der Anleitung. Trotzdem ergab es einen Fehler. :frowning: Nämlich dieser: “class MFRC522 has no member named “MIFARE SetUid””.

Hier ist nochmal die ganze Schaltung:

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

#define RST_PIN   5     
#define SS_PIN    53   

MFRC522 mfrc522(SS_PIN, RST_PIN);   

#define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}

MFRC522::MIFARE_Key key;

void setup() {
  Serial.begin(9600);  
  while (!Serial);     
  SPI.begin();         
  mfrc522.PCD_Init();  
  Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!"));
  
  
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
}

void loop() {
  
 
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    delay(50);
    return;
  }
  

  

  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  } 
  Serial.println();
  
  // Set new UID
  byte newUid[] = NEW_UID;
  if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
    Serial.println(F("Wrote new UID to card."));
  }
  
  mfrc522.PICC_HaltA();
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    return;
  }
  
  Serial.println(F("New UID and contents:"));
  mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
  
  delay(2000);
}

Ich Danke jetzt schon für die Hilfe

Challenger

Eine Schaltung sehe ich nicht.
Du meinst sicher Sketch.

Was für einen Arduino setzt du ein ?
Evtl. verwendest du eine falsche Library.

Stimmt hab mich Verschrieben ich meinte Sketch.

Ich verwende den Arduino Mega 2560.

Challeneger

Ich Danke jetzt schon für die Hilfe

Darf ich dich mal fragen, warum du die Meldung verstümmelst?

OK, kann sein, dass dich Datei und Zeilennummer nicht interessieren, aber den Fehler findest du mit so einer "selektiven Wahrnehmung" vermutlich nicht.

Und ich werde mir das Zeugs ganz sicher nicht auf meinen Rechner spielen, nur um die Meldung vollständig sehen zu können. Außerdem, welche Lib verendest du überhaupt?

Ich könnte mir auch vorstellen, dass SetUid() nicht zum Umfang der Schnittstelle gehört.
Bei der einen Library die ich angesehen habe gibt es diese Funktion.
Geht das nicht nur mit Spezialkarten und ist insofern eher eine Hacker-Funktion?

    bool MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors);
   bool MIFARE_OpenUidBackdoor(bool logErrors);
   bool MIFARE_UnbrickUidSector(bool logErrors);

Ich habe schon alle Libraries die mit MFRC522 runtergeladen und ausprobiert.(Es sind zwei MFRC522, und MFRC522-master). Weil ich auch gemeint habe es könnte an der Library liegen weil dass, das einzige war was in der Anleitung nicht sicher geschrieben war.

Challenger

Hast Du auch jedes Mal die vorherige Lib gelöscht?

Gruß Tommy

Nein :-[
Wie geht dass denn?

Wenn Du sie ordnungsgemäß nach \libraries installiert hast, dann einfach da drin das Verzeichnis der Lib löchen.

Gruß Tommy

Habe ich aber nicht sondern von GitHub runtergeladen, auf den Desktop gezogen und sie mit “ZIP-Bibliotheken hinzufügen” hinzugefügt. Habe die Funktion löschen gesucht und nicht gefunden und das löschen der ZIP-Datei auf dem Desktop nütz uach nichts.

Dann steht sie in \libraris. Es hätte genügt, da mal rein zu schauen. Lesen solltest Du ja können.
Dann liest Du Dir den Rest meines Postings noch mal durch.

Gruß Tommy

Dann steht sie in \libraris.

%Appdata%!?!?

Tipp:
Ausführliche Meldungen aktivieren, dann zeigt es den Speicherort der verwendeten Libs.

Also meine IDEs (1.6.5, 1.8.1, 1.8.3) installieren bei Installation aus ZIP aus der IDE in \libraries.
Aber die Ausgabe aus der IDE ist natürlich sicherer.

Gruß Tommy

Vielen, vielen Dank für eure Hilfe.
Es lag echt an den falschen Libraries die ich runter geladen hab. Hab alles gelöscht, das eichtige geholt und tadaaaa es funktioniert. Endlich.
Finde es aber trotzdem dumm das es mehrere Libraries gibt mit gleichen Namen die nicht die gleiche funktion haben.

Trotzdem nochmals Danke

Challenger