![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
final1
Fork of Final by
main.cpp
- Committer:
- walterlma
- Date:
- 2017-07-04
- Revision:
- 0:45fd5f651e03
File content as of revision 0:45fd5f651e03:
#include "mbed.h" #include "eeprom.h" #include "MFRC522.h" //KL25Z Pins for MFRC522 SPI interface #define SPI_MOSI PTC6 #define SPI_MISO PTC7 #define SPI_SCLK PTC5 #define SPI_CS PTC4 // KL25Z Pin for MFRC522 reset #define MF_RESET PTC3 //Pinos EEPROM #define SDA PTC2 // I2C SDA pin #define SCL PTC1 // I2C SCL pin #define EEPROM_CONTROL_BYTE 0xA0 #define I2C_READ 0x01 #define OFF 1 #define ON 0 DigitalOut LedRed (LED_RED); DigitalOut LedGreen (LED_GREEN); EEPROM i2c(SDA, SCL, 0, EEPROM::T24C16); // T24C01 should work for the 24AA02E48 eeprom MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET); //I2C i2c(PTE0, PTE1); // sda, scl on KL25Z Serial pc(USBTX, USBRX); // tx, rx void escreve_mem(int8_t dado, uint8_t i){ int8_t buf, elementos; LedGreen = 0; i2c.read(0, elementos); wait_ms(1); buf=dado; i2c.write(5*elementos+1+i, buf); wait_ms(1);//escreve na memoria } /*char read_mem(uint8_t elemento, uint8_t i){ char x; uint8_t buf, elementos; i2c.read(0, elementos); wait_ms(1); if (elementos < elemento){ printf("não há numero de elementos na memória"); return=-1; }else{ i2c.read(5*(elemento-1)+1+i, buf); wait_ms(1); x=buf; return x; } }*/ /*int varre_mem( uint8_t *s){ int8_t elementos=0; uint8_t i = 0,buf; uint8_t *compara; int k; i2c.read(0, elementos); wait_ms(1); for (k=0;k==elementos;k++){ for (i=0; i < RfChip.uid.size; i++){ i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1); compara[i]=buf; } if (compara==s) return 0; //retorna zero se encontrar id ja registrado } return 1; //retorna 1 se nao encontrar id igual }*/ int main(void) { int encontrou=0; int t,jafalou=0,flag_registro=1, flag_identificacao=0, senha; char idcartao[4],compara[4];//vetor que grava id do cartao char x; int8_t buf=0, elementos,elemento,buf1; uint8_t i = 0,k; pc.baud(9600); // Init. RC522 Chip RfChip.PCD_Init(); i2c.write(0, 0); wait_ms(1);//escreve 0 elementos na memoria while (true){ i2c.read(0, elementos); wait_ms(1); if(elementos==0 && jafalou==0){ printf("Nenhum cartao registrado!\n\r"); printf("Favor aproximar os cartoes a serem registrados\n\r"); jafalou=1; } inicio: LedGreen = 1; // Look for new cards if ( ! RfChip.PICC_IsNewCardPresent()) { wait_ms(500); continue; } // Select one of the cards if ( ! RfChip.PICC_ReadCardSerial()) { wait_ms(500); continue; } if(flag_registro==1){ //verifica se cartao ja foi registrado if (elementos != 0){ for (i=0; i < RfChip.uid.size; i++){ buf=RfChip.uid.uidByte[i]; idcartao[i]=buf; } i2c.read(0, elementos); wait_ms(1); for (k=0;k<elementos;k++){ for (i=0; i < RfChip.uid.size; i++){ i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1); compara[i]=buf; } if ((compara[0] == idcartao[0]) && (compara[1] == idcartao[1]) && (compara[2] == idcartao[2]) && (compara[3] == idcartao[3])){ printf("cartao ja registrado\n\r"); goto inicio; } } } //escrita na memoria printf("\n\r"); //if(flag_registro==1){ for (i=0; i < RfChip.uid.size; i++){ escreve_mem(RfChip.uid.uidByte[i], i); } elementos++; i2c.write(0, elementos); wait_ms(1); i2c.read(0, elementos); wait_ms(1); printf("\n\r"); printf("elementos: %d\n\r", elementos); //} //le o que esta na memoria printf("memoria: "); //elemento=2; //if (elemento<elementos){ // printf("nao exite esse numero de elementos na memoria"); //}else { for (i=0; i < RfChip.uid.size; i++){ i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1); x=buf; printf(" %d", x); } //} /*for (i=0; i < RfChip.uid.size; i++){ idcartao[i]=read_mem(elemento, i); } for (i=0;i<4;i++){ printf(" %d", idcartao[i]); }*/ printf("\n\r"); printf("\n\r"); wait_ms(200); printf("Senha:"); scanf("%d", &senha); printf("senha %d\n\r", senha); buf=senha; i2c.write(5*elementos, buf); wait_ms(1); printf("Deseja continuar a registrar cartoes?\n\r"); printf("1:Sim 2:Nao\n\r"); scanf("%d", &t); //le botao se 1 goto comeco e anda pos na memoria se 2 continua printf("\n\r"); if (t==1)goto inicio; if (t==2){ printf("Fim registros!\n\r"); flag_registro=0; } } else{ printf("Passe cartao para obter acesso\n\r"); for (i=0; i < RfChip.uid.size; i++){ buf=RfChip.uid.uidByte[i]; idcartao[i]=buf; } i2c.read(0, elementos); wait_ms(1); for (k=0;k<elementos;k++){ for (i=0; i < RfChip.uid.size; i++){ i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1); compara[i]=buf; } if ((compara[0] == idcartao[0]) && (compara[1] == idcartao[1]) && (compara[2] == idcartao[2]) && (compara[3] == idcartao[3])){ printf("cartao encontrado!\n\r"); printf("Digite a senha\n\r"); scanf("%d", &senha); printf("senha %d\n\r", senha); buf1=senha; encontrou=1; } } if(encontrou==1){ encontrou=0; i2c.read(5*elementos, buf); wait_ms(1); if (buf1==buf){ printf("acesso permitido\n\r"); goto inicio; }else { printf("acesso negado\n\r"); goto inicio; } } } } }