13
13
#define STATE_SCAN_VALID 4
14
14
#define STATE_SCAN_MASTER 5
15
15
#define STATE_ADDED_CARD 6
16
+ #define STATE_REMOVED_CARD 7
16
17
17
18
#define REDPIN 6
18
19
#define GREENPIN 7
@@ -93,6 +94,36 @@ void addReadCard()
93
94
}
94
95
}
95
96
97
+ // ------------------------------------------------------------------------------------
98
+ void removeReadCard ()
99
+ {
100
+ int cardIndex;
101
+ int index ;
102
+ boolean found = false ;
103
+
104
+ for (cardIndex = 0 ; cardIndex < cardsStored; cardIndex++)
105
+ {
106
+ if (found == true )
107
+ {
108
+ for (index = 0 ; index < 4 ; index ++)
109
+ {
110
+ cardArr[cardIndex-1 ][index ] = cardArr[cardIndex][index ];
111
+ cardArr[cardIndex][index ] = 0 ;
112
+ }
113
+ }
114
+
115
+ if ((memcmp (readCard, cardArr[cardIndex], 4 )) == 0 )
116
+ {
117
+ found = true ;
118
+ }
119
+ }
120
+
121
+ if (found == true )
122
+ {
123
+ cardsStored--;
124
+ }
125
+ }
126
+
96
127
// ------------------------------------------------------------------------------------
97
128
void updateState (byte aState)
98
129
{
@@ -139,6 +170,10 @@ void updateState(byte aState)
139
170
digitalWrite (REDPIN, LOW);
140
171
digitalWrite (GREENPIN, HIGH);
141
172
}
173
+ else if (currentState == STATE_REMOVED_CARD)
174
+ {
175
+ return ;
176
+ }
142
177
else
143
178
{
144
179
lcd.clear ();
@@ -152,19 +187,35 @@ void updateState(byte aState)
152
187
}
153
188
break ;
154
189
case STATE_SCAN_VALID:
155
- if (currentState == STATE_ADDED_CARD)
190
+ if (currentState == STATE_SCAN_MASTER)
191
+ {
192
+ removeReadCard ();
193
+ aState = STATE_REMOVED_CARD;
194
+
195
+ lcd.clear ();
196
+ lcd.setCursor (0 ,0 );
197
+ lcd.print (" Card Scanned" );
198
+ lcd.setCursor (0 ,1 );
199
+ lcd.print (" Card Removed" );
200
+ StateWaitTime = 2000 ;
201
+ digitalWrite (REDPIN, LOW);
202
+ digitalWrite (GREENPIN, HIGH);
203
+ }
204
+ else if (currentState == STATE_ADDED_CARD)
156
205
{
157
206
return ;
158
207
}
159
-
160
- lcd.clear ();
161
- lcd.setCursor (0 ,0 );
162
- lcd.print (" Card Scanned" );
163
- lcd.setCursor (0 ,1 );
164
- lcd.print (" valid Card" );
165
- StateWaitTime = 2000 ;
166
- digitalWrite (REDPIN, LOW);
167
- digitalWrite (GREENPIN, HIGH);
208
+ else
209
+ {
210
+ lcd.clear ();
211
+ lcd.setCursor (0 ,0 );
212
+ lcd.print (" Card Scanned" );
213
+ lcd.setCursor (0 ,1 );
214
+ lcd.print (" valid Card" );
215
+ StateWaitTime = 2000 ;
216
+ digitalWrite (REDPIN, LOW);
217
+ digitalWrite (GREENPIN, HIGH);
218
+ }
168
219
break ;
169
220
case STATE_SCAN_MASTER:
170
221
lcd.clear ();
0 commit comments