-
Notifications
You must be signed in to change notification settings - Fork 1
/
ControleRFID.ino
77 lines (69 loc) · 2.12 KB
/
ControleRFID.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
76
77
#include <SPI.h>
#include <MFRC522.h>
#define verde 6
#define vermelho 7
#define buzzer 8
#define sda 10
#define rst 9
String tagID = "";
bool liberado = false;
//Vetor de ID's cadastrados
String tagsPermitidas[] = {"3d7f7d63","75f8375f"};
MFRC522 RFID(sda, rst);
void setup() {
Serial.begin(9600); // Comunicação Serial
SPI.begin(); // Comunicacao SPI
RFID.PCD_Init(); // Leitor RFID
pinMode(verde, OUTPUT);
pinMode(vermelho, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
// Verificação de existência de tag
if ( !RFID.PICC_IsNewCardPresent() || !RFID.PICC_ReadCardSerial() ) {
delay(50);
return;
}
tagID = "";
// Estrutura de repetição padrão para coleta dos valores das tags pela função uid
for (byte i = 0; i < RFID.uid.size; i++) {
tagID.concat(String(RFID.uid.uidByte[i], HEX));
}
// Estrutura de repetição para comparação com as tags que permitimos no vetor
for (int i = 0; i < (sizeof(tagsPermitidas)/sizeof(String)); i++) {
if( tagID.equalsIgnoreCase(tagsPermitidas[i]) ){
liberado = true; //Libera tag
}
}
if(liberado == true){
acessoLiberado();
Serial.println("Tag Cadastrada: " + tagID); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
} else{
acessoNegado();
Serial.println("Tag Não Cadastrada: " + tagID); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
}
delay(1000); //1 seg até a próxima leitura
}
void acessoLiberado(){
int bips = 1; //quantidade de bips
for(int j=0; j<bips; j++){
tone(buzzer,1500); //Liga buzzer
digitalWrite(verde, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(verde, LOW);
delay(500);
}
liberado = false;
}
void acessoNegado(){
int bips = 2; //quantidade de bips
for(int j=0; j<bips; j++){
tone(buzzer,500); //Liga buzzer
digitalWrite(vermelho, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(vermelho, LOW);
delay(100);
}
}