aaa

Dependencies:   MFRC522 eeprom mbed

Files at this revision

API Documentation at this revision

Comitter:
thiagohuang
Date:
Sat Jul 08 01:24:12 2017 +0000
Parent:
0:fa7c728bf941
Commit message:
Arquivos do Projeto Final - Thiago e Walter Truman M

Changed in this revision

teste.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r fa7c728bf941 -r fd613df5ffd3 teste.cpp
--- a/teste.cpp	Wed Jul 05 20:41:03 2017 +0000
+++ b/teste.cpp	Sat Jul 08 01:24:12 2017 +0000
@@ -83,6 +83,7 @@
     return;        
 }
 
+/* Função "pula_linha" vai para a linha de baixo do LCD para escrita */
 void pula_linha(){    
     dc = 0;
     wait_ms(tms);
@@ -97,6 +98,7 @@
     return;
 }    
 
+/* Função "limpa_lcd" limpa a tela do LCD */
 void limpa_lcd(void){
     
     dc = 0;
@@ -112,6 +114,7 @@
     return;
 }
 
+/* Função "escreve_lcd" escreve a string passada na linha do LCD */
 void escreve_lcd (char *s){       
      
     while(*s){       
@@ -125,15 +128,17 @@
     return ;
 }
 
+/* Função "escreve_mem" colaca o dado passado na posição passada */
 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    
+    i2c.write(5*elementos+1+i, buf); wait_ms(1); //escreve na memoria o dado passado por referência    
 }
 
+/* Função "read_mem" lê a posição requisitada e retorna o seu valor */
 char read_mem(uint8_t posicao, uint8_t i){
     char x;
     int8_t buf, elementos;
@@ -144,12 +149,14 @@
         printf("A posicao requisitada excede o numero de elementos registrados na memoria\n\r");
         return -1;
     }else{
-        i2c.read(5*(posicao-1)+1+i, buf); wait_ms(1);
+        i2c.read(5*(posicao-1)+1+i, buf); wait_ms(1);  // Lê a posição requisitada e coloca na variável "buf"
         x=buf;
         return x;
     }
 }
 
+/* Função "pega_id" pega o ID do cartão aproximado
+   copia na string passada  */
 void pega_id (char *s){
  
     int i=0;
@@ -159,7 +166,7 @@
 
         inicio:
         
-        if(flag_mudamodo==1)
+        if(flag_mudamodo==1)   // Caso o usuário aperte algum botão, sai da função
             return;
         
         if ( ! RfChip.PICC_IsNewCardPresent()){     // Look for new cards
@@ -172,7 +179,7 @@
         LedGreen = 0;
         wait(0.3);
         LedGreen = 1;  
-        for (i=0; i < RfChip.uid.size; i++){            
+        for (i=0; i < RfChip.uid.size; i++){    // Copia o ID do cartão na string passada de parâmetro
             buf=RfChip.uid.uidByte[i];
             *(s+i)=buf;
         }
@@ -183,7 +190,7 @@
 }    
 
 /* Verifica se o ID passado ja esta na memoria
-   Caso ja esteja, o programa retorna 1. Caso contrario, retorna 0 */
+   Caso ja esteja, o programa retorna k+1. Caso contrario, retorna 0 */
 int jaexiste (char *idcartao){
     
     int k,i;
@@ -192,13 +199,17 @@
 
     i2c.read(0, elementos); wait_ms(1);   
     
-    for (k=0;k<elementos;k++){ 
-        for (i=0; i < 4; i++){
+    for (k=0;k<elementos;k++){ // Laço para andar na memória nos diversos cartões salvos
+        for (i=0; i < 4; i++){   // Salva o ID da memória na string auxiliar "compara"
                 i2c.read(5*k+1+i, buf); wait_ms(1);
                 compara[i]=buf;
         }
         
-        if ( (compara[0] == *(idcartao)) && (compara[1] == *(idcartao+1)) && (compara[2] == *(idcartao+2)) && (compara[3] == *(idcartao+3)) )
+        // Compara o ID do cartão aproximado com o ID da memória
+        if((compara[0] == *(idcartao))   &&
+           (compara[1] == *(idcartao+1)) &&
+           (compara[2] == *(idcartao+2)) &&
+           (compara[3] == *(idcartao+3)))
             return k+1;
         
     }
@@ -206,6 +217,7 @@
 
 }
 
+/* Função "printa_id" printa o ID passado por referência */
 void printa_id (char *id){
 
     int i;
@@ -213,14 +225,16 @@
     for (i=0; i<4 ; i++){
         printf("%d ",*(id+i));   
     }
-    
+    return;
 }
 
-
+/* Função "colocamemoria" insere as informações do cartão 
+    aproximado (ID e senha inserida) na memória */
 void colocamemoria(char *idcartao){
     
     int8_t elementos,i,buf,senha;
     
+    // Escreve na última posição da memória o ID do novo cartão cadastrado
     for (i=0; i < 4; i++){ 
         escreve_mem( *(idcartao+i), i);
     }
@@ -231,7 +245,7 @@
     
     i2c.read(0, elementos); wait_ms(1);  
     elementos++;
-    i2c.write(5*elementos, buf); wait_ms(1);
+    i2c.write(5*elementos, buf); wait_ms(1);  //Escreve a senha inserida pela usuário na memória
     
     printf("\n\n\rCartao de ID ");
     printa_id(idcartao);
@@ -243,6 +257,8 @@
     return;
 }
 
+/* A função modo_cadastro faz o cadastro dos novos cartões solicitando que o usuário 
+    insera uma senha relacionado ao ID cadastrado    */
 void modo_cadastro (){
        
     char id_cartao[4];
@@ -253,43 +269,49 @@
     printf("Aproxime Cartao do Leitor. \n\r");
     
     pega_id(id_cartao);    // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
+    // Trecho abaixo faz com que o modo seja trocado caso o usuário tenha solicitado um modo diferente
     if(flag_mudamodo==1){
         flag_mudamodo=0; 
         return;
     }
     wait_ms(10);
     
-    if( jaexiste(id_cartao)!=0 ){
+    if( jaexiste(id_cartao)!=0 ){      // Caso o cartão já esteja cadastrado
         printf("O cartao de ID "); 
         printa_id(id_cartao);       
         printf("ja esta cadastrado.\n\r");
     }
-    else
-        colocamemoria(id_cartao);    
+    else // Caso o cartão não esteja cadastrado
+        colocamemoria(id_cartao);    // Função "colocamemoria" cadastra o novo cartão
     
     wait_ms(50);
 
     return ;
 }
 
+/* A função "modo_descadastro" pega o ID do cartão aproximado e descadastra 
+    caso o cartão seja encontrado na memória */
 void modo_descadastro (){
     
     char id_cartao[4],aux[5];
     int8_t elementos,k,i,buf;
     
-    i2c.read(0, elementos); wait_ms(1);  
+    i2c.read(0, elementos); wait_ms(1);  // Variável "elementos" recebe a quantidade de cartões cadastrados
 
     printf("\n\rMODO DESCADASTRO ATIVADO.\n\r");
     printf("Aproxime Cartao do Leitor. \n\r");
     
     pega_id(id_cartao);    // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
+    // Trecho abaixo faz com que o modo seja trocado caso o usuário tenha solicitado um modo diferente
     if(flag_mudamodo==1){
         flag_mudamodo=0; 
         return;
     }
+    
     k=jaexiste(id_cartao);
-    if( k!=0 ){
-        if(elementos==1){
+    if( k!=0 ){ // Entra caso o ID do cartão aproximado seja encontrado na memória
+        //Caso haja apenas um elemento, esse elemento é apagado e muda-se automaticamente para o Modo Cadastro
+        if(elementos==1){ 
             printf("Cartao de ID ");
             printa_id(id_cartao);
             printf("descadastrado com sucesso.\n\r");
@@ -301,13 +323,15 @@
             flag_descadastro=0;
             return;
         }
-        else{
+        /* Caso haja mais de um cartão cadastrado, copia-se o último elemento na string "aux"
+             e coloca na posição do cartão encontrado */
+        else{ 
             for (i=0; i < 5; i++){
                 i2c.read(5*(elementos-1)+1+i, buf); wait_ms(1);
                 aux[i]=buf;
             }
             for (i=0; i < 5; i++){
-                i2c.write(5*(k-1)+1+i, aux[i]); wait_ms(1);//escreve na memoria    
+                i2c.write(5*(k-1)+1+i, aux[i]); wait_ms(1); //Escreve na posição descadastrada o último elemento
             }           
             printf("Elemento %d desregistrado com sucesso.\n\r",k);
             elementos--;
@@ -315,7 +339,7 @@
             return; 
         }
     }
-    else{
+    else{ //Entra se k=0 (quando não o cartão não é encontrado na memória)
         printf("Cartao nao esta registrado.\n\r");
     }
     
@@ -323,38 +347,46 @@
     return ;
 }
 
+/* A função "modo_identificacao" corresponde ao modo de leitura de cartões 
+    para permitir o acesso do usuario */
 void modo_identificacao (){
 
     int k;
     char id_cartao[4];
     int8_t elementos,senha,buf;
     
-    i2c.read(0, elementos); wait_ms(1);  
+    i2c.read(0, elementos); wait_ms(1);    // Coloca em "elementos" o numero de cartões cadastrados na memória 
     printf("\n\rMODO IDENTIFICACAO ATIVADO\n\r");
     printf("Aproxime Cartao do Leitor. \n\r");
     
     pega_id(id_cartao);    // Detecta o ID do cartao aproximado e coloca no vetor id_cartao
+    // Trecho abaixo faz com que o modo seja trocado caso o usuário tenha solicitado um modo diferente
     if(flag_mudamodo==1){
         flag_mudamodo=0; 
         return;
     }
-    k=jaexiste(id_cartao);
-    if(k!=0){
+    /* Variável "k" recebe a posição na memória do cartão aproximado. Caso o cartão aproximado não seja encontrado, k recebe 0 */
+    k=jaexiste(id_cartao);  
+    if(k!=0){  // Entra caso o cartão seja encontrado na memória
         printf("Digite a senha: \n\r");
         scanf("%d",&senha);
-        i2c.read(5*k, buf); wait_ms(1);
-        
-        if (senha==buf) printf("Senha Correta - Acesso Permitido.\n\r");
+        printf("Senha inserida: %d\n\r",senha);
+        i2c.read(5*k, buf); wait_ms(1); //Variável "buf" recebe a senha cadastrada na memória
+        //Comparações da senha digitada com a senha cadastrada
+        if (senha==buf) printf("Senha Correta - Acesso Permitido.\n\r"); 
         else printf("Senha Incorreta - Acesso Negado.\n\r");      
     }
-    else
+    else //Entra caso k seja 0
         printf("Cartao Nao Esta Cadastrado.\n\r\n\r");
 
     return;
         
 }
 
-
+//  As 3 funções abaixo setam as flags necessárias para que a função correta
+//     seja ativada quando a tecla correspondente é pressionada.
+//  A condição no início muda "flag_mudamodo" para indicar que haverá
+//     uma mudança no modo ativo do programa. 
 void isr1() {
     
     if(flag_identificacao==0)
@@ -364,7 +396,6 @@
     flag_cadastro=0;
     flag_descadastro=0;
 }
-
 void isr2() {
     
     if(flag_descadastro==0)
@@ -372,11 +403,8 @@
     
     flag_identificacao=0;
     flag_cadastro=0;
-    flag_descadastro=1;
-    
+    flag_descadastro=1;   
 }
-
-
 void isr3() {
 
     if(flag_cadastro==0)
@@ -385,7 +413,6 @@
     flag_identificacao=0;
     flag_cadastro=1;
     flag_descadastro=0;
-
 }
 
 
@@ -407,32 +434,32 @@
     
     i2c.read(0,elementos); wait_ms(1);
     
-    button1.rise(&isr1);
-    button2.fall(&isr2);
-    button3.fall(&isr3);
+    button1.rise(&isr1); // Ativa quando a tecla "*" é pressionada
+    button2.fall(&isr2); // Ativa quando a tecla "0" é pressionada
+    button3.fall(&isr3); // Ativa quando a tecla "#" é pressionada
     
     while (true){     
 
-        if(flag_identificacao==1){
-            limpa_lcd();
+        if(flag_identificacao==1){      // Entra caso o botão correspondente seja pressionado
+            limpa_lcd(); 
             escreve_lcd ("IDENTICACAO");
             pula_linha();
             escreve_lcd ("PASSE CARTAO");
-            modo_identificacao();
+            modo_identificacao();   // Ativa o modo identificação
         }
-        if(flag_cadastro==1){
+        if(flag_cadastro==1){     // Entra caso o botão correspondente seja pressionado
             limpa_lcd();
             escreve_lcd ("CADASTRO");
             pula_linha();
             escreve_lcd ("PASSE CARTAO");
-            modo_cadastro();
+            modo_cadastro();        // Ativa o modo cadastro
         }
-        if(flag_descadastro==1){
+        if(flag_descadastro==1){        // Entra caso o botão correspondente seja pressionado
             limpa_lcd();
             escreve_lcd ("DESCADASTRO");
             pula_linha();
             escreve_lcd ("PASSE CARTAO");
-            modo_descadastro();
+            modo_descadastro();         // Ativa o modo descadastro
         }        
 
     }