Problema RFID-RC522. No lectura

Bueno, mi problema es el siguiente.

#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
 
#define SS_PIN 10
#define RST_PIN 9
#define beep_pin 8
#define green_pin 7
#define red_pin 6



MFRC522 mfrc522(SS_PIN, RST_PIN);   // Creamos Sensor De Tarjeta MFRC522 Instancia
LiquidCrystal_I2C lcd(0x27,16,2);  //  Creamos Pantalla LCD Instancia

void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  
  pinMode(beep_pin,OUTPUT);
  digitalWrite(beep_pin,LOW);
  pinMode(green_pin,OUTPUT);
  digitalWrite(green_pin,LOW);
  pinMode(red_pin,OUTPUT);
  digitalWrite(red_pin,LOW);
  
  
  lcd.begin(16, 2);
  lcd.setCursor(3, 1);
  lcd.backlight();
  lcd.print("Bienvenido!!");
  lcd.setCursor(0, 0);
  lcd.print("Programa Listo");
  delay(1500);
  lcd.clear();  
  
   
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Acerca la tarjea al sensor porfavor...");
  Serial.println();

}
void loop() 
{
  digitalWrite(beep_pin, LOW);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Pase La Tarjeta");
  lcd.setCursor(0, 1);
  lcd.print("Porfavor....");
  delay(300);
  
  // 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) == "B3 4F BB 20") //change here the UID of the card/cards that you want to give access
  {
   
   
   
   
    digitalWrite(beep_pin,HIGH);
   
    lcd.setCursor(0, 0);
    lcd.print("ID : ");
    lcd.print(content.substring(1));
    lcd.setCursor(0, 1);
    lcd.print("Acceso Autorizado");
    Serial.println("Acceso Autorizado");
    digitalWrite(green_pin, HIGH);
     delay(700);
    delay(700);      
    digitalWrite(green_pin, LOW);
 
  } 
 else   {
    digitalWrite(beep_pin,HIGH);
    lcd.setCursor(0, 0);
    lcd.print("ID : ");
    lcd.print(content.substring(1));
    lcd.setCursor(0, 1);
    lcd.print("Accesso Denegado");
    Serial.println(" Accesso Denegado");
    digitalWrite(red_pin, HIGH);
     delay(700);
    delay(700);
    digitalWrite(red_pin, LOW);
     }
} 

Tengo este codigo que NO ES DE MI AUTORIA, es sacado de un video en youtube solo hice unas cuantas modificaciones, pero al momento de conectar la placa arduino al PC, no lee los tags, se demora demasiado y hay que "rogarle" para que pueda empezar a funcionar, pero una vez lee este funciona de manera adecuada hasta que se desconecta, y al volver a conectarse no lee. Espero me puedan ayudar graciasss :b

Por favor adjunta el código de acuerdo a las Normas del foro, punto 7, y usa la opción de Autoformato de la IDE antes de volver a copiar y pegar el código para facilitarnos la lectura, es para tu propio beneficio.

Por otro lado, ¿qué es lo que esperas de estas 2 sentencias

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

?

return no se utiliza en ese contexto, se usa en funciones que deben retornar algún valor (o no).

Hola
¿Su código no muestra nada en la pantalla ni en el monitor del puerto, o hay algún mensaje? Si los hay, cópialos en el foro.

Entonces usted me dice que las puedo eliminar y tal vez por eso es el problema?

Cuando prendo el arduino UNO, En el monitor aparece el mensaje que tengo destinado a la espera de la lectura que es "Pase la tarjeta porfavor..." y tambien este mismo mensaje en la pantalla lcd, pero al acercar la tarjeta con tecnologia RFID o el tag no lee

No, te pregunté qué es lo que quieres lograr con esas sentencias para ver como "arreglarlo".

No entiendo como infieres que dije que borres algo... :thinking:

Agregue este código al final de la setup() y escriba el resultado:

  bool result = mfrc522.PCD_PerformSelfTest(); // perform the test
  Serial.println(F("-----------------------------"));
  Serial.print(F("Result: "));
  if (result)
    Serial.println(F("OK"));
  else
    Serial.println(F("DEFECT or UNKNOWN"));
  Serial.println();

debido a esto

delay(700);
delay(700);   

Las librerías tienen ejemplos. Los ejemplos en general son eficientes.
Porque no empiezas con un ejemplo que responda con agilidad y luego lo vas mejorando?

Esto es para ponerle el tiempo al bombillo y al tiempo que mantiene el mensaje de acceso concedido en la pantalla.

This is to time the bulb while keeping the access granted message on the screen.

He descubierto que al conectarlo con el adaptador a la luz o corriente eléctrica el codigo funciona y lee correctamente, pero al estar con la usb al pc no, ¿Alguna posible respuesta a esto?
I have discovered that when connecting it with the adapter to the light or electric current the code works and reads correctly, but when it is with the usb to the pc it does not, any possible answer to this?

Moderador
Porque pones una versión en inglés de tus respuestas en los post #9 y #10?
Estamos en el foro en español. No hace falta poner nada traducido al inglés, salvo que sea una información de un datasheet.

Moderador:
Doble posteo.


El otro hilo lo acabo de cerrar.
Proximo doble posteo tendrás una sanción de 1 dia sin poder ingresar al foro.

Si no subes un esquema al menos lista que pines de una placa tienes conectados con los pines de la otra porque preguntando siempre lo mismo no van a cambiar las respuestas.

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