Attribuer une variable a un badge rfid

Bonjour je vous présente mon projet

Il y auras 4 lecteur rfid (mfrc522). Les lecteur seront placé sur un plateau, et un formule mathématique doit être complété. Une formule avec les chiffres manquant.

Les chiffres manquant seront des badges rfid. chaqu'un auront une valeurs (+1, +5, x2, -2).

Est-ce qu'il y a possibilité de catégorisé chaque lecteur ? (Lecteur 1, Lecteur 2, Lecteur3 et Lecteur4).

Si dans le code je voudrais que l'équation soit comme t'elle (lecteur1 - lecteur 2 x lecteur3 + lecteur4) et chaque badge correspond a un chiffre, donc si je place le badge1 (+1) sur le lecteur1,
dans la formule il doit le calculer.

Comment puis-je attribuée une variable au badge et comment crée une formule mathématique avec les lecteurs ?

Merci beaucoup pour votre aide !!

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

1 Like

le mfrc522 est connu pour avoir des qualité variables suivant l'origine. En avoir plusieurs multiplie donc les risques de problèmes en plus la bibliothèque ne simplifie pas le boulot (cf ReadUidMultiReader is not working · Issue #191 · miguelbalboa/rfid · GitHub)

il y a un exemple avec 2 lecteurs

sinon pour votre question c'est juste de la structuration de votre code - si la lecture fonctionne bien alors ça ne devrait pas être sorcier à coder.

chaque capteur est identifié par une broche 'chip select' donc vous savez à quel lecteur vous parlez

quand vous posez un badge vous pouvez lire son identifiant. Vous connaissez les 4 badges donc dans le code vous pouvez faire correspondre l'identifiant à l'opération +1 ou x2 etc...

merci beaucoup de m'avoir déplacer dans la bonne section.

comment je peut définir mon id de carte pour un nombre ?

L’ID est déjà câblé en dur dans la carte. Il suffit de le lire. Chaque carte en aura un différent

oui je comprend, mais ce que je veut dire est si mon id de carte est 417dfe4c, comment lui attribuer une valeur de +2 ou de -4 par exemple ?

tout dépend comment vous lisez le code, le plus slmple c'est déjà de faire fonctionner un lecteur

Quand une carte est présentée, la bibliothèque remplir avec les informations une structure qui est définie comme cela

Si vous avez appelé votre instance du lecteur RFID lecteur1 par exemple en faisant
MFRC522 lecteur1(SS_PIN, RST_PIN);

vous aurez dans lecteur1.uid.size le nombre d'octets qui représentent l'identifiant unique de la carte présentée et dans le tableau lecteur1.uid.uidByte[] vous avez les octets en question (de l'indice 0 à l'indice lecteur1.uid.size -1 donc)

Imaginons que toutes vos cartes utilisent que 4 octets pour leur identifiant unique (UID) alors si vous connaissez une carte don't l'identifiant binaire est 0x417dfe4c vous pouvez déclarer un tableau pour cette carte avec les 4 octets

const byte carteConnue[] = {0x41, 0x7d, 0xfe, 0x4c};

dans le code pour voir si la carte présentée est cette carte vous pouvez utiliser la fonction memcmp() qui permet de comparer deux zones mémoire. Si cette fonction retourne 0 c'est que les 2 zones en mémoires sont identiques.

donc votre code pourrait fait

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

const byte brocheReset =  9;
const byte brocheCS1 =   10;
const byte carteConnue[] = {0x41, 0x7d, 0xfe, 0x4c};

MFRC522 lecteur1(brocheCS1, brocheReset);

void loop() {
  // ici on ne fait rien si aucune carte n'est présentée
    if ( ! lecteur1.PICC_IsNewCardPresent())    return;
    if ( ! lecteur1.PICC_ReadCardSerial())      return;

  // ici on sait qu'une carte a été présentée
  // que son identifiant possède `lecteur1.uid.size` octets 
  // et que cet identifiant unique est dans le tableau `lecteur1.uid.uidByte[]` 

  // on teste si la carte présentée est celle que l'on connait 
 
  if ((lecteur1.uid.size == sizeof carteConnue) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, carteConnue, sizeof carteConnue) == 0))    // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte

  } else {
    // carte inconnue

  }
} 

Dans la partie où la carte est reconnue c'est là que vous devez définir la mémorisation de l'opération par la présence de cette carte. par exemple vous pourriez avoir un nouveau type de variable de type énuméré

enum TypeOperation {AUCUNE, FOIS_DEUX, PLUS_UN, MOINS_CINQ, DIVISE_PAR_DEUX}; 

et vous avez une variable associée à votre lecteur1 de ce type.

TypeOperation operationLecteur1 = AUCUNE; // par défaut elle n'est pas affectée

dans votre code lorsque vous faites la comparaison pour reconnaitre la carte, si la carteConnue correspond à x2 alors dans le if vous le mémorisez

 if ((lecteur1.uid.size == sizeof carteConnue) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, carteConnue, sizeof carteConnue) == 0))    // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    operationLecteur1 = FOIS_DEUX;
  }

si vous voulez gérer plusieurs carte, bien sûr ce serait mieux de déclarer des structures et des tableaux

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

// définition du type pour les opérations connues
enum TypeOperation {AUCUNE, FOIS_DEUX, PLUS_UN, MOINS_CINQ, DIVISE_PAR_DEUX}; 

// définition du type pour les cartes connues
struct CartesConnues {
  byte uid[4];
  TypeOperation operation;
};

// création du tableau des cartes connues avec leur opération associée 
CartesConnues listeDesCartesConnues[] = {
  {{0x41, 0x7d, 0xfe, 0x4c}, FOIS_DEUX}, 
  {{0x41, 0x7e, 0xce, 0x34}, PLUS_UN}, 
  {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, 
 // définissez toutes vos cartes connues
}; 

const size_t nombreDeCartesConnues = sizeof listeDesCartesConnues / sizeof * listeDesCartesConnues; // le nombre de cartes connues


// définition des lecteurs
const byte brocheReset =  9;
byte brocheCS[] = {6, 7, 8, 9}; // les lecteurs sont sur ces broches
const size_t nombreDeLecteursRFID = sizeof brocheCS; 
MFRC522 lecteurs[nombreDeLecteursRFID];   // Create MFRC522 instance.

// définition de la liste des opérations affectées
TypeOperation lesOperationsEnregistrees[nombreDeLecteursRFID];

void setup() {
  Serial.begin(115200); 
  SPI.begin();
  for (size_t i = 0; i < nombreDeLecteursRFID; i++) {
    lecteurs[i].PCD_Init(brocheCS[i], brocheReset); // on initialise chaque lecteur, ils partagent le reset
    lesOperationsEnregistrees[i] = AUCUNE; // par défaut aucune opération
  }
}

void loop() {
  // à vous de jouer
}

comme ça dans la loop(), lorsqu'une carte se présente vous pouvez tester facilement avec une boucle for() toutes les cartes connues. je vous laisse faire.

PS/ j'ai tapé tout cela depuis mon iPhone donc c'est non testé.... c'est pour expliquer le principe.

Wow ! quelle explication très claire ! Merci bcp.

Je comprend mieux maintenant, pour avoir pris le temps d'écrire ca sur votre IPhone, c'est très bien expliquée.

Je vais tester ca :slight_smile:

Ok postez votre code si vous avez des soucis

Petite question, pense tu possible mettre 12 lecteurs RFID sur le même arduino mega

mon projet nécessite 12 lecteur. J'ai lue qu'il pouvais y avoir des problème de lecture, mais jai pensé a un bouton qui permettrais la lecture des 12 lecteurs. (au lieu de lire a chaque fois qu'une carte est présentée.

A mon avis plus vous en rajoutez plus vous augmentez le risque que ça ne fonctionne pas vu la piètre qualité de nombre de ces lecteurs mais dans l’absolu oui ça pourrait / devrait fonctionner. Dans le GitHub quelqu’un dit en avoir essayé 10 avec succès et d’autres galèrent avec 2 ou 6… un des post dit qu’il a réussi en isolant chaque lecteur derrière un multiplexeur…

Vous utilisez peu des capacités réelles du RFID si vous ne faites que l’identification d’une carte posée dessus. Il pourrait y avoir d’autres types d’approches - où il faudrait bricoler un peu plus - comme dans les pièces d’échec de certains plateaux électroniques qui embarquent un petit circuit de détection de type LC (un papier de recherche ou un autre)

Voici mon code. Mon but est qu'il y ai un bouton pour faire vérifier la combinaison.

j'initialise chaque lecteur quand le bouton est pressé.

chaque lecteurs a son propre void que j'apelle quand le bouton est pressé. celui change ca variable et dans la loop, si le calcul est bon, alors le ''mag lock'' est release.

Ca ne marche pas... J'ai aucune réponse de mes lecteurs..

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


/* Typical pin layout used:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 *
 * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout
 */


// définition du type pour les opérations connues
/* 3 qui ont une valeur de +3 
   2 qui ont une valeur de +5
   2 qui ont une valeur de +1
   1 qui a une valeur de -1
   3 qui ont une valeur de +2
   1 qui a une valeur de -2
*/

// opération néccessaire : +3, +5, +1, -1, +2, -2 
enum TypeOperation {AUCUNE, PLUS_UN, PLUS_DEUX, PLUS_TROIS, PLUS_CINQ, MOINS_UN, MOINS_DEUX}; 

// définition du type pour les cartes connues
struct CartesConnues {
  byte uid[4];
  TypeOperation operation;
};

// création du tableau des cartes connues avec leur opération associée 
CartesConnues listeDesCartesConnues[] = {
  {{0x69, 0xcd, 0x9f, 0x6e}, PLUS_TROIS}, //carte 1
  {{0x41, 0x7d, 0xfe, 0x4c}, PLUS_DEUX},   //carte 2
  // {{0x41, 0x7f, 0xad, 0x12}, PLUS_UN}, //carte 3
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 4
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 5
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 6
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 7
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 8
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 9
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 10
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 11
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 12

 // définissez toutes vos cartes connues
}; 

const byte RST =  5;
const byte CS1 =   21;
const byte CS2 =   22;
//const byte CS3 =   23;
//const byte CS4 =   24;
//const byte CS5 =   25;
//const byte CS6 =   26;
//const byte CS7 =   27;
//const byte CS8 =   28;
//const byte CS9 =   29;
//const byte CS10 =   30;
//const byte CS11=   31;
//const byte CS12 =   32;

MFRC522 lecteur1(CS1, RST);
MFRC522 lecteur2(CS2, RST);
//MFRC522 lecteur3(CS3, RST);
//MFRC522 lecteur4(CS4, RST);
//MFRC522 lecteur5(CS5, RST);
//MFRC522 lecteur6(CS6, RST);
//MFRC522 lecteur7(CS7, RST);
//MFRC522 lecteur8(CS8, RST);
//MFRC522 lecteur9(CS9, RST);
//MFRC522 lecteur10(CS10, RST);
//MFRC522 lecteur11(CS11, RST);
//MFRC522 lecteur12(CS12, RST);

const size_t nombreDeCartesConnues = sizeof listeDesCartesConnues / sizeof * listeDesCartesConnues; // le nombre de cartes connues


// définition des lecteurs
byte brocheCS[] = {21, 22, 23, 23, 25, 26, 27, 28, 29, 30, 31, 32}; // les lecteurs sont sur ces broches
const size_t nombreDeLecteursRFID = sizeof brocheCS; 
//MFRC522 lecteurs[nombreDeLecteursRFID];   // Create MFRC522 instance.

// définition de la liste des opérations affectées
TypeOperation lesOperationsEnregistrees[nombreDeLecteursRFID];

const int MagLock = 41;

int OPLecteur1;
int OPLecteur2;
int OPLecteur3;
int OPLecteur4;
int OPLecteur5;
int OPLecteur6;
int OPLecteur7;
int OPLecteur8;
int OPLecteur9;
int OPLecteur10;
int OPLecteur11;
int OPLecteur12;

int button = 40;
int etatbutton = 1;


void setup() {
  Serial.begin(115200); 
  SPI.begin();
  for (size_t i = 0; i < nombreDeLecteursRFID; i++) {
    //lecteurs[i].PCD_Init(brocheCS[i], RST); // on initialise chaque lecteur, ils partagent le reset
    lesOperationsEnregistrees[i] = AUCUNE; // par défaut aucune opération
  }
  pinMode(button, INPUT_PULLUP);
  pinMode(MagLock, OUTPUT);

}

void loop() {
  etatbutton = digitalRead(button);
  if (etatbutton == 0) {
    //Serial.println("Debut Verification");
    //Serial.println(etatbutton);
    void lecture1();
    delay(10);
    void lecture2();
    delay(10);

  }
  if (OPLecteur1 + OPLecteur2 == 5) {
    digitalWrite(MagLock, HIGH);
    Serial.println("MagLock ON");
  } else {
    digitalWrite(MagLock, LOW);
    Serial.println("MagLock OFF");
  }
}

void lecture1 () {
  lecteur1.PCD_Init();
  if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_TROIS) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur1 = 3;
  } if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_DEUX) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur1 = 2;
  }
  Serial.println("OP Lecteur 1 = ");
  Serial.print(OPLecteur1);
  delay(10);
}

void lecture2 () {
  lecteur2.PCD_Init();
  if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_TROIS) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur2 = 3;
    Serial.println("Lecteur 2 = +3");
  } if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_DEUX) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur2 = 2;
  }
  Serial.println("OP Lecteur 2 = ");
  Serial.print(OPLecteur2);
  delay(10);

}

On dit fonction, pas void. void est le type utilisé pour dire "rien du tout" pour définir le type retourné par l'appel de la fonction.


cette écriture est une forward declaration de fonction.

si vous voulez appeler une fonction on fait juste lecture1(); ou lecture2();


vous ne faites pas le test de présence de la carte


je n'ai pas tout lu mais faites marcher votre code avec 1 lecteur avant d'en essayer 2

je teste avec seulement 1 lecteur, jai régler les petite erreur que vous m'avez fait remarqué, mais la variable OPLecteur 1 ne change toujours pas.

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


/* Typical pin layout used:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 *
 * More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout
 */


// définition du type pour les opérations connues
/* 3 qui ont une valeur de +3 
   2 qui ont une valeur de +5
   2 qui ont une valeur de +1
   1 qui a une valeur de -1
   3 qui ont une valeur de +2
   1 qui a une valeur de -2
*/

// opération néccessaire : +3, +5, +1, -1, +2, -2 
enum TypeOperation {AUCUNE, PLUS_UN, PLUS_DEUX, PLUS_TROIS, PLUS_CINQ, MOINS_UN, MOINS_DEUX}; 

// définition du type pour les cartes connues
struct CartesConnues {
  byte uid[4];
  TypeOperation operation;
};

// création du tableau des cartes connues avec leur opération associée 
CartesConnues listeDesCartesConnues[] = {
  {{0x69, 0xcd, 0x9f, 0x6e}, PLUS_TROIS}, //carte 1
  {{0x41, 0x7d, 0xfe, 0x4c}, PLUS_DEUX},   //carte 2
  // {{0x41, 0x7f, 0xad, 0x12}, PLUS_UN}, //carte 3
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 4
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 5
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 6
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 7
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 8
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 9
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 10
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 11
  // {{0x41, 0x7f, 0xad, 0x12}, MOINS_CINQ}, //carte 12

 // définissez toutes vos cartes connues
}; 

const byte RST =  5;
const byte CS1 =   21;
const byte CS2 =   22;
//const byte CS3 =   23;
//const byte CS4 =   24;
//const byte CS5 =   25;
//const byte CS6 =   26;
//const byte CS7 =   27;
//const byte CS8 =   28;
//const byte CS9 =   29;
//const byte CS10 =   30;
//const byte CS11=   31;
//const byte CS12 =   32;

MFRC522 lecteur1(CS1, RST);
MFRC522 lecteur2(CS2, RST);
//MFRC522 lecteur3(CS3, RST);
//MFRC522 lecteur4(CS4, RST);
//MFRC522 lecteur5(CS5, RST);
//MFRC522 lecteur6(CS6, RST);
//MFRC522 lecteur7(CS7, RST);
//MFRC522 lecteur8(CS8, RST);
//MFRC522 lecteur9(CS9, RST);
//MFRC522 lecteur10(CS10, RST);
//MFRC522 lecteur11(CS11, RST);
//MFRC522 lecteur12(CS12, RST);

const size_t nombreDeCartesConnues = sizeof listeDesCartesConnues / sizeof * listeDesCartesConnues; // le nombre de cartes connues


// définition des lecteurs
byte brocheCS[] = {21, 22, 23, 23, 25, 26, 27, 28, 29, 30, 31, 32}; // les lecteurs sont sur ces broches
const size_t nombreDeLecteursRFID = sizeof brocheCS; 
//MFRC522 lecteurs[nombreDeLecteursRFID];   // Create MFRC522 instance.

// définition de la liste des opérations affectées
TypeOperation lesOperationsEnregistrees[nombreDeLecteursRFID];

const int MagLock = 41;

int OPLecteur1;
int OPLecteur2;
int OPLecteur3;
int OPLecteur4;
int OPLecteur5;
int OPLecteur6;
int OPLecteur7;
int OPLecteur8;
int OPLecteur9;
int OPLecteur10;
int OPLecteur11;
int OPLecteur12;

int button = 40;
int etatbutton = 1;


void setup() {
  Serial.begin(115200); 
  SPI.begin();
  for (size_t i = 0; i < nombreDeLecteursRFID; i++) {
    //lecteurs[i].PCD_Init(brocheCS[i], RST); // on initialise chaque lecteur, ils partagent le reset
    lesOperationsEnregistrees[i] = AUCUNE; // par défaut aucune opération
  }
  pinMode(button, INPUT_PULLUP);
  pinMode(MagLock, OUTPUT);

}

void loop() {
  etatbutton = digitalRead(button);
  if (etatbutton == 0) {
    //Serial.println("Debut Verification");
    //Serial.println(etatbutton);
    lecture1();
    delay(10);
    //lecture2();
    //delay(10);

  }
  if (OPLecteur1 + OPLecteur2 == 5) {
    digitalWrite(MagLock, HIGH);
    Serial.println("MagLock ON");
  } else {
    digitalWrite(MagLock, LOW);
    Serial.println("MagLock OFF");
  }
  delay(500);
}

void lecture1 () {
  lecteur1.PCD_Init();
  if (lecteur1.PICC_IsNewCardPresent()){
  if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_TROIS) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur1 = 3;
  } if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_DEUX) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur1 = 2;
  }
  Serial.println("OP Lecteur 1 = ");
  Serial.println(OPLecteur1);
  }
}

/*void lecture2 () {
  lecteur2.PCD_Init();
  if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_TROIS) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur2 = 3;
    Serial.println("Lecteur 2 = +3");
  } if ((lecteur1.uid.size == sizeof listeDesCartesConnues) &&                              // il faut que le nombre d'octets corresponde
      (memcmp(lecteur1.uid.uidByte, listeDesCartesConnues, sizeof PLUS_DEUX) == 0))  // et que tous ces octets soient identiques
  {
    // bingo c'est la bonne carte
    OPLecteur2 = 2;
  }
  Serial.println("OP Lecteur 2 = ");
  Serial.print(OPLecteur2);
  delay(10);

}
*/

Faites un schéma du circuit

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