SHOW:
|
|
- or go back to the newest paste.
1 | ||
2 | #include <MFRC522.h> //Inclui a biblioteca MFRC522.h | |
3 | - | |
3 | + | #include <SPI.h> |
4 | #define resetRFID 13 //Define resetRFID como 13 | |
5 | #define cancela 8 //Define cancela como 8 | |
6 | - | #define cancela 8 //Define cancela como 8 |
6 | + | #define lampada 7 //Define lampada como 7 |
7 | - | #define lampada 7 //Define lampada como 7 |
7 | + | |
8 | String tag_CARTAO = "66006C3D4770"; //Cria a variável tag_CARTAO com a ID do Cartão Branco | |
9 | - | |
9 | + | |
10 | int i; //Variável para contagem | |
11 | ||
12 | void setup(){ | |
13 | ||
14 | Serial.begin(9600); //Inicia a serial com um baud rate de 9600 | |
15 | - | |
15 | + | |
16 | ||
17 | ||
18 | pinMode(resetRFID, OUTPUT); //Configura o pino D13 como saída | |
19 | - | |
19 | + | pinMode(lampada,OUTPUT); //Configura o pino D7 como saída |
20 | ||
21 | ||
22 | digitalWrite(resetRFID, LOW); //Coloca o pino de reset do módulo MFRC522 em nível baixo(resetRFID, LOW); | |
23 | - | |
23 | + | delay(5); //Aguarda 5 milissegundos |
24 | digitalWrite(resetRFID, HIGH); //Coloca o pino de reset do módulo MFRC522 em nível alto(resetRFID, HIGH); | |
25 | - | pinMode(resetRFID, OUTPUT); //Configura o pino D13 como saída |
25 | + | delay(5); //Aguarda 5 milissegundos |
26 | - | pinMode(lampada,OUTPUT); //Configura o pino D7 como saída |
26 | + | |
27 | - | |
27 | + | |
28 | ||
29 | } | |
30 | - | delay(5); //Aguarda 5 milissegundos |
30 | + | |
31 | - | digitalWrite(resetRFID, HIGH); //Coloca o pino de reset do módulo MFRC522 em nível alto(resetRFID, HIGH); |
31 | + | |
32 | - | delay(5); //Aguarda 5 milissegundos |
32 | + | |
33 | ||
34 | - | |
34 | + | |
35 | void loop () | |
36 | { | |
37 | ||
38 | - | |
38 | + | |
39 | ||
40 | - | |
40 | + | |
41 | { | |
42 | ||
43 | - | { |
43 | + | le_tag(); //Executa a função de leitura da TAG |
44 | identifica_tag(); //Identifica ao o que essa ID pertence (Cartão ou Cápsula) | |
45 | - | |
45 | + | limpa_tag(); //Executa a função para limpar a ID e resetar o módulo MFRC522 |
46 | } | |
47 | ||
48 | - | { |
48 | + | |
49 | ||
50 | - | le_tag(); //Executa a função de leitura da TAG |
50 | + | delay(100); //Aguarda 100 milissegundos |
51 | - | identifica_tag(); //Identifica ao o que essa ID pertence (Cartão ou Cápsula) |
51 | + | |
52 | - | limpa_tag(); //Executa a função para limpar a ID e resetar o módulo MFRC522 |
52 | + | |
53 | - | } |
53 | + | |
54 | } | |
55 | - | |
55 | + | |
56 | ||
57 | - | delay(100); //Aguarda 100 milissegundos |
57 | + | |
58 | ||
59 | - | |
59 | + | |
60 | void le_tag() //Função que lê a TAG e armazena a ID da TAG na variável tag_lida | |
61 | { | |
62 | ||
63 | - | |
63 | + | |
64 | ||
65 | - | |
65 | + | i=0; //Zera a variável para leitura |
66 | while(Serial.available() > 0) //Enquanto a Serial receber dados (ID) | |
67 | { | |
68 | - | { |
68 | + | tag_lida[i] = Serial.read(); //Armazena o caractere que entrou na serial na posição da tag_lida |
69 | i++; //Incrementa a variável de contagem | |
70 | - | |
70 | + | |
71 | } | |
72 | - | i=0; //Zera a variável para leitura |
72 | + | |
73 | - | while(Serial.available() > 0) //Enquanto a Serial receber dados (ID) |
73 | + | |
74 | - | { |
74 | + | |
75 | - | tag_lida[i] = Serial.read(); //Armazena o caractere que entrou na serial na posição da tag_lida |
75 | + | |
76 | - | i++; //Incrementa a variável de contagem |
76 | + | |
77 | for(i=0;i<13;i++) Serial.print(tag_lida[i]); //Pega cada posição da ID e imprime a mesma na serial | |
78 | Serial.println(); //Pula linha na serial | |
79 | ||
80 | - | |
80 | + | |
81 | ||
82 | } | |
83 | ||
84 | - | for(i=0;i<13;i++) Serial.print(tag_lida[i]); //Pega cada posição da ID e imprime a mesma na serial |
84 | + | |
85 | - | Serial.println(); //Pula linha na serial |
85 | + | |
86 | ||
87 | - | |
87 | + | |
88 | void limpa_tag() //Função que limpa a variável tag_lida e reseta o módulo MFRC522 para nova leitura | |
89 | { | |
90 | ||
91 | - | |
91 | + | |
92 | ||
93 | - | |
93 | + | |
94 | delay(5); //Aguarda 5 milissegundos | |
95 | digitalWrite(resetRFID, HIGH); //Coloca o pino de reset do módulo MFRC522 em nível alto | |
96 | - | { |
96 | + | delay(5); //Aguarda 5 milissegundos |
97 | ||
98 | - | |
98 | + | |
99 | ||
100 | for(i=0;i<13;i++) tag_lida[i] = '0'; //Laço para limpar todas as posições da variável tag_lida | |
101 | - | delay(5); //Aguarda 5 milissegundos |
101 | + | |
102 | - | digitalWrite(resetRFID, HIGH); //Coloca o pino de reset do módulo MFRC522 em nível alto |
102 | + | |
103 | - | delay(5); //Aguarda 5 milissegundos |
103 | + | |
104 | } | |
105 | - | |
105 | + | |
106 | ||
107 | ||
108 | ||
109 | - | |
109 | + | |
110 | void identifica_tag() //Função que identifica a TAG | |
111 | { | |
112 | ||
113 | - | |
113 | + | |
114 | ||
115 | - | |
115 | + | boolean validar = true; //Cria uma variável booleana para validar a TAG |
116 | ||
117 | ||
118 | - | { |
118 | + | |
119 | //Laço para comparar o ID da tag_lida com o ID da tag_CARTAO | |
120 | - | |
120 | + | for(i=0 ; i<13 ; i++) |
121 | { | |
122 | - | boolean validar = true; //Cria uma variável booleana para validar a TAG |
122 | + | |
123 | if(tag_lida[i+1] != tag_CARTAO[i]) //Se ID da tag_lida for diferente da ID da tag_cartao | |
124 | - | |
124 | + | { |
125 | validar = false; //Desvalida a tag_CARTAO | |
126 | } | |
127 | - | for(i=0 ; i<13 ; i++) |
127 | + | |
128 | - | { |
128 | + | } |
129 | //=========================================================== | |
130 | - | if(tag_lida[i+1] != tag_CARTAO[i]) //Se ID da tag_lida for diferente da ID da tag_cartao |
130 | + | |
131 | - | { |
131 | + | |
132 | - | validar = false; //Desvalida a tag_CARTAO |
132 | + | |
133 | - | } |
133 | + | |
134 | { | |
135 | ||
136 | - | //=========================================================== |
136 | + | |
137 | if(!(digitalRead(lampada))) //Se a lâmpada estiver desacionada | |
138 | - | |
138 | + | { |
139 | digitalWrite(lampada, HIGH); //Liga a lâmpada | |
140 | ||
141 | - | { |
141 | + | Serial.println("CAPSULA >> Liga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Liga LAMPADA" |
142 | } | |
143 | ||
144 | - | if(!(digitalRead(lampada))) //Se a lâmpada estiver desacionada |
144 | + | |
145 | - | { |
145 | + | |
146 | - | digitalWrite(lampada, HIGH); //Liga a lâmpada |
146 | + | |
147 | - | |
147 | + | { |
148 | - | Serial.println("CAPSULA >> Liga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Liga LAMPADA" |
148 | + | digitalWrite(lampada, LOW); //Desliga a lâmpada |
149 | - | } |
149 | + | Serial.println("CAPSULA >> Desliga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Desliga LAMPADA" |
150 | } | |
151 | - | |
151 | + | //======================== |
152 | ||
153 | delay(2000); //Aguarda 2 segundos para efetuar uma nova leitura; | |
154 | - | { |
154 | + | |
155 | - | digitalWrite(lampada, LOW); //Desliga a lâmpada |
155 | + | } |
156 | - | Serial.println("CAPSULA >> Desliga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Desliga LAMPADA" |
156 | + | |
157 | - | } |
157 | + | |
158 | - | //======================== |
158 | + | |
159 | validar = true; //Valida a variável validar para nova comparação de IDs | |
160 | ||
161 | ||
162 | ||
163 | //Laço para comparar o ID da tag_lida com o ID da tag_CAPSULA | |
164 | - | |
164 | + | for(i=0 ; i<13 ; i++) |
165 | { | |
166 | - | validar = true; //Valida a variável validar para nova comparação de IDs |
166 | + | |
167 | if(tag_lida[i+1] != tag_CAPSULA[i]) //Se ID da tag_lida for diferente da ID da tag_CAPSULA | |
168 | - | |
168 | + | { |
169 | validar=false; //Desvalida a tag_CAPSULA | |
170 | } | |
171 | - | for(i=0 ; i<13 ; i++) |
171 | + | |
172 | - | { |
172 | + | } |
173 | //=========================================================== | |
174 | - | if(tag_lida[i+1] != tag_CAPSULA[i]) //Se ID da tag_lida for diferente da ID da tag_CAPSULA |
174 | + | |
175 | - | { |
175 | + | |
176 | - | validar=false; //Desvalida a tag_CAPSULA |
176 | + | |
177 | - | } |
177 | + | if(validar == true) //Se a tag_CAPSULA nao for desvalidada |
178 | { | |
179 | //Altera estado da Lâmpada | |
180 | - | //=========================================================== |
180 | + | if(!(digitalRead(lampada))) //Se a lâmpada estiver desacionada |
181 | { | |
182 | - | |
182 | + | digitalWrite(lampada, HIGH); //Liga a lâmpada |
183 | Serial.println("CAPSULA >> Liga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Liga LAMPADA" | |
184 | - | if(validar == true) //Se a tag_CAPSULA nao for desvalidada |
184 | + | } |
185 | - | { |
185 | + | |
186 | - | //Altera estado da Lâmpada |
186 | + | else |
187 | - | if(!(digitalRead(lampada))) //Se a lâmpada estiver desacionada |
187 | + | { |
188 | - | { |
188 | + | digitalWrite(lampada, LOW); //Desliga a lâmpada |
189 | - | digitalWrite(lampada, HIGH); //Liga a lâmpada |
189 | + | Serial.println("CAPSULA >> Desliga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Desliga LAMPADA" |
190 | - | Serial.println("CAPSULA >> Liga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Liga LAMPADA" |
190 | + | } |
191 | - | } |
191 | + | //============================ |
192 | ||
193 | - | else |
193 | + | |
194 | - | { |
194 | + | } |
195 | - | digitalWrite(lampada, LOW); //Desliga a lâmpada |
195 | + | |
196 | - | Serial.println("CAPSULA >> Desliga LAMPADA"); //Imprime na serial a frase "CAPSULA >> Desliga LAMPADA" |
196 | + | |
197 | - | } |
197 | + | |
198 | - | //============================ |
198 | + |