//Programa LeerBloqueAccion2 (Depurado de lineas del anterior) //Adaptado Profesor Bolaños 2018 - ENSAYADO //Leer bloque elegido (aqui BLOQUE 41) //Si el bloque elegido contiene la CONTRASEÑA entonces el acceso // es CONCEDIDO... #include #include #define RST_PIN 9 // Configurable, see typical pin layout above #define SS_PIN 10 // Configurable, see typical pin layout above //Variables globales---------------------------- int num=41;// Variable para indicar numero de bloque a leer byte permitido[10] ={1,2,3,4};//Aqui se define contraseña //-----------Fin variables globales------------- MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance //----------------------------------------- void(* resetFunc) (void) = 0; // esta es la funcion de reset //----------------------------------------- void setup() { pinMode(7, OUTPUT); // configura ‘pin 7’ como salida delay(3000); Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 card } void loop() { digitalWrite(7,LOW );//Apaga LED testigo // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory. MFRC522::MIFARE_Key key; for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF; // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) return; Serial.print(F("Num. de Serie unico:")); //Dump UID for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.print(F(" PICC type: ")); // Dump PICC type MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); byte buffer[34]; byte block; MFRC522::StatusCode status; byte len; block = num; //Se especifica se leera _____------______-----______ Serial.println(F("Authenticating using key A...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); Serial.println("Re Iniciando..."); Serial.println("+++++++++++++++++++++++++++++++++++++++++++++"); delay(2000); resetFunc(); // reseteo el Arduino return; } Serial.println(" "); //Se leera el bloque elegido //---------------leo el bloque num----------- byte blockAddr = num; //Se especifica que bloque se leera _____------______-----______ buffer[18]; byte size = sizeof(buffer); Serial.println(); // Read data from the block Serial.print(F("Cargando dato del bloque ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = (MFRC522::StatusCode) mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); Serial.println("Re Iniciando..."); delay(2000); resetFunc(); // reseteo el Arduino } Serial.print(F("Dato en el bloque ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(); //------------Fin lectura del bloque num-------------- mfrc522.PICC_HaltA(); // Halt PICC mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD //Reinicio luego de un tiempo delay(2000); resetFunc(); // reseteo el Arduino } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX);//Muestra en HEX } Serial.println();//Renglon en blanco for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.write(buffer[i]);//Muestra contenido para leer } //Cmparamos valor leido con contraseña---------------------- if (((buffer[0] -48)== permitido[0]) && ((buffer[1]-48)== permitido[1])&& ((buffer[2]-48)== permitido[2])&& ((buffer[3]-48)== permitido[3])) { Serial.println("Coincidencia"); digitalWrite(7,HIGH );//Enciende LED testigo delay(5000); digitalWrite(7,LOW );//Apaga LED testigo } else { Serial.println(); Serial.println(" No hubo Coincidencia"); } //Termina de comparar---------------------------------------- }