aaa

Dependencies:   MFRC522 eeprom mbed

Committer:
thiagohuang
Date:
Wed Jul 05 20:41:03 2017 +0000
Revision:
0:fa7c728bf941
Child:
1:fd613df5ffd3
Versao final nao comentada

Who changed what in which revision?

UserRevisionLine numberNew contents of line
thiagohuang 0:fa7c728bf941 1 #include "mbed.h"
thiagohuang 0:fa7c728bf941 2 #include "eeprom.h"
thiagohuang 0:fa7c728bf941 3 #include "MFRC522.h"
thiagohuang 0:fa7c728bf941 4 #include "stdlib.h"
thiagohuang 0:fa7c728bf941 5
thiagohuang 0:fa7c728bf941 6 //interrupcao botao
thiagohuang 0:fa7c728bf941 7 InterruptIn button1(PTA13);
thiagohuang 0:fa7c728bf941 8 InterruptIn button2(PTA17);
thiagohuang 0:fa7c728bf941 9 InterruptIn button3(PTA16);
thiagohuang 0:fa7c728bf941 10 DigitalOut led1(LED1);
thiagohuang 0:fa7c728bf941 11 DigitalOut led2(LED2);
thiagohuang 0:fa7c728bf941 12 DigitalOut flash(LED4);
thiagohuang 0:fa7c728bf941 13 //Timer debounce;
thiagohuang 0:fa7c728bf941 14
thiagohuang 0:fa7c728bf941 15 //LCD
thiagohuang 0:fa7c728bf941 16 #define tuss 2
thiagohuang 0:fa7c728bf941 17 #define tusl 20
thiagohuang 0:fa7c728bf941 18 #define tms 2
thiagohuang 0:fa7c728bf941 19
thiagohuang 0:fa7c728bf941 20 SPI lcd(PTE3, PTE1, PTE2);
thiagohuang 0:fa7c728bf941 21 DigitalOut cs(PTE4);
thiagohuang 0:fa7c728bf941 22 DigitalOut res(PTD5);
thiagohuang 0:fa7c728bf941 23 DigitalOut dc(PTC12);
thiagohuang 0:fa7c728bf941 24
thiagohuang 0:fa7c728bf941 25 //KL25Z Pins for MFRC522 SPI interface
thiagohuang 0:fa7c728bf941 26 #define SPI_MOSI PTC6
thiagohuang 0:fa7c728bf941 27 #define SPI_MISO PTC7
thiagohuang 0:fa7c728bf941 28 #define SPI_SCLK PTC5
thiagohuang 0:fa7c728bf941 29 #define SPI_CS PTC4
thiagohuang 0:fa7c728bf941 30 // KL25Z Pin for MFRC522 reset
thiagohuang 0:fa7c728bf941 31 #define MF_RESET PTC3
thiagohuang 0:fa7c728bf941 32
thiagohuang 0:fa7c728bf941 33 //Pinos EEPROM
thiagohuang 0:fa7c728bf941 34 #define SDA PTC2 // I2C SDA pin
thiagohuang 0:fa7c728bf941 35 #define SCL PTC1 // I2C SCL pin
thiagohuang 0:fa7c728bf941 36 #define EEPROM_CONTROL_BYTE 0xA0
thiagohuang 0:fa7c728bf941 37 #define I2C_READ 0x01
thiagohuang 0:fa7c728bf941 38
thiagohuang 0:fa7c728bf941 39 #define OFF 1
thiagohuang 0:fa7c728bf941 40 #define ON 0
thiagohuang 0:fa7c728bf941 41
thiagohuang 0:fa7c728bf941 42 DigitalOut LedRed (LED_RED);
thiagohuang 0:fa7c728bf941 43 DigitalOut LedGreen (LED_GREEN);
thiagohuang 0:fa7c728bf941 44
thiagohuang 0:fa7c728bf941 45 EEPROM i2c(SDA, SCL, 0, EEPROM::T24C16); // T24C01 should work for the 24AA02E48 eeprom
thiagohuang 0:fa7c728bf941 46 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);
thiagohuang 0:fa7c728bf941 47
thiagohuang 0:fa7c728bf941 48 //I2C i2c(PTE0, PTE1); // sda, scl on KL25Z
thiagohuang 0:fa7c728bf941 49 Serial pc(USBTX, USBRX); // tx, rx
thiagohuang 0:fa7c728bf941 50
thiagohuang 0:fa7c728bf941 51 int flag_identificacao=1,flag_cadastro=0,flag_descadastro=0,flag_mudamodo=0;
thiagohuang 0:fa7c728bf941 52
thiagohuang 0:fa7c728bf941 53 void init_LCD(){
thiagohuang 0:fa7c728bf941 54 res = 0;
thiagohuang 0:fa7c728bf941 55 dc = 0;
thiagohuang 0:fa7c728bf941 56 cs = 1;
thiagohuang 0:fa7c728bf941 57 wait(0.1);
thiagohuang 0:fa7c728bf941 58 res = 1;
thiagohuang 0:fa7c728bf941 59 // k = 0;
thiagohuang 0:fa7c728bf941 60 cs = 0;
thiagohuang 0:fa7c728bf941 61 lcd.write(0x3C);
thiagohuang 0:fa7c728bf941 62 wait_us(tuss);
thiagohuang 0:fa7c728bf941 63 cs = 1;
thiagohuang 0:fa7c728bf941 64 wait_ms(tms);
thiagohuang 0:fa7c728bf941 65 cs = 0;
thiagohuang 0:fa7c728bf941 66 lcd.write(0x0C);
thiagohuang 0:fa7c728bf941 67 wait_us(tuss);
thiagohuang 0:fa7c728bf941 68 cs = 1;
thiagohuang 0:fa7c728bf941 69 wait_us(tusl);
thiagohuang 0:fa7c728bf941 70 cs = 0;
thiagohuang 0:fa7c728bf941 71 lcd.write(0x01);
thiagohuang 0:fa7c728bf941 72 wait_us(tuss);
thiagohuang 0:fa7c728bf941 73 cs = 1;
thiagohuang 0:fa7c728bf941 74 wait_ms(tms);
thiagohuang 0:fa7c728bf941 75 cs = 0;
thiagohuang 0:fa7c728bf941 76 lcd.write(0x06);
thiagohuang 0:fa7c728bf941 77 wait_us(tuss);
thiagohuang 0:fa7c728bf941 78 cs = 1;
thiagohuang 0:fa7c728bf941 79 wait_ms(tms);
thiagohuang 0:fa7c728bf941 80 dc = 1;
thiagohuang 0:fa7c728bf941 81 wait_ms(tms);
thiagohuang 0:fa7c728bf941 82
thiagohuang 0:fa7c728bf941 83 return;
thiagohuang 0:fa7c728bf941 84 }
thiagohuang 0:fa7c728bf941 85
thiagohuang 0:fa7c728bf941 86 void pula_linha(){
thiagohuang 0:fa7c728bf941 87 dc = 0;
thiagohuang 0:fa7c728bf941 88 wait_ms(tms);
thiagohuang 0:fa7c728bf941 89 cs = 0;
thiagohuang 0:fa7c728bf941 90 lcd.write(0xC0);
thiagohuang 0:fa7c728bf941 91 wait_us(tuss);
thiagohuang 0:fa7c728bf941 92 cs = 1;
thiagohuang 0:fa7c728bf941 93 wait_ms(tms);
thiagohuang 0:fa7c728bf941 94 dc = 1;
thiagohuang 0:fa7c728bf941 95 wait_ms(tms);
thiagohuang 0:fa7c728bf941 96
thiagohuang 0:fa7c728bf941 97 return;
thiagohuang 0:fa7c728bf941 98 }
thiagohuang 0:fa7c728bf941 99
thiagohuang 0:fa7c728bf941 100 void limpa_lcd(void){
thiagohuang 0:fa7c728bf941 101
thiagohuang 0:fa7c728bf941 102 dc = 0;
thiagohuang 0:fa7c728bf941 103 wait_ms(tms);
thiagohuang 0:fa7c728bf941 104 cs = 0;
thiagohuang 0:fa7c728bf941 105 lcd.write(0x01);
thiagohuang 0:fa7c728bf941 106 wait_us(tuss);
thiagohuang 0:fa7c728bf941 107 cs = 1;
thiagohuang 0:fa7c728bf941 108 wait_ms(tms);
thiagohuang 0:fa7c728bf941 109 dc = 1;
thiagohuang 0:fa7c728bf941 110 wait_ms(tms);
thiagohuang 0:fa7c728bf941 111
thiagohuang 0:fa7c728bf941 112 return;
thiagohuang 0:fa7c728bf941 113 }
thiagohuang 0:fa7c728bf941 114
thiagohuang 0:fa7c728bf941 115 void escreve_lcd (char *s){
thiagohuang 0:fa7c728bf941 116
thiagohuang 0:fa7c728bf941 117 while(*s){
thiagohuang 0:fa7c728bf941 118 cs = 0;
thiagohuang 0:fa7c728bf941 119 lcd.write(*s);
thiagohuang 0:fa7c728bf941 120 wait_us(tuss);
thiagohuang 0:fa7c728bf941 121 cs = 1;
thiagohuang 0:fa7c728bf941 122 wait_ms(tms);
thiagohuang 0:fa7c728bf941 123 s++;
thiagohuang 0:fa7c728bf941 124 }
thiagohuang 0:fa7c728bf941 125 return ;
thiagohuang 0:fa7c728bf941 126 }
thiagohuang 0:fa7c728bf941 127
thiagohuang 0:fa7c728bf941 128 void escreve_mem(int8_t dado, uint8_t i){
thiagohuang 0:fa7c728bf941 129 int8_t buf, elementos;
thiagohuang 0:fa7c728bf941 130
thiagohuang 0:fa7c728bf941 131 LedGreen = 0;
thiagohuang 0:fa7c728bf941 132 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 133 buf=dado;
thiagohuang 0:fa7c728bf941 134 i2c.write(5*elementos+1+i, buf); wait_ms(1);//escreve na memoria
thiagohuang 0:fa7c728bf941 135 }
thiagohuang 0:fa7c728bf941 136
thiagohuang 0:fa7c728bf941 137 char read_mem(uint8_t posicao, uint8_t i){
thiagohuang 0:fa7c728bf941 138 char x;
thiagohuang 0:fa7c728bf941 139 int8_t buf, elementos;
thiagohuang 0:fa7c728bf941 140
thiagohuang 0:fa7c728bf941 141 i2c.read(0, elementos);
thiagohuang 0:fa7c728bf941 142 wait_ms(1);
thiagohuang 0:fa7c728bf941 143 if (elementos < posicao){
thiagohuang 0:fa7c728bf941 144 printf("A posicao requisitada excede o numero de elementos registrados na memoria\n\r");
thiagohuang 0:fa7c728bf941 145 return -1;
thiagohuang 0:fa7c728bf941 146 }else{
thiagohuang 0:fa7c728bf941 147 i2c.read(5*(posicao-1)+1+i, buf); wait_ms(1);
thiagohuang 0:fa7c728bf941 148 x=buf;
thiagohuang 0:fa7c728bf941 149 return x;
thiagohuang 0:fa7c728bf941 150 }
thiagohuang 0:fa7c728bf941 151 }
thiagohuang 0:fa7c728bf941 152
thiagohuang 0:fa7c728bf941 153 void pega_id (char *s){
thiagohuang 0:fa7c728bf941 154
thiagohuang 0:fa7c728bf941 155 int i=0;
thiagohuang 0:fa7c728bf941 156 int8_t buf=0;
thiagohuang 0:fa7c728bf941 157
thiagohuang 0:fa7c728bf941 158 while(true){
thiagohuang 0:fa7c728bf941 159
thiagohuang 0:fa7c728bf941 160 inicio:
thiagohuang 0:fa7c728bf941 161
thiagohuang 0:fa7c728bf941 162 if(flag_mudamodo==1)
thiagohuang 0:fa7c728bf941 163 return;
thiagohuang 0:fa7c728bf941 164
thiagohuang 0:fa7c728bf941 165 if ( ! RfChip.PICC_IsNewCardPresent()){ // Look for new cards
thiagohuang 0:fa7c728bf941 166 wait_ms(500);
thiagohuang 0:fa7c728bf941 167 goto inicio;
thiagohuang 0:fa7c728bf941 168 }
thiagohuang 0:fa7c728bf941 169 if ( ! RfChip.PICC_ReadCardSerial()){ // Select one of the cards
thiagohuang 0:fa7c728bf941 170
thiagohuang 0:fa7c728bf941 171 }
thiagohuang 0:fa7c728bf941 172 LedGreen = 0;
thiagohuang 0:fa7c728bf941 173 wait(0.3);
thiagohuang 0:fa7c728bf941 174 LedGreen = 1;
thiagohuang 0:fa7c728bf941 175 for (i=0; i < RfChip.uid.size; i++){
thiagohuang 0:fa7c728bf941 176 buf=RfChip.uid.uidByte[i];
thiagohuang 0:fa7c728bf941 177 *(s+i)=buf;
thiagohuang 0:fa7c728bf941 178 }
thiagohuang 0:fa7c728bf941 179
thiagohuang 0:fa7c728bf941 180 break ;
thiagohuang 0:fa7c728bf941 181 }
thiagohuang 0:fa7c728bf941 182 return ;
thiagohuang 0:fa7c728bf941 183 }
thiagohuang 0:fa7c728bf941 184
thiagohuang 0:fa7c728bf941 185 /* Verifica se o ID passado ja esta na memoria
thiagohuang 0:fa7c728bf941 186 Caso ja esteja, o programa retorna 1. Caso contrario, retorna 0 */
thiagohuang 0:fa7c728bf941 187 int jaexiste (char *idcartao){
thiagohuang 0:fa7c728bf941 188
thiagohuang 0:fa7c728bf941 189 int k,i;
thiagohuang 0:fa7c728bf941 190 int8_t buf,elementos;
thiagohuang 0:fa7c728bf941 191 char compara[4];
thiagohuang 0:fa7c728bf941 192
thiagohuang 0:fa7c728bf941 193 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 194
thiagohuang 0:fa7c728bf941 195 for (k=0;k<elementos;k++){
thiagohuang 0:fa7c728bf941 196 for (i=0; i < 4; i++){
thiagohuang 0:fa7c728bf941 197 i2c.read(5*k+1+i, buf); wait_ms(1);
thiagohuang 0:fa7c728bf941 198 compara[i]=buf;
thiagohuang 0:fa7c728bf941 199 }
thiagohuang 0:fa7c728bf941 200
thiagohuang 0:fa7c728bf941 201 if ( (compara[0] == *(idcartao)) && (compara[1] == *(idcartao+1)) && (compara[2] == *(idcartao+2)) && (compara[3] == *(idcartao+3)) )
thiagohuang 0:fa7c728bf941 202 return k+1;
thiagohuang 0:fa7c728bf941 203
thiagohuang 0:fa7c728bf941 204 }
thiagohuang 0:fa7c728bf941 205 return 0;
thiagohuang 0:fa7c728bf941 206
thiagohuang 0:fa7c728bf941 207 }
thiagohuang 0:fa7c728bf941 208
thiagohuang 0:fa7c728bf941 209 void printa_id (char *id){
thiagohuang 0:fa7c728bf941 210
thiagohuang 0:fa7c728bf941 211 int i;
thiagohuang 0:fa7c728bf941 212
thiagohuang 0:fa7c728bf941 213 for (i=0; i<4 ; i++){
thiagohuang 0:fa7c728bf941 214 printf("%d ",*(id+i));
thiagohuang 0:fa7c728bf941 215 }
thiagohuang 0:fa7c728bf941 216
thiagohuang 0:fa7c728bf941 217 }
thiagohuang 0:fa7c728bf941 218
thiagohuang 0:fa7c728bf941 219
thiagohuang 0:fa7c728bf941 220 void colocamemoria(char *idcartao){
thiagohuang 0:fa7c728bf941 221
thiagohuang 0:fa7c728bf941 222 int8_t elementos,i,buf,senha;
thiagohuang 0:fa7c728bf941 223
thiagohuang 0:fa7c728bf941 224 for (i=0; i < 4; i++){
thiagohuang 0:fa7c728bf941 225 escreve_mem( *(idcartao+i), i);
thiagohuang 0:fa7c728bf941 226 }
thiagohuang 0:fa7c728bf941 227
thiagohuang 0:fa7c728bf941 228 printf("Digite a senha: ");
thiagohuang 0:fa7c728bf941 229 scanf("%d", &senha);
thiagohuang 0:fa7c728bf941 230 buf=senha;
thiagohuang 0:fa7c728bf941 231
thiagohuang 0:fa7c728bf941 232 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 233 elementos++;
thiagohuang 0:fa7c728bf941 234 i2c.write(5*elementos, buf); wait_ms(1);
thiagohuang 0:fa7c728bf941 235
thiagohuang 0:fa7c728bf941 236 printf("\n\n\rCartao de ID ");
thiagohuang 0:fa7c728bf941 237 printa_id(idcartao);
thiagohuang 0:fa7c728bf941 238 printf("com SENHA %d cadastrado com sucesso.\n\r",senha);
thiagohuang 0:fa7c728bf941 239
thiagohuang 0:fa7c728bf941 240
thiagohuang 0:fa7c728bf941 241 i2c.write(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 242
thiagohuang 0:fa7c728bf941 243 return;
thiagohuang 0:fa7c728bf941 244 }
thiagohuang 0:fa7c728bf941 245
thiagohuang 0:fa7c728bf941 246 void modo_cadastro (){
thiagohuang 0:fa7c728bf941 247
thiagohuang 0:fa7c728bf941 248 char id_cartao[4];
thiagohuang 0:fa7c728bf941 249 int8_t elementos;
thiagohuang 0:fa7c728bf941 250
thiagohuang 0:fa7c728bf941 251 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 252 printf("\n\rMODO CADASTRO ATIVADO.\n\r");
thiagohuang 0:fa7c728bf941 253 printf("Aproxime Cartao do Leitor. \n\r");
thiagohuang 0:fa7c728bf941 254
thiagohuang 0:fa7c728bf941 255 pega_id(id_cartao); // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
thiagohuang 0:fa7c728bf941 256 if(flag_mudamodo==1){
thiagohuang 0:fa7c728bf941 257 flag_mudamodo=0;
thiagohuang 0:fa7c728bf941 258 return;
thiagohuang 0:fa7c728bf941 259 }
thiagohuang 0:fa7c728bf941 260 wait_ms(10);
thiagohuang 0:fa7c728bf941 261
thiagohuang 0:fa7c728bf941 262 if( jaexiste(id_cartao)!=0 ){
thiagohuang 0:fa7c728bf941 263 printf("O cartao de ID ");
thiagohuang 0:fa7c728bf941 264 printa_id(id_cartao);
thiagohuang 0:fa7c728bf941 265 printf("ja esta cadastrado.\n\r");
thiagohuang 0:fa7c728bf941 266 }
thiagohuang 0:fa7c728bf941 267 else
thiagohuang 0:fa7c728bf941 268 colocamemoria(id_cartao);
thiagohuang 0:fa7c728bf941 269
thiagohuang 0:fa7c728bf941 270 wait_ms(50);
thiagohuang 0:fa7c728bf941 271
thiagohuang 0:fa7c728bf941 272 return ;
thiagohuang 0:fa7c728bf941 273 }
thiagohuang 0:fa7c728bf941 274
thiagohuang 0:fa7c728bf941 275 void modo_descadastro (){
thiagohuang 0:fa7c728bf941 276
thiagohuang 0:fa7c728bf941 277 char id_cartao[4],aux[5];
thiagohuang 0:fa7c728bf941 278 int8_t elementos,k,i,buf;
thiagohuang 0:fa7c728bf941 279
thiagohuang 0:fa7c728bf941 280 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 281
thiagohuang 0:fa7c728bf941 282 printf("\n\rMODO DESCADASTRO ATIVADO.\n\r");
thiagohuang 0:fa7c728bf941 283 printf("Aproxime Cartao do Leitor. \n\r");
thiagohuang 0:fa7c728bf941 284
thiagohuang 0:fa7c728bf941 285 pega_id(id_cartao); // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
thiagohuang 0:fa7c728bf941 286 if(flag_mudamodo==1){
thiagohuang 0:fa7c728bf941 287 flag_mudamodo=0;
thiagohuang 0:fa7c728bf941 288 return;
thiagohuang 0:fa7c728bf941 289 }
thiagohuang 0:fa7c728bf941 290 k=jaexiste(id_cartao);
thiagohuang 0:fa7c728bf941 291 if( k!=0 ){
thiagohuang 0:fa7c728bf941 292 if(elementos==1){
thiagohuang 0:fa7c728bf941 293 printf("Cartao de ID ");
thiagohuang 0:fa7c728bf941 294 printa_id(id_cartao);
thiagohuang 0:fa7c728bf941 295 printf("descadastrado com sucesso.\n\r");
thiagohuang 0:fa7c728bf941 296 elementos--;
thiagohuang 0:fa7c728bf941 297 i2c.write(0,elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 298 printf("Nao Ha Cartao Cadastrado, Ativando Modo Cadastro...\n\r");
thiagohuang 0:fa7c728bf941 299 flag_identificacao=0;
thiagohuang 0:fa7c728bf941 300 flag_cadastro=1;
thiagohuang 0:fa7c728bf941 301 flag_descadastro=0;
thiagohuang 0:fa7c728bf941 302 return;
thiagohuang 0:fa7c728bf941 303 }
thiagohuang 0:fa7c728bf941 304 else{
thiagohuang 0:fa7c728bf941 305 for (i=0; i < 5; i++){
thiagohuang 0:fa7c728bf941 306 i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1);
thiagohuang 0:fa7c728bf941 307 aux[i]=buf;
thiagohuang 0:fa7c728bf941 308 }
thiagohuang 0:fa7c728bf941 309 for (i=0; i < 5; i++){
thiagohuang 0:fa7c728bf941 310 i2c.write(5*(k-1)+1+i, aux[i]); wait_ms(1);//escreve na memoria
thiagohuang 0:fa7c728bf941 311 }
thiagohuang 0:fa7c728bf941 312 printf("Elemento %d desregistrado com sucesso.\n\r",k);
thiagohuang 0:fa7c728bf941 313 elementos--;
thiagohuang 0:fa7c728bf941 314 i2c.write(0,elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 315 return;
thiagohuang 0:fa7c728bf941 316 }
thiagohuang 0:fa7c728bf941 317 }
thiagohuang 0:fa7c728bf941 318 else{
thiagohuang 0:fa7c728bf941 319 printf("Cartao nao esta registrado.\n\r");
thiagohuang 0:fa7c728bf941 320 }
thiagohuang 0:fa7c728bf941 321
thiagohuang 0:fa7c728bf941 322
thiagohuang 0:fa7c728bf941 323 return ;
thiagohuang 0:fa7c728bf941 324 }
thiagohuang 0:fa7c728bf941 325
thiagohuang 0:fa7c728bf941 326 void modo_identificacao (){
thiagohuang 0:fa7c728bf941 327
thiagohuang 0:fa7c728bf941 328 int k;
thiagohuang 0:fa7c728bf941 329 char id_cartao[4];
thiagohuang 0:fa7c728bf941 330 int8_t elementos,senha,buf;
thiagohuang 0:fa7c728bf941 331
thiagohuang 0:fa7c728bf941 332 i2c.read(0, elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 333 printf("\n\rMODO IDENTIFICACAO ATIVADO\n\r");
thiagohuang 0:fa7c728bf941 334 printf("Aproxime Cartao do Leitor. \n\r");
thiagohuang 0:fa7c728bf941 335
thiagohuang 0:fa7c728bf941 336 pega_id(id_cartao); // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
thiagohuang 0:fa7c728bf941 337 if(flag_mudamodo==1){
thiagohuang 0:fa7c728bf941 338 flag_mudamodo=0;
thiagohuang 0:fa7c728bf941 339 return;
thiagohuang 0:fa7c728bf941 340 }
thiagohuang 0:fa7c728bf941 341 k=jaexiste(id_cartao);
thiagohuang 0:fa7c728bf941 342 if(k!=0){
thiagohuang 0:fa7c728bf941 343 printf("Digite a senha: \n\r");
thiagohuang 0:fa7c728bf941 344 scanf("%d",&senha);
thiagohuang 0:fa7c728bf941 345 i2c.read(5*k, buf); wait_ms(1);
thiagohuang 0:fa7c728bf941 346
thiagohuang 0:fa7c728bf941 347 if (senha==buf) printf("Senha Correta - Acesso Permitido.\n\r");
thiagohuang 0:fa7c728bf941 348 else printf("Senha Incorreta - Acesso Negado.\n\r");
thiagohuang 0:fa7c728bf941 349 }
thiagohuang 0:fa7c728bf941 350 else
thiagohuang 0:fa7c728bf941 351 printf("Cartao Nao Esta Cadastrado.\n\r\n\r");
thiagohuang 0:fa7c728bf941 352
thiagohuang 0:fa7c728bf941 353 return;
thiagohuang 0:fa7c728bf941 354
thiagohuang 0:fa7c728bf941 355 }
thiagohuang 0:fa7c728bf941 356
thiagohuang 0:fa7c728bf941 357
thiagohuang 0:fa7c728bf941 358 void isr1() {
thiagohuang 0:fa7c728bf941 359
thiagohuang 0:fa7c728bf941 360 if(flag_identificacao==0)
thiagohuang 0:fa7c728bf941 361 flag_mudamodo=1;
thiagohuang 0:fa7c728bf941 362
thiagohuang 0:fa7c728bf941 363 flag_identificacao=1;
thiagohuang 0:fa7c728bf941 364 flag_cadastro=0;
thiagohuang 0:fa7c728bf941 365 flag_descadastro=0;
thiagohuang 0:fa7c728bf941 366 }
thiagohuang 0:fa7c728bf941 367
thiagohuang 0:fa7c728bf941 368 void isr2() {
thiagohuang 0:fa7c728bf941 369
thiagohuang 0:fa7c728bf941 370 if(flag_descadastro==0)
thiagohuang 0:fa7c728bf941 371 flag_mudamodo=1;
thiagohuang 0:fa7c728bf941 372
thiagohuang 0:fa7c728bf941 373 flag_identificacao=0;
thiagohuang 0:fa7c728bf941 374 flag_cadastro=0;
thiagohuang 0:fa7c728bf941 375 flag_descadastro=1;
thiagohuang 0:fa7c728bf941 376
thiagohuang 0:fa7c728bf941 377 }
thiagohuang 0:fa7c728bf941 378
thiagohuang 0:fa7c728bf941 379
thiagohuang 0:fa7c728bf941 380 void isr3() {
thiagohuang 0:fa7c728bf941 381
thiagohuang 0:fa7c728bf941 382 if(flag_cadastro==0)
thiagohuang 0:fa7c728bf941 383 flag_mudamodo=1;
thiagohuang 0:fa7c728bf941 384
thiagohuang 0:fa7c728bf941 385 flag_identificacao=0;
thiagohuang 0:fa7c728bf941 386 flag_cadastro=1;
thiagohuang 0:fa7c728bf941 387 flag_descadastro=0;
thiagohuang 0:fa7c728bf941 388
thiagohuang 0:fa7c728bf941 389 }
thiagohuang 0:fa7c728bf941 390
thiagohuang 0:fa7c728bf941 391
thiagohuang 0:fa7c728bf941 392 int main(void) {
thiagohuang 0:fa7c728bf941 393
thiagohuang 0:fa7c728bf941 394 int8_t elementos=0;
thiagohuang 0:fa7c728bf941 395
thiagohuang 0:fa7c728bf941 396 pc.baud(9600);
thiagohuang 0:fa7c728bf941 397 //debounce.start();
thiagohuang 0:fa7c728bf941 398
thiagohuang 0:fa7c728bf941 399
thiagohuang 0:fa7c728bf941 400 //Init. RC522 Chip
thiagohuang 0:fa7c728bf941 401 RfChip.PCD_Init();
thiagohuang 0:fa7c728bf941 402
thiagohuang 0:fa7c728bf941 403 //init LCD
thiagohuang 0:fa7c728bf941 404 init_LCD();
thiagohuang 0:fa7c728bf941 405
thiagohuang 0:fa7c728bf941 406 i2c.write(0, 0); wait_ms(1);//escreve 0 elementos na memoria
thiagohuang 0:fa7c728bf941 407
thiagohuang 0:fa7c728bf941 408 i2c.read(0,elementos); wait_ms(1);
thiagohuang 0:fa7c728bf941 409
thiagohuang 0:fa7c728bf941 410 button1.rise(&isr1);
thiagohuang 0:fa7c728bf941 411 button2.fall(&isr2);
thiagohuang 0:fa7c728bf941 412 button3.fall(&isr3);
thiagohuang 0:fa7c728bf941 413
thiagohuang 0:fa7c728bf941 414 while (true){
thiagohuang 0:fa7c728bf941 415
thiagohuang 0:fa7c728bf941 416 if(flag_identificacao==1){
thiagohuang 0:fa7c728bf941 417 limpa_lcd();
thiagohuang 0:fa7c728bf941 418 escreve_lcd ("IDENTICACAO");
thiagohuang 0:fa7c728bf941 419 pula_linha();
thiagohuang 0:fa7c728bf941 420 escreve_lcd ("PASSE CARTAO");
thiagohuang 0:fa7c728bf941 421 modo_identificacao();
thiagohuang 0:fa7c728bf941 422 }
thiagohuang 0:fa7c728bf941 423 if(flag_cadastro==1){
thiagohuang 0:fa7c728bf941 424 limpa_lcd();
thiagohuang 0:fa7c728bf941 425 escreve_lcd ("CADASTRO");
thiagohuang 0:fa7c728bf941 426 pula_linha();
thiagohuang 0:fa7c728bf941 427 escreve_lcd ("PASSE CARTAO");
thiagohuang 0:fa7c728bf941 428 modo_cadastro();
thiagohuang 0:fa7c728bf941 429 }
thiagohuang 0:fa7c728bf941 430 if(flag_descadastro==1){
thiagohuang 0:fa7c728bf941 431 limpa_lcd();
thiagohuang 0:fa7c728bf941 432 escreve_lcd ("DESCADASTRO");
thiagohuang 0:fa7c728bf941 433 pula_linha();
thiagohuang 0:fa7c728bf941 434 escreve_lcd ("PASSE CARTAO");
thiagohuang 0:fa7c728bf941 435 modo_descadastro();
thiagohuang 0:fa7c728bf941 436 }
thiagohuang 0:fa7c728bf941 437
thiagohuang 0:fa7c728bf941 438 }
thiagohuang 0:fa7c728bf941 439
thiagohuang 0:fa7c728bf941 440 }