[Risolto]Lettore rfid rc522 Arduino nano

Salve ho collegato il lettore funziona bene , ora vorrei scrivere e leggere un numero intero ho visto qualche esempio della libreria ma non sono riuscito a capire come fare.

Sono riuscito a scrivere una stringa di caratteri e leggererli,ora però non riesco a scrivere un intero e a leggerlo.

Posta il codice, o non si parte nemmeno.

Ciao,
P.

1 Like

Questo e il codice esempio della libreria modificata per fare delle prove non riesco a salvare il numero intero nel buffer .

#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
int n ;
//*****************************************************************************************//
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("**avvicina la card**"));   //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;

  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  // String str = String(n);
  Serial.println(F("**avvicina la card**"));
  int crediti = 150;  //Vorrei scrivere questo valore sulla card
 
  byte buffer[34];
  byte block = 1;
  MFRC522::StatusCode status;
  byte len;

  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("PCD_Authenticate() failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
  else Serial.println(F("PCD_Authenticate() success: "));

  // Write block
  status = mfrc522.MIFARE_Write(block, buffer, 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("scrittura  failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
  else Serial.println(F("scritta con  success: "));

  mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid)); //dump some details about the card

  Serial.print(F("SALDO =  "));
  byte buffer2[18];
  // block = 1;
  len = 18;
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer2, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
  String data = "";
  //PRINT LAST NAME
  for (uint8_t i = 0; i < 16; i++) {
    data += (char)buffer2[i];
  }
  n = data.toInt();
  Serial.println(n);

  if (n == 150) {
    Serial.println(F("letto valore interi"));

  } else {

    Serial.println(F("non riconoscito il credito"));
  }
  Serial.println(F("fine della lettura"));
  
  delay(1000); 
  Serial.println(n);
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//