Untitled

mail@pastecode.io avatar
unknown
plain_text
12 days ago
1.9 kB
3
Indexable
Never
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10  // Pin de selección de esclavo (SDA)
#define RST_PIN 9  // Pin de reset

MFRC522 rfid(SS_PIN, RST_PIN); // Crear instancia del lector

void setup() {
  Serial.begin(9600); // Inicializar comunicación serial
  SPI.begin();        // Iniciar el bus SPI
  rfid.PCD_Init();    // Inicializar el lector RFID
  Serial.println("Acerque la tarjeta al lector...");
}

void loop() {
  // Revisar si hay una tarjeta presente
  if (rfid.PICC_IsNewCardPresent()) {
    // Seleccionar la tarjeta
    if (rfid.PICC_ReadCardSerial()) {
      Serial.print("UID de la tarjeta: ");
      for (byte i = 0; i < rfid.uid.size; i++) {
        Serial.print(rfid.uid.uidByte[i], HEX);
        Serial.print(" ");
      }
      Serial.println();

      // Escribir datos en la tarjeta
      byte block = 4; // Número de bloque donde quieres escribir
      byte data[] = {0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x00, 0x00, 0x00}; // Datos de prueba

      // Escribir datos en el bloque
      MFRC522::StatusCode status;
      status = rfid.MIFARE_Write(block, data, 16);
      if (status == MFRC522::STATUS_OK) {
        Serial.println("Datos escritos correctamente.");
      } else {
        Serial.print("Error al escribir: ");
        Serial.println(status);
      }

      // Leer el bloque
      byte buffer[18]; // Buffer para almacenar los datos leídos
      byte size = sizeof(buffer); // Tamaño del buffer

      status = rfid.MIFARE_Read(block, buffer, &size);
      if (status == MFRC522::STATUS_OK) {
        Serial.print("Datos leídos: ");
        for (byte i = 0; i < size; i++) {
          Serial.print(buffer[i], HEX);
          Serial.print(" ");
        }
        Serial.println();
      } else {
        Serial.print("Error al leer: ");
        Serial.println(status);
      }

      rfid.PICC_HaltA(); // Detener la comunicación con la tarjeta
    }
  }
}
Leave a Comment