RFID aide code led

Bonjour à tous, débutant en électronique j'aimerai apprendre à utiliser mon nouveau system RFID RC-522, j'aimerai crée un code qui permet de détecter donc mon badge et ma carte pour ainsi si elle est valider allumer une led verte et si le contraire une led rouge. Beaucoup d'exemple sont sur internet or je ne trouve rien qui puisse m'apporter de l'aide.

J'ai réussi à obtenir avec le code ci-dessous les UID de mon badge ainsi que ma carte (l'rfid détecte un badge et une carte.)

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



RFID monModuleRFID(10,9);

int UID[5];

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  monModuleRFID.init();   

}

void loop()
{
    if (monModuleRFID.isCard()) {  
          if (monModuleRFID.readCardSerial()) {        
            Serial.print("L'UID est: ");
            for(int i=0;i<=4;i++)
            {
              UID[i]=monModuleRFID.serNum[i];
              Serial.print(UID[i],DEC);
              Serial.print(".");
            }
            Serial.println("");
          }          
          monModuleRFID.halt();
    }
    delay(1);    
}

J'ai ensuite un deuxième code qui permet de détecter mon badge et ma carte

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

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);  // Create MFRC522 instance.

#define PAGE_SIZE 64

// Variables de détection
int noCardSeuil = 1; // Seuil
int noCardCount = 0;
boolean cardState = false;         // current state of the button
boolean lastCardState = false;     // previous state of the button

void setup() {
  Serial.begin (9600);
  SPI.begin();           // MFRC522 Hardware uses SPI protocol
  mfrc522.PCD_Init(); // initialisation du module RFID
  delay(1);   
}

void loop() {
  
  //Compteur : si c'est true (0 ou 1)
  // Si c'est false : compteur continue
  if (mfrc522.PICC_IsNewCardPresent()) {
    noCardCount = 0;
  }else{ 
    noCardCount++;
  }
  
////    for (byte i = 0 ; i <  16 ; i++){
////    Serial.println("byteinfo [i]");
////    Serial.print("    ");
////    Serial.println(mfrc522.uid.uidByte[1]);
  // Etats : Présent / Pas présent
  if (noCardCount <= noCardSeuil) cardState = true;
  else cardState = false;



  // Lecture / Stop
  if (cardState != lastCardState) {
    if (cardState) {
      //Serial.println("Present");
      //Serial.println(valeurdelacarte);
      // Identification
      mfrc522.PICC_ReadCardSerial();
      if(mfrc522.uid.uidByte[1] == 22){ //valeur à changer
        //CHIFFRE 1 byte (valeur/num. hexadécimal de la puce rfid);
        // exemple num. hexa 136.4.22(le num. important).230.124 (puce marron tordu)
        Serial.print("A");
     }

     if(mfrc522.uid.uidByte[1] == 184){ //valeur à changer
      Serial.print("B"); 
     }

     if(mfrc522.uid.uidByte[1] == 197){ //valeur à changer
     Serial.print("C"); 
     }  
}
  }

  lastCardState = cardState ;
}

C'est dans se code ci-dessus que j'aimerai integrer mon sous programme d'allume des leds mais cependant je n'y arrive pas.

Merci pour toutes aide.

Quelle librairie utilisez vous ?

dans le premier code vous faites un

 monModuleRFID.serNum[i]

pour lire le N° de série et dans le second code vous faites

 if(mfrc522.uid.uidByte[1] == 22)

la plus courante est celle de Miguel Balboa qui n'a pas pas de serNum.

Dans cette librairie, si on regarde le code source, on a bien une variable d'instance appelée uid

 Uid uid;								// Used by PICC_ReadCardSerial().

et le type Uid est défini un peu plus haut comme étant

// A struct used for passing the UID of a PICC.
	typedef struct {
		byte		size;			// Number of bytes in the UID. 4, 7 or 10.
		byte		uidByte[10];
		byte		sak;			// The SAK (Select acknowledge) byte returned from the PICC after successful selection.
	} Uid;

vous avez donc une structure, la premiere variable (size) vous dit le nombre d'octets occupé par le N° de série, puis vous avez un tableau qui a 10 cases pour ce N° de série. Vous ne prenez que les 4 premiers dans votre code ce qui doit sans doute correspondre à vos cartes, mais le mieux c'est quand même de tenir compte de size.

Donc on sait que le tableau uidByte contient size octets représentant le N° de série. Si on veut comparer ce tableau à un autre pour voir s'ils sont égaux, il existe la fonction memcmp().

si vous aviez un

const byte carteOK[] = {0xAA, 0xBB, 0xCC, 0xDD}; // le bon N° de série sur 4 octets

vous pourriez tester si votre N° de série lu est correct en faisant:

if (memcmp(mfrc522.uid.uidByte, carteOK, 4) == 0) {
  // bon N° de série
  ...
} else {
  // mauvais N° de série
  ...
}

Bonjour, je n’ai pas réellement tout compris..

J’utilise une librairie que j’ai télécharger sur un tuto, dans le lien ici
http://www.tonerkebab.fr/wiki/doku.php/wiki:tutoriels:systeme-rfid:systeme-rfid

C’est pas terrible de télécharger des copies de librairies hors contexte, le mieux c’est de toujours les prendre à la source, la où elles sont maintenues

Qu’est-ce que vous n’avez pas compris ?