i have arduino with rfid for door lock after opening the door to many times the rfid don't response and after cuting the power the rfid start fonction again please help me this is my code :
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 3 //relay pin
#define BUZZER 2 //buzzer pin
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(RELAY, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
digitalWrite(RELAY, HIGH);
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "B2 CF DC 79" || content.substring(1) == "97 D7 DC 79" || content.substring(1) == "BA 46 FC A9" || content.substring(1) == "7B E7 DC 79" || content.substring(1) == "D9 15 59 59" || content.substring(1) == "19 6C 6F 29") //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(500);
digitalWrite(RELAY, HIGH);
digitalWrite(LED_G, HIGH);
delay(ACCESS_DELAY);
digitalWrite(RELAY, LOW);
digitalWrite(LED_G, LOW);
}
else {
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(DENIED_DELAY);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}
Please edit your code to put the program between CODE tags. As it is now, all the "[ i ]" are masked as they are understood as "italic" tags. Then, your code is hard to read and has mistakes that do not really exist.
To do so, read the explanation in pinned messages at the top of the forum.
i have arduino with rfid for door lock after opening the door to many times the rfid don't response and after cuting the power the rfid start fonction again please help me this is my code
Your code is quite standard, there is nothing in it that would create the problem you describe. It must come from something else. How is your reader powered? Can you show how everything is connected? How much us "too many times"? What does "not respond" mean? How do you know it's a reader related problem and not an Arduino problem? What Arduino board do you use?
i have arduino with rfid for door lock after opening the door to many times the rfid don't response and after cutting the power the rfid start function again
Perhaps you have a memory fragmentation problem due to your use of the String class.
thank you again i had the same problem after 20 attempt of opening the door nothing responds i can't open the door again so i had to change all the code i stiill testing it
This is an unused variable, and the compiler probably eliminates it, but it wouldn't hurt to get it out of the program.
i had the same problem after 20 attempt of opening the door nothing responds
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
These two sections can block the code. I would try to add some Serial output to see which one is stopping the program or if there is some other reason for the failure.