Hallo, ich bin dabei einen Beispielsketch zu programmieren um zu testen ob mein RFID-RC522 Sensor noch funktioniert. Ich habe ihn soweit ich weiß richtig angeschlossen. Hier kurz einmal ein Überblick: SDA-10; SCK-13; MOSI-11; MISO-12; IRQ-nicht belegt; GND-GND; RST-9; VCC-3.3V.
Strom ist da, weil die LED (genannt D1) rot leuchtet. Sonst tut sich an den Signalleuchten aber nichts. Mein RFID-CHip hat die gleiche Frequenz wie der Sensor. Anbei sende ich noch mein Programm:
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // RST-Pin des RFID-Readers
#define SS_PIN 10 // SDA(Pin 10) des RFID-Readers
MFRC522 rfid(SS_PIN, RST_PIN); // Erstellen einer MFRC522-Instanz
void setup() {
Serial.begin(9600); // Serielle Kommunikation starten
SPI.begin(); // SPI-Bus initialisieren
rfid.PCD_Init(); // RFID-Reader initialisieren
Serial.println("Bereit zum Scannen nach RFID-Tags!");
Serial.println("Bitte halten Sie einen Tag in Reichweite des Readers.");
Serial.println();
}
void loop() {
// Überprüfen, ob ein neuer Tag erkannt wird
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
// RFID-Tag erfolgreich erkannt
Serial.print("Tag ID: ");
printUID(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
delay(1000);
// Weiteres Lesen verhindern, um nicht denselben Tag wiederholt zu lesen
rfid.PICC_HaltA();
}
}
// Warten, bis der Tag entfernt wird
if (!rfid.PICC_IsNewCardPresent()) {
delay(100);
}
}
// Funktion zum Drucken der Tag-ID (UID)
void printUID(byte *uid, byte uidLength) {
for (byte i = 0; i < uidLength; i++) {
Serial.print(uid[i] < 0x10 ? " 0" : " ");
Serial.print(uid[i], HEX);
}
}
Die lib bringt Beispiele mit.
Geht das "Dumpinfo" ?
Nur wenn nein: Foto vom Aufbau. Von Oben. Damit man sauber die Verkabelung sieht.
(Nicht überall die gleichen farben nehmen )
Also die "DumpInfo" klappt auf jeden Fall. Ich bekomme im Serial Monitor die "Card UID", die " Card SAK" und den "PICC type" angezeigt.
Außerdem noch den "Sector Block"
Dein Sketch ist doch nix anderes, als eine Abwandlung vom Example rfid_default_keys.
Kürzt man den auf den wichtigen Teil runter, kommt raus:
#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
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println(F("Try the most used default keys to print block 0 of a MIFARE PICC."));
}
/*
Helper routine to dump a byte array as hex values to Serial.
*/
void dump_byte_array(byte *buffer, byte bufferSize)
{
for (byte i = 0; i < bufferSize; i++)
{
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
void loop()
{
// 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; }
// Show some details of the PICC (that is: the tag/card)
Serial.print(F("Card UID:"));
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println();
}
Ich habe bereits einen neuen, sketch, dieser funtkioniert jetzt gut. Ich weiß nicht, was das Problem bei dem anderen war.
Naja jedenfalls trotzdem danke fürs Helfen. Ich wusste zum Beispiel nicht, dass es bei IDE auch Beispiele gibt.
Liebe Grüße Simon