Bonjour, j'ai fais un programme permettant d'analyser une carte avec un module RFID mais le problème étant que quand je montre la carte n°1, le bon message s'affiche ("Bienvenue Paul") mais quand je montre la carte n°2 le LCD m'affiche accès refusé car elle reste bloquée à "Accès carte 1 refusée". Est-ce qu'il y a possibilité de contourner le return ? Sachant que si j'enlève le return le message "Accès carte 1 refusée" s'affiche 5 fois.
Merci pour votre aide
#include <SPI.h>
#include <RFID.h>
#include <Wire.h>
#include "rgb_lcd.h"
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN,RST_PIN);
rgb_lcd lcd;
const int relaisPin = 8;
const int colorR = 255;
const int colorG = 155;
const int colorB =30;
int serNum[5];
int card1[][5] = {{32,149,77,109,149}};
int card2[][5] = {{156,160,140,171,27}};
int access1 = false;
int access2 = false;
void setup(){
Serial.begin(9600);
SPI.begin();
rfid.init();
pinMode(relaisPin, OUTPUT);
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
lcd.print("Veuillez montrer");
lcd.setCursor(2, 1);
lcd.print("votre badge");
}
void loop(){
if(rfid.isCard()){
if(rfid.readCardSerial()){
Serial.print(rfid.serNum[0]);
Serial.print(" ");
Serial.print(rfid.serNum[1]);
Serial.print(" ");
Serial.print(rfid.serNum[2]);
Serial.print(" ");
Serial.print(rfid.serNum[3]);
Serial.print(" ");
Serial.print(rfid.serNum[4]);
Serial.println("");
for(int x = 0; x < sizeof(card1); x++){
for(int i = 0; i < sizeof(rfid.serNum); i++ ){
if(rfid.serNum[i] != card1[x][i]) {
access1 = false;
Serial.println("Acces carte 1 invalide");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Acces refuse");
delay(2000);
lcd.clear();
delay (2000);
lcd.print("Veuillez montrer");
lcd.setCursor(2, 1);
lcd.print("votre badge");
}
else {
access1 = true;
Serial.println("Acces carte 1 valide");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bienvenue Paul");
delay(2000);
lcd.clear();
delay(1000);
digitalWrite(relaisPin, HIGH);
delay (2000);
digitalWrite(relaisPin, LOW);
delay(2000);
lcd.print("Veuillez montrer");
lcd.setCursor(2, 1);
lcd.print("votre badge");
}
if(access1) break;
}
break;
}
}
}
if(rfid.isCard()){
if(rfid.readCardSerial()){
Serial.print(rfid.serNum[0]);
Serial.print(" ");
Serial.print(rfid.serNum[1]);
Serial.print(" ");
Serial.print(rfid.serNum[2]);
Serial.print(" ");
Serial.print(rfid.serNum[3]);
Serial.print(" ");
Serial.print(rfid.serNum[4]);
Serial.println("");
for(int x = 0; x < sizeof(card2); x++){
for(int i = 0; i < sizeof(rfid.serNum); i++ ){
if(rfid.serNum[i] != card2[x][i]) {
access2 = false;
Serial.println("Acces carte 2 invalide");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Acces refuse");
delay(2000);
lcd.clear();
delay (2000);
lcd.print("Veuillez montrer");
lcd.setCursor(2, 1);
lcd.print("votre badge");
}
else {
access2 = true;
Serial.println("Acces carte 2 valide");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bienvenue Paul");
delay(2000);
lcd.clear();
delay(1000);
digitalWrite(relaisPin, HIGH);
delay (2000);
digitalWrite(relaisPin, LOW);
delay(2000);
lcd.print("Veuillez montrer");
lcd.setCursor(2, 1);
lcd.print("votre badge");
}
if(access2) break;
}
break;
}
}
}
rfid.halt();
}