Modulo rfid no lee tarjeta cuando hay un relé encendido

Estoy haciendo una alarma con un modulo laser y un sensor de movimiento, la alarma está configurada para apagarse con el modulo rfid al usar la tarjeta correcta, sin embargo al encenderse la alarma el modulo rfid no hace nada, en la consola cuando el relé esta apagado, al acercar la tarjeta se muestran sus datos, pero al estar encendido el relé no sale nada.

#include <SPI.h>
#include <MFRC522.h>
int Pir = 5;
int RELE = 2;
int RELE2 = 3;

#define SS_PIN 53
#define RST_PIN 6
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.








void setup() {

  pinMode(A1, INPUT);   // Pin fotoresistencia
  pinMode(10, OUTPUT);  // Pin buzzer
  pinMode(4, OUTPUT);   // Pin laser
  pinMode(2, OUTPUT);   //Rele 1
  pinMode(3, OUTPUT);   //Rele 2
  pinMode(5, INPUT);    //Modulo PIR
  
  

  Serial.begin(9600);   //Iniciamos comunicación
  tone(10, 200, 100);   //Sonido de Inicio
  delay(1000);
  tone(10, 200, 100);
  delay(1000);
  tone(10, 200, 100);
  digitalWrite(4, HIGH);  //Configuración de los Modulos Rele
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
 

{

  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Aproxime Tarjeta...");
  Serial.println();
  

}

  

}




void loop() {



  int ldr = analogRead(A1);  //Se toma lectura


  if (ldr > 500) {           //Si es mayor a 500 la lectura
    rfid();
    sonido();
    rele();
    delay(1000);

    
}


{
  if(digitalRead(Pir) == HIGH)
  {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    rfid();
    delay(60000);
    Serial.println("¡Intrusos!");
  }
  else
  {
    
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    
}



 }

 }



  void sonido() {                     //Alarma a sonar
    for (int i = 200; i < 500; i++) {
      tone(10, i, 10000);
    
    }
  }    
    
  void rele(){                      //Funcionamiento de los Módulos Rele
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    delay(60000);
    digitalWrite(2,HIGH);
    digitalWrite(3,HIGH);
    delay(1000);
  }
  

  void rfid()
  {
  // 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) == "03 D2 7E 1A") || (content.substring(1) == "63 78 52 2E")) //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println();
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    delay(1000);
  }

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


   

   

Hi,
Seria bueno que hagas un dibujo como la tienes alambrado el systema , como los estas alimentando y que microprocessor estas husando. Asi aquellos que te puedan ayudar tendra una mejor idea de como ayuadarte.

Esto es en serio? Sabes lo que un delay() asi provoca? Pues que durante
60000 mseg no hace nada. Traduzcamos eso en minuto, son 60 segundos = 1 minuto.
1 minuto que no hace nada. He ahi la razón de tu problema.

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