Estoy haciendo un proyecto en el que utilizo el modulo RFID522 para activar un actuador mediante un modulo de relé, el problema es que cuando cargo el programa y lee mi tarjeta funciona correctamente, pero si quiero volver a pasar la tarjeta no activa el actuador, también tengo un boton que hace la misma función que el modulo RFID y con el botón si me funciona pero con la tarjeta no, solo tras presionar el botón de reset de arduino me vuelve a leer la tarjeta pero solo una vez. Si desconecto el actuador de mi relé si me lee la tarjeta las veces que quiera pero en cuanto le conecto el actuador a mi rele solo la lee una vez. Aquí dejo mi código, el actuador es una chapa de 12V, ya probé alimentando el arduino con 5V y 12V y lo raro es que antes si me funcionaba, pero un día dejo de funcionar, probé con 2 arduinos
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
#include <SPI.h>
#define SAD 10
#define RST 9
#define chapa 8//aqui va el rele
MFRC522 mfrc522(SAD, RST); //Comunicacion
void setup()
{
pinMode(chapa, OUTPUT); //la chapa va a ser salida
digitalWrite(chapa, LOW);
pinMode(7, INPUT); //boton
pinMode(4, OUTPUT); //buzzer
digitalWrite(4, LOW);
pinMode(3, OUTPUT); //led rojo
digitalWrite(3, HIGH);
pinMode(5, OUTPUT); //led verde
digitalWrite(5, LOW);
SPI.begin();
Serial.begin(9600); //a esos baudios
Serial.println("Buscando");
mfrc522.PCD_Init();
}
void loop()
{
if (digitalRead(7) == HIGH )
{
Serial.print("Abierto");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
else
{
}
//Mirando para nuevas tarjetas
if (!mfrc522.PICC_IsNewCardPresent())
{
return;
}
//Seleccionando nuevas tarjetas
if (!mfrc522.PICC_ReadCardSerial())
{
return;
}
//Muestra el UID sobre el monitor serie
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i <mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
_ Serial.print(mfrc522.uid.uidByte*, HEX);_
_ content.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte, HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "D9 92 9F 98") //aqui van la uid de la tarjtea que previamente nos mostro el monitor serial*
* {
Serial.println("Bienvenido");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
if (content.substring(1) == "A7 22 57 62") //aqui van la uid de la tarjtea que previamente nos mostro el monitor serial, coíar y pergar para agregar mas tarjetas.
{
Serial.println("Bienvenido");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
if (content.substring(1) == "4A EF A5 24") //aqui van la uid de la tarjtea que previamente nos mostro el monitor serial*
* {
Serial.println("Bienvenido");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
if (content.substring(1) == "9A EF 9A 24") //aqui van la uid de la tarjtea que previamente nos mostro el monitor serial*
* {
Serial.println("Bienvenido");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
if (content.substring(1) == "0A D9 83 25") //aqui van la uid de la tarjtea que previamente nos mostro el monitor serial*
* {
Serial.println("Bienvenido");
digitalWrite(chapa, HIGH);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(1500);
digitalWrite(chapa, LOW);
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
}*_