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);
}