[RESOLU] RFID RC522 bloque le reste du programme

Bonjour,

Je bloque sur un programme qui inclue la lecture d'un IUD de carte RFID, car bien que la lecture de la carte se passe bien, le programme attend la détection d'une carte pour effectuer le reste du programme.
J'ai créé un programme exemple simple pour montrer le problème:
Lorsqu'une carte est détectée, elle est lue et l'IUD s'affiche dans le moniteur série. A la fin du programme j'ai rajouté un "digitalWrite(LED_BUILTIN, HIGH);"
Dans cet exemple, l’Arduino attend qu'une carte soit détectée pour avancer dans le programme et allumer la LED.
Comment faire pour que l’exécution du programme ne soir pas bloqué par l'attente d'une lecture par le module RFID?

Merci pour votre aide.

Christophe

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 5

//RFID
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
//variables RFID
// stock l'IUD RFID
byte nuidPICC[4]; 

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);

//RFID
  // Init SPI bus
  SPI.begin(); 
  // Init MFRC522 
  rfid.PCD_Init(); 
      
    }
void loop() {

  //RFID début

  // Initialisé la boucle si aucun badge n'est présent 
if ( !rfid.PICC_IsNewCardPresent())
    return;

  // Vérifier la présence d'un nouveau badge 
  if ( !rfid.PICC_ReadCardSerial())
    return;

  // Afffichage 
  Serial.println(F("Un badge est détecté"));
  

  // Enregistrer l’ID du badge (4 octets) 
  for (byte i = 0; i < 4; i++) {
    nuidPICC[i] = rfid.uid.uidByte[i];
    }
    delay(500);
  // Affichage de l'identifiant 
  Serial.println(" L'UID du tag est:");
  for (byte i = 0; i < 4; i++) 
  {
    Serial.print(nuidPICC[i], DEC);
    Serial.print(" ");
  }
  Serial.println();

  // Re-Init RFID
rfid.PICC_HaltA(); // Halt PICC
 rfid.PCD_StopCrypto1(); // Stop encryption on PCD
 

//RFID Fin
       digitalWrite(LED_BUILTIN, HIGH);  
//FIN
}
if ( !rfid.PICC_IsNewCardPresent())
    return;

Il suffit de supprimer le return et de faire autre chose.

  if ( !rfid.PICC_IsNewCardPresent()) {
    // faire autre chose
  }

Un grand merci, ça fonctionne! la réponse est simple mais je bloquai dessus depuis hier.
Merci encore et bon dimanche hbachetti

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.