IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Problème affichage sur écran lcd avec module RFID


Sujet :

Arduino

  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut Problème affichage sur écran lcd avec module RFID
    Bonjour, je travaille sur l'amélioration d'une porte automatique et je dois permettre l'accès aux personnes autorisées.
    J'ai donc décidé de prendre une module RFID VMA405, un module relai et écran LCD RGB Blacklight v2.0.
    Je dois afficher sur l'écran LCD le nom de la personne en fonction de la carte présentée, voici mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    #include <SPI.h>      
    #include <RFID.h>    
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10     
    #define RST_PIN 9    
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                   
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = 0;
    int access2 = 0;
     
    void setup(){
     
        Serial.begin(9600);                                 
        SPI.begin();                                          
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);
     
        lcd.begin(16, 2);                                    
        lcd.setRGB(colorR, colorG, colorB);                  
        lcd.print("Veuillez montrer");                      
        lcd.setCursor(2, 1);                                 
        lcd.print("votre  badge");
     
    }
     
    void loop(){
     
        if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){                                   
     
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) { 
     
                          access1 = 0;
                          break;
     
                      } else {
     
                          access1 = 1;
                      }
                  }
     
                  if(access1) break;
     
                }
     
            }
                  if(rfid.readCardSerial()){                                   
     
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {
     
                          access2 = 0;
                          break;
     
                      } else {
     
                          access2 = 1;
                      }
                  }
                  if(access2) break;
                }
     
            }  
     
            switch (access1 = 1 || access2 = 1) {
     
              case access1 = 1 :
     
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Nom1");
               delay(2000);
               lcd.clear();
     
               delay(1000);
               digitalWrite(relaisPin, HIGH);                          
               delay (2000);
               digitalWrite(relaisPin, LOW);                          
               delay(2000);
     
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");
               break;
     
               case access2 = 1 :
     
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Nom2");
               delay(2000);
               lcd.clear();
     
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         
               delay (2000);
               digitalWrite(relaisPin, LOW);                          
               delay(2000);
     
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");
               break;
     
               default :
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
     
               delay(2000);
     
               lcd.clear();
     
               delay (2000);
     
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");
            }  
     
           } 
           rfid.halt();       
        }
    et voici le message d'erreur qu'il m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    F:\Revue 2\Test_final\Test_final.ino: In function 'void loop()':
     
    Test_final:74: error: lvalue required as left operand of assignment
     
             switch (access1 = 1 || access2 = 1) {
     
                                            ^
     
    Test_final:75: error: expression '(access1 = 1)' is not a constant-expression
     
               case access1 = 1 :
     
                              ^
     
    Test_final:75: error: expression '(access1 = 1)' is not a constant-expression
     
    Test_final:91: error: expression '(access2 = 1)' is not a constant-expression
     
                case access2 = 1 :
     
                               ^
     
    Test_final:91: error: expression '(access2 = 1)' is not a constant-expression
     
    exit status 1
    lvalue required as left operand of assignment

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Commence par revoir la syntaxe du switch...case en C (en français)

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Y'a-t-il moyen de passer par autre chose qu'un switch/case ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Une condition if devrait suffire ici, non ?

  5. #5
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    J'ai essayé de revenir sur une version antérieure en utilisant le if de la détection de la carte pour voir ce qui ne fonctionnait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    #include <SPI.h>      
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10    
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                  
    int card2[][5] = {{156,160,140,171,27}};
     
    bool access1 = false;
    bool access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                  
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                          
        lcd.begin(16, 2);                                   
        lcd.setRGB(colorR, colorG, colorB);                  
        lcd.print("Veuillez montrer");                       
        lcd.setCursor(2, 1);                                 
        lcd.print("votre  badge");
     
    }
     
    void loop(){
     
        if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     //lecture des numéros du badge
              Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");  
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {                
                          access1 = false;
                          Serial.println("access 1 non valide");
     
                      } else {
                          access1 = true;
                          Serial.println("access 1 valide");
                      }
                      if(access1) break;
                  }
     
                }
     
            }
                  if(rfid.readCardSerial()){                                   
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println(""); 
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {                
                          access2 = false;
                          Serial.println("access 2 non valide");
     
                      } else {
                          access2 = true;
                          Serial.println("access 2 valide");
                      }
                      if(access2) break;
                  }
     
                }
     
            }
        }  
     
     
            rfid.halt();         
           }
    Le problème étant que quand je présente la carte 1, elle passe par: "access 1 validé" puis "access 1 non validé"
    Et la carte 2 passe seulement par "access 1 non validé" et n'arrive pas à l'accès 2

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Tu as deux boucles for imbriquées avec un seul break dans la boucle intérieure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for
    {   
      for
      {    
        if  
        {
          break 
        }
      }
    }
    Lorsque le break est activé, tu sorts de la boucle interne mais pas de la boucle externe. Donc le code continue de tourner.

  7. #7
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    J'ai réussi à mettre faire passer les cartes dans le bon chemin mais maintenant que j'essaie d'afficher les valeurs sur l'écran LCD les noms tournent en boucle :
    Est-ce que je dois mettre le lcd.print à la place du serial.print :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #include <SPI.h>      
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10    
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                  
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = false;
    int access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                  
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                          
        lcd.begin(16, 2);                                    //Implantation du nombre de colonnes et de lignes du LCD
        lcd.setRGB(colorR, colorG, colorB);                  //Changement des couleurs selon les variables définies précedement
        lcd.print("Veuillez montrer");                       //Ecriture d'un message sur le LCD
        lcd.setCursor(2, 1);                                 //Le prochain message s'affichera à partir de la 2e colonne puis la 2e ligne 
        lcd.print("votre  badge");
     
     
    }
     
    void loop(){
     
        if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
              Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");  
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {                
                          access1 = false;
                          Serial.println("Acces carte 1 refuse");
     
                      } else {
                          access1 = true;
                          Serial.println("Bonjour Paul");
     
                      }
                       if(access1) break;
                  }
                   break;
                }
     
            }
                  if(rfid.readCardSerial()){                                   
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println(""); 
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {                
                          access2 = false;
                          Serial.println("acces carte 2 refuse");
     
                      } else {
                          access2 = true;
                          Serial.println("Bonjour Maxime");
     
                      }
                       if(access2) break;
                  }
                  break;
                }
     
            }
        }  
     
     
            rfid.halt();         
           }
    Ou bien faire un autre if : (Ce code tourne en boucle sans meme présenter de cartes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    #include <SPI.h>      
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10    
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                  
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = false;
    int access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                  
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                          
        lcd.begin(16, 2);                                    //Implantation du nombre de colonnes et de lignes du LCD
        lcd.setRGB(colorR, colorG, colorB);                  //Changement des couleurs selon les variables définies précedement
        lcd.print("Veuillez montrer");                       //Ecriture d'un message sur le LCD
        lcd.setCursor(2, 1);                                 //Le prochain message s'affichera à partir de la 2e colonne puis la 2e ligne 
        lcd.print("votre  badge");
     
     
    }
     
    void loop(){
     
        if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
              Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");  
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {                
                          access1 = false;
     
     
                      } else {
                          access1 = true;
     
     
                      }
                      if(access1) break;
                  }
                   break;
                }
     
            }
                  if(rfid.readCardSerial()){                                   
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println(""); 
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {                
                          access2 = false;
     
     
                      } else {
                          access2 = true;
     
                      }
                      if(access2) break;
                  }
                  break;
                }
     
            }
        }  
     
            if(access1 = true){                                               //Si les numéros correspondent alors
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Nom1");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         //Passage du relai à l'état haut 
               delay (2000);
               digitalWrite(relaisPin, LOW);                          //Passage du relai à l'état bas
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");    
     
               }
               if(access2 = true)
               {
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Nom2");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         //Passage du relai à l'état haut 
               delay (2000);
               digitalWrite(relaisPin, LOW);                          //Passage du relai à l'état bas
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");    
     
               }
     
               else
               {
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
               delay(2000);
               lcd.clear();
               delay (2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge"); 
     
           }
    Merci de ton aide

  8. #8
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Je m'étais trompé de ligne, maintenant les cartes prennent le bon chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    #include <SPI.h>      
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10    
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                  
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = false;
    int access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                  
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                          
        lcd.begin(16, 2);                                    //Implantation du nombre de colonnes et de lignes du LCD
        lcd.setRGB(colorR, colorG, colorB);                  //Changement des couleurs selon les variables définies précedement
        lcd.print("Veuillez montrer");                       //Ecriture d'un message sur le LCD
        lcd.setCursor(2, 1);                                 //Le prochain message s'affichera à partir de la 2e colonne puis la 2e ligne 
        lcd.print("votre  badge");
     
    }
     
    void loop(){
     
        if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {                
     
                      access1 = false;                                           
                      Serial.println("Acces carte 1 invalide"); 
     
                      }                                    
                      else {
     
                          access1 = true;                                          
                          Serial.println("Bonjour Paul");
     
                      }                
                       if(access1) break;
                  }
                   break;
                }
     
            }
                  if(rfid.readCardSerial()){ 
     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println(""); 
     
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {
     
                          access2 = false;                      
                          Serial.println("Acces carte 2 invalide");
     
                      } else {
     
                          access2 = true;
                          Serial.print("Bonjour Maxime");
     
                      }
                      if(access2) break;
                  }
                  break;
                }
     
            }
     
     
        }  
     
     
            rfid.halt();         
           }
    Pour la carte 1 dans le moniteur série :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    32 149 77 109 149
    Bonjour Paul
    32 149 77 109 149
    Acces carte 2 invalide
    Acces carte 2 invalide
    Acces carte 2 invalide
    Acces carte 2 invalide
    Acces carte 2 invalide
    Pour la carte 2 dans le moniteur série :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    156 160 140 171 27
    Acces carte 1 invalide
    Acces carte 1 invalide
    Acces carte 1 invalide
    Acces carte 1 invalide
    Acces carte 1 invalide
    156 160 140 171 27
    Bonjour Maxime
    Mais dès l'instant ou je rajoute des lignes pour afficher sur le lcd et activer le relai, la carte 1 fonctionne mais la carte deux met acces refusé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    #include <SPI.h>      
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h"  
     
    #define SS_PIN 10    
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN);  
    rgb_lcd lcd;                
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                  
    const int colorB =30;
     
    int serNum[5];                                          
     
    int card1[][5] = {{32,149,77,109,149}};                  
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = false;
    int access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                  
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                          
        lcd.begin(16, 2);                                    //Implantation du nombre de colonnes et de lignes du LCD
        lcd.setRGB(colorR, colorG, colorB);                  //Changement des couleurs selon les variables définies précedement
        lcd.print("Veuillez montrer");                       //Ecriture d'un message sur le LCD
        lcd.setCursor(2, 1);                                 //Le prochain message s'affichera à partir de la 2e colonne puis la 2e ligne 
        lcd.print("votre  badge");
     
    }
     
    void loop(){
      if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {                
     
                      access1 = false;
     
               Serial.println("Acces carte 1 invalide");
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
               delay(2000);
               lcd.clear();
               delay (2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge"); 
     
                      }                                    
                      else {
     
                          access1 = true;
     
               Serial.println("Acces carte 1 valide");
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Bienvenue Paul");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         //Passage du relai à l'état haut 
               delay (2000);
               digitalWrite(relaisPin, LOW);                          //Passage du relai à l'état bas
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");    
     
     
                      }                
                       if(access1) break;
                  }
                   break;
                }
     
            }
     
      }
     
    if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {                
     
              access2 = false;
     
               Serial.println("Acces carte 2 invalide");
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
               delay(2000);
               lcd.clear();
               delay (2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge"); 
     
                      }                                    
                      else {
     
                          access2 = true;
     
               Serial.println("Acces carte 2 valide");
               lcd.clear();
               lcd.setCursor(0, 0);                          
               lcd.print("Bienvenue Paul");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         //Passage du relai à l'état haut 
               delay (2000);
               digitalWrite(relaisPin, LOW);                          //Passage du relai à l'état bas
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");    
     
     
                      }                
                       if(access2) break;
                  }
                   break;
                }
     
            }
     
     
    }
     rfid.halt();
      }

  9. #9
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Quand je montre la carte n°1, le bon message s'affiche ("Bienvenue Paul") mais quand je montre la carte n°2 le LCD m'affiche accès refusé car elle reste bloquée à "Accès carte 1 refusée". Est-ce qu'il y a possibilité de contourner le return ? Sachant que si j'enlève le return le message "Accès carte 1 refusée" s'affiche 5 fois.

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    #include <SPI.h>     
    #include <RFID.h>     
    #include <Wire.h>     
    #include "rgb_lcd.h" 
     
    #define SS_PIN 10   
    #define RST_PIN 9     
     
    RFID rfid(SS_PIN,RST_PIN); 
    rgb_lcd lcd;               
     
    const int relaisPin = 8;                                 
    const int colorR = 255;
    const int colorG = 155;                                 
    const int colorB =30;
     
    int serNum[5];                                         
     
    int card1[][5] = {{32,149,77,109,149}};                 
    int card2[][5] = {{156,160,140,171,27}};
     
    int access1 = false;
    int access2 = false;
     
    void setup(){
     
        Serial.begin(9600);                                 
        SPI.begin();                                         
        rfid.init();                                         
        pinMode(relaisPin, OUTPUT);                         
        lcd.begin(16, 2);                                   
        lcd.setRGB(colorR, colorG, colorB);                 
        lcd.print("Veuillez montrer");                       
        lcd.setCursor(2, 1);                                 
        lcd.print("votre  badge");
     
    }
     
    void loop(){
      if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
               for(int x = 0; x < sizeof(card1); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card1[x][i]) {               
     
                      access1 = false;
     
               Serial.println("Acces carte 1 invalide");
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
               delay(2000);
               lcd.clear();
               delay (2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");
     
                      }                                   
                      else {
     
                          access1 = true;
     
               Serial.println("Acces carte 1 valide");
               lcd.clear();
               lcd.setCursor(0, 0);                         
               lcd.print("Bienvenue Paul");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         
               delay (2000);
               digitalWrite(relaisPin, LOW);                         
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");   
     
     
                      }               
                       if(access1) break;
                  }
                   break;
                }
     
            }
     
      }
     
    if(rfid.isCard()){                                               
     
            if(rfid.readCardSerial()){     
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
               for(int x = 0; x < sizeof(card2); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != card2[x][i]) {               
     
              access2 = false;
     
               Serial.println("Acces carte 2 invalide");
     
               lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Acces refuse");
               delay(2000);
               lcd.clear();
               delay (2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");
     
                      }                                   
                      else {
     
                          access2 = true;
     
               Serial.println("Acces carte 2 valide");
               lcd.clear();
               lcd.setCursor(0, 0);                         
               lcd.print("Bienvenue Paul");
               delay(2000);
               lcd.clear();
               delay(1000);
               digitalWrite(relaisPin, HIGH);                         
               delay (2000);
               digitalWrite(relaisPin, LOW);                         
               delay(2000);
               lcd.print("Veuillez montrer");           
               lcd.setCursor(2, 1);
               lcd.print("votre  badge");   
     
     
                      }               
                       if(access2) break;
                  }
                   break;
                }
     
            }
     
     
    }
     rfid.halt();
      }

  10. #10
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    Bonjour,

    Il y a quelque chose qui ne colle pas dans la logique du programme...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int card1[][5] = {{32,149,77,109,149}};                 
    int card2[][5] = {{156,160,140,171,27}};
    Pourquoi deux tableaux à deux dimensions ? Un seul tableau avec les codes autorisés suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int card[2][5] = {{32,149,77,109,149}, {156,160,140,171,27}}; // 2 lignes, 5 colonnes
    Ensuite, dans ta boucle loop() il ne faut détecter et lire le code de la carte qu'une seule fois (et pas deux comme tu le fais), puis balayer le tableau des codes autorisés.

  11. #11
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Le problème c'est que j'arrive pas à comparer un tableau de valeur, j'ai déjà essayé mais j'ai pas trouvé comment c'est pour ça que j'ai déclaré 2 variables

    Au tout début le programme donnait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <SPI.h>    // Ajout de la bibliothèque SPI
    #include <RFID.h>    // Ajout de la bibliothèque RFID
     
    #define SS_PIN 10    // 
    #define RST_PIN 9    //
     
    RFID rfid(SS_PIN,RST_PIN);
     
    const int relaisPin = 8;
     
    int serNum[5];
     
    int cards[][5] = {{32,149,77,109,149},{156,160,140,171,27}};
     
    bool access = false;
     
    void setup(){
     
        Serial.begin(9600);
        SPI.begin();
        rfid.init();
        pinMode(relaisPin, OUTPUT);
    }
     
    void loop(){
     
        if(rfid.isCard()){
     
            if(rfid.readCardSerial()){
                Serial.print(rfid.serNum[0]);
                Serial.print(" ");
                Serial.print(rfid.serNum[1]);
                Serial.print(" ");
                Serial.print(rfid.serNum[2]);
                Serial.print(" ");
                Serial.print(rfid.serNum[3]);
                Serial.print(" ");
                Serial.print(rfid.serNum[4]);
                Serial.println("");
     
                for(int x = 0; x < sizeof(cards); x++){
                  for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                      if(rfid.serNum[i] != cards[x][i]) {
                          access = false;
                          break;
                      } else {
                          access = true;
                      }
                  }
                  if(access) break;
                }
     
            }
     
           if(access){
               Serial.println("Acces autorise ");
               digitalWrite(relaisPin, HIGH);
               delay (2000);
               digitalWrite(relaisPin, LOW);
     
               access = false;
     
          } else {
     
               Serial.println("Acces refuse ");
               delay (1000);         
           }        
        }
     
        rfid.halt();
     
     
    }

  12. #12
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    Dans l'idée, ce serait quelque chose comme :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int x = 0; x < 2; x++) { // balayer les cartes
        access=true;	
        for(int i = 0; i < 5; i++ ) {
          if (rfid.serNum[i] != cards[x][i]) { 
            access=false;
            break;
          } 
        }
        if (access) { 
          numcard=x;
          break;
        }
    }

    En sortie, access=True si une carte est reconnue avec numcard contenant le numéro de la carte.

  13. #13
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    sizeof ne retourne pas le nombre d'éléments mais la taille occupée en octets.

    sizeof(cards) devrait retourner 20 (10 entiers x 2 octets par entier).

  14. #14
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Je dois donc déclarer 2 variables numcards, une pour chaque carte ?

  15. #15
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    non, une seule.
    numcard vaudra 0 si c'est la première carte du tableau qui est reconnue, 1 si c'est la deuxième carte, etc.

  16. #16
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Ça fait 1h30 que j'essaye mais je n'ai toujours pas trouvé comment sortir chaque carte du tableau pour l'associer à une variable et pour ensuite l'utiliser quand elle est détectée

  17. #17
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    Quel est le code actuellement ?

  18. #18
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Voici le code actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <SPI.h>    // Ajout de la bibliothèque SPI
    #include <RFID.h>    // Ajout de la bibliothèque RFID
     
    #define SS_PIN 10    // 
    #define RST_PIN 9    //
     
    RFID rfid(SS_PIN, RST_PIN);
     
    const int relaisPin = 8;
     
    int serNum[5];
     
    int cards[2][5] = {{32, 149, 77, 109, 149}, {156, 160, 140, 171, 27}};
     
    bool access = false;
     
    void setup() {
     
      Serial.begin(9600);
      SPI.begin();
      rfid.init();
      pinMode(relaisPin, OUTPUT);
    }
     
    void loop() {
     
     
      if (rfid.isCard()) {
     
        if (rfid.readCardSerial()) {
          Serial.print(rfid.serNum[0]);
          Serial.print(" ");
          Serial.print(rfid.serNum[1]);
          Serial.print(" ");
          Serial.print(rfid.serNum[2]);
          Serial.print(" ");
          Serial.print(rfid.serNum[3]);
          Serial.print(" ");
          Serial.print(rfid.serNum[4]);
          Serial.println("");
     
          for (int x = 0; x < 2; x++) { // balayer les cartes
            access = true;
            for (int i = 0; i < 5; i++ ) {
              if (rfid.serNum[i] != cards[x][i]) {
                access = false;
                Serial.println("Carte refusee");
                break;
              }
            }
            if (access) {          
              Serial.println("Carte 1 accepte");
              x=cards[0];
            }else {
              Serial.println("Carte 2 accepte");
              x=cards[1];
            }
          }
     
        }
    Avec la carte 1 , en sortie dans le moniteur série j'ai "Carte 1 accepté", avec la carte 2 j'ai "Carte 2 accepté" mais quand je présente une 3e carte j'ai "Carte 2 accepté" au lieu de "carte refusée"

  19. #19
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 251
    Billets dans le blog
    48
    Par défaut
    J'en reviens avec la variable numCarte supplémentaire :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
       for (int x = 0; x < 2; x++) { // balayer les cartes
        access = true;
        for (int i = 0; i < 5; i++ ) {
          if (rfid.serNum[i] != cards[x][i]) {
            access = false;
            break;
          }
        }
        if (access) {
          numCarte = x ; // on sort de la boucle avec le numéro de la carte=0 ou 1
          break;
        }
      }
     
      if (access) {
        Serial.print("Carte ");
        Serial.print(numCarte + 1);
        Serial.println(" acceptee");
      }
      else {
        Serial.println("Carte refusee");
      }

  20. #20
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 13
    Par défaut
    Du coup je déclare numCarte avant le setup ou directement dans la loop
    int numCarte[2][5] = {{32, 149, 77, 109, 149}, {156, 160, 140, 171, 27}};

    Et pour juste prendre les numéros de la première carte je fais : numCarte[0]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Sélection d'affichage sur écran LCD
    Par Creanics dans le forum Arduino
    Réponses: 0
    Dernier message: 20/03/2017, 21h27
  2. Réponses: 2
    Dernier message: 25/10/2007, 09h31
  3. probléme d'affichage sur écran
    Par ess2007 dans le forum Périphériques
    Réponses: 7
    Dernier message: 13/06/2007, 13h56
  4. Réponses: 10
    Dernier message: 04/05/2007, 09h05
  5. Gros problèmes d'affichage sur écran 16/9
    Par slylafone dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/07/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo