Go Down

Topic: RC-522 RFID (Read 132 times) previous topic - next topic

willypere

Oct 07, 2018, 06:59 pm Last Edit: Oct 08, 2018, 10:28 pm by surbyte Reason: Agregado de etiquetas de código/error
Hola buenas a todos! quería saber como puedo hacer que un led se encienda al acercar una tarjeta RFID, y como apagarlo acercando de nuevo la misma, y asi sucesivamente.

He conseguido hacer que el led se encienda al acercar la tarjeta, pero o se como hacer que se apague.

gracias por ayudarme!!

Code: [Select]
#include <SPI.h>
#include <MFRC522.h>

const int RST_PIN = 9;        // Pin 9 para el reset del RC522
const int SS_PIN = 10;        // Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc5221(SS_PIN, RST_PIN);   // Crear instancia del MFRC522

const int verde1 = 7;
const int rojo1 = 8;

byte validKey1[4] = { 0x86, 0x67, 0x39, 0x1F };  // codigo de la tarjeta valida

// funcion para escribir el identificador de la tarjeta en serial monitor
void printArray(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
     Serial.print(buffer[i] < 0x10 ? " 0" : " ");
     Serial.print(buffer[i], HEX);
  }
}

//Función para comparar dos vectores
bool isEqualArray(byte* arrayA, byte* arrayB, int length)
{
 for (int index = 0; index < length; index++)
 {
   if (arrayA[index] != arrayB[index]) return false;
 }
 return true;
}




int contador = 0;

 
void setup() {
 Serial.begin(9600); // Iniciar serial
 SPI.begin();        // Iniciar SPI
 mfrc5221.PCD_Init(); // Iniciar MFRC522
 pinMode(verde1,OUTPUT);


}

void loop() {
 // Detectar tarjeta

                                                             //ASIENTO 1:
 if (mfrc5221.PICC_IsNewCardPresent()){
   //Seleccionamos una tarjeta
   if (mfrc5221.PICC_ReadCardSerial()){
   
     // Comparar ID con las claves válidas
     if (isEqualArray(mfrc5221.uid.uidByte, validKey1, 4)){
   
       
       digitalWrite(verde1,HIGH);
       
       Serial.print(F("Card UID:"));
       printArray(mfrc5221.uid.uidByte, mfrc5221.uid.size);
       
       contador++;
       Serial.println(contador);
       delay(500);
     }
   
     
     // Finalizar lectura actual
     mfrc5221.PICC_HaltA();
   }
   
 delay(250);
 }

}

ArduMyth

Tienes un if() que enciende el led... no es muy difícil de entender que el caso opuesto a dicha condición es lo que buscas y la sintaxis de cómo apagar el led es con LOW.

Control+C y Control+V genera estos problemas.

harkonnen

Puedes leer el estado de una salida con digitalRead,  aunque este configurado como salida...
Entonces sólo tienes que leer e invertir el estado:
Code: [Select]


digitalWrite(verde1,!digitalRead (verde1));



Go Up