RFID перестает работать после считывания нескольких карт - PullRequest
0 голосов
/ 30 октября 2018

Я использую Arduino UNO R3, MFRC522 RFID и реле для доступа к двери. Иногда они перестают работать и больше не могут читать карты. Я не знаю, неисправен ли MFRC522 или что-то не так в коде.

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

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
int in1 = 2;
int in3 = 7;
int a = 1;

void setup()
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522

  pinMode(in1, OUTPUT);
  digitalWrite(in1, HIGH);
  pinMode(in3, INPUT_PULLUP);
  delay(1000);
}

void loop()
{
  a = digitalRead(in3);
  Serial.println(a);
  digitalWrite(in1, HIGH);
  if (a == 1) {
    digitalWrite(in1, HIGH);
  }
  delay(80);
  if (a == 0) {
    digitalWrite(in1, LOW);
    delay(80);
    digitalWrite(in1, HIGH);
    delay(1000);
  }

  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  if (content.substring(1) == "E3 41 E5 87" || content.substring(1) == "FE 42 93 3F" || content.substring(1) == "8D 2C 36 BF" || content.substring(1) == "4D 0E 2A 3F" || content.substring(1) == "AD 4E 2D CB")
  {
    //Serial.println("Authorized access");
    digitalWrite(in1, LOW);
    delay(80);
    digitalWrite(in1, HIGH);
    delay(1000);
  }

  else   {
    // Serial.println(" Access denied");
    delay(2000);
  }
}

Я использую эту систему с YALA для доступа к двери. Но когда это останавливается, мне нужно перезагрузить всю систему.

...