Hola, estoy aprendiendo Arduino. Tengo un lector RFID modelo RC522 y lo quiero usar con tarjetas.
(https://i1.wp.com/saber.patagoniatec.com/wp-content/uploads/2016/07/Tutorial-RFID-1.jpg?w=1080&ssl=1)
Todos, absolutamente todos los ejemplos que he encontrado son usando el metodo polling, es decir meter una rutina que constantemente esté verificando si se leyo algo, dentro de la funcion loop del programa Arduino.
Mi duda es si algun heroe sin capa podria darme un ejemplo basico de como usar el pin IRQ del RC522 asi poder manejar la lectura con las interrupciones de mi Arduino. Tambien tengo un arduino Mega como opcion B
[quote author=nsigned link=topic=505194.msg2223199#msg2223199 date=1591420849]
Hola, estoy aprendiendo Arduino. Tengo un lector RFID modelo RC522 y lo quiero usar con tarjetas.
(https://i1.wp.com/saber.patagoniatec.com/wp-content/uploads/2016/07/Tutorial-RFID-1.jpg?w=1080&ssl=1)
Todos, absolutamente todos los ejemplos que he encontrado son usando el metodo polling, es decir meter una rutina que constantemente esté verificando si se leyo algo, dentro de la funcion loop del programa Arduino.
Mi duda es si algun heroe sin capa podria darme un ejemplo basico de como usar el pin IRQ del RC522 asi poder manejar la lectura con las interrupciones de mi Arduino. Tambien tengo un arduino Mega como opcion B
[/quote]
Que tal hommie? no tengo esa tarjeta si quiero es la PN532, por lo visto en el loop debes tener un condicional y con una variable booleana volatile, que sete a false una vez entrado en ese condicional.
#include <SPI.h>
#include <MFRC522.h>
#include <String.h>
#define RST_PIN 8
#define SS_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
volatile bool cardPresent; //variable como flag
void setup()
{
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
mfrc522.PCD_WriteRegister(MFRC522::ComIrqReg, 0x80); //Clear interrupts
mfrc522.PCD_WriteRegister(MFRC522::ComIEnReg, 0x7F); //Enable all interrupts
mfrc522.PCD_WriteRegister(MFRC522::DivIEnReg, 0x14);
Serial.println(F("Ready..."));
attachInterrupt(0, isr, RISING);
}
void loop()
{
if (cardPresent)
{
Serial.println(F("Interrupt"));
mfrc522.PCD_WriteRegister(MFRC522::ComIrqReg, 0x80); //Clear interrupts
cardPresent = false;
}
}
void isr()
{
cardPresent = true;
}
}
Pasate por aqui https://arduino.stackexchange.com/questions/9656/using-interrrupts-with-rc522
Y sino funciona, por educacion aunque sea, ayuda con el codigo LMAOOO :xD si quieres.
Mañana lo pruebo. Pero Ya habia visto ese ejemplo y creo que seguiria siendo polling, ademas ahi no usan el puerto IRQ del RC522