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