-
Notifications
You must be signed in to change notification settings - Fork 0
/
Autenticator.ino
75 lines (66 loc) · 2.6 KB
/
Autenticator.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
* Lector e identificador de tarjetas.
* Facundo Correa 2021
*/
#include <SPI.h>
#include <MFRC522.h>
#define buzz 5
#define RST_PIN 9 //Pin 9 para el reset del RC522
#define SS_PIN 10 //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522
void setup() {
Serial.begin(9600); //Iniciamos La comunicacion serial
SPI.begin(); //Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos el MFRC522
Serial.println("Control de acceso:");
pinMode(buzz, OUTPUT);
}
byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0x00, 0x00, 0x00, 0x00} ; //código del usuario 1
byte Usuario2[4]= {0x00, 0x00, 0x00, 0x00} ; //código del usuario 2
void loop() {
// Revisamos si hay nuevas tarjetas presentes
if ( mfrc522.PICC_IsNewCardPresent())
{
//Seleccionamos una tarjeta
if ( mfrc522.PICC_ReadCardSerial())
{
// Enviamos serialemente su UID
Serial.print(F("Card 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);
ActualUID[i]=mfrc522.uid.uidByte[i];
}
Serial.print(" ");
//comparamos los UID para determinar si es uno de nuestros usuarios
if(compareArray(ActualUID,Usuario1)){
Serial.println("Acceso concedido...");
digitalWrite(buzz, HIGH);
delay(500);
digitalWrite(buzz, LOW);}
else if(compareArray(ActualUID,Usuario2))
Serial.println("Acceso concedido...");
else{
Serial.println("Acceso denegado...");
digitalWrite(buzz, HIGH);
delay(300);
digitalWrite(buzz, LOW);
delay(30);
digitalWrite(buzz, HIGH);
delay(300);
digitalWrite(buzz, LOW);}
// Terminamos la lectura de la tarjeta tarjeta actual
mfrc522.PICC_HaltA();
}
}
}
//Función para comparar dos vectores
boolean compareArray(byte array1[],byte array2[])
{
if(array1[0] != array2[0])return(false);
if(array1[1] != array2[1])return(false);
if(array1[2] != array2[2])return(false);
if(array1[3] != array2[3])return(false);
return(true);
}