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