Kryssrutan Arduino RFID lås (3 / 5 steg)
Steg 3: Program!
Programmering tid...
Ladda upp denna kod till din Arduino:
Sträng Master = "A9001513FF"; MASTER CARD TAGGEN #
Konstanter #include #define NumberOfKeys 10 //This definierar beloppet av nycklar i listan #define väntetid 4000 //Time dörren förblir öppen #define blinkar 2 //The beloppet gånger indikatorerna blinkar när blinkar är krävs #define ON_TIME 4000 / / tid i millisekunder reläet förblir strömförande
Extern utrustning #define aktiverar 2 //Pin ansluten till aktivera stift RFID #define LOCK 9 Servo min; int stat = 0; PIN-kod som är ansluten till NPN transistor som ger energi lås
LED-indikatorer #define OPEN_LIGHT 4 //LED indikator. Anger rätt nyckel var angivna #define DENIED_LIGHT 5 //LED indikator. Indikerar fel nyckel var angivna #define PROGRAMMING_LIGHT 6 //LED indikator. Anger programmering-läget är aktiverat
int val = 0; int bytesread = 0; Lagrar huvudnyckeln används för att programmera de andra tangenter sträng tomma = "0000000000"; Sträng keyCode; Sträng accessList [NumberOfKeys]; röding kod [10]. Boolean programmingMode, isInAccessList, KeyFound = false;
void setup() {my.attach(9); pinMode(OPEN_LIGHT,OUTPUT); pinMode(DENIED_LIGHT,OUTPUT); pinMode(PROGRAMMING_LIGHT,OUTPUT);
Genererar en matris med storlek motsvarande storleken på listan för (int jag = 0; jag
Serial.BEGIN(2400); RFID-läsaren SOUT pin ansluten till seriell RX stift på 2400bps
digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(PROGRAMMING_LIGHT,LOW); digitalWrite (aktivera, låg); LÅGA aktiverar RFID-läsare, hög deaktiverar den
}
void loop() {/ *** extraktion av DATA från minneskort *** / if(Serial.available() > 0) {/ / om data tillgängliga från läsare om ((val = Serial.read()) == 10) {/ / kontrollera huvud [Header data = 10] bytesread = 0; while(bytesread<10) {/ / läsa 10-siffriga koden om (Serial.available() > 0) {val = Serial.read(); om ((val == 10) || (val == 13)) {/ / om huvudet eller stop byte innan den 10-siffriga läsa bryta; / / sluta läsa} koden [bytesread] = val; Lägg till den siffran bytesread ++; redo att läsa nästa siffra}} if(bytesread == 10) {/ / om 10-siffriga läsa komplett digitalWrite (aktivera, hög); / / avaktivera RFID-läsare för ett ögonblick så det inte kommer att översvämma keyCode = kod, keyCode = keyCode.substring(0,10); / *** tolkning av DATA *** / //At denna punkt data lästes, och det finns en keycode i keyCode variabel om ((keyCode == Master) & & (programmingMode == false)) {programmingMode = true; digitalWrite (PROGRAMMING_LIGHT HÖG); } annat {if(programmingMode == false) {för (int jag = 0; jag
} } }
/ *** Clear DATA från buffertar till undvika dubbel läser *** / void flushBuffers() {while(Serial.available() > 0) //if finns det fortfarande uppgifter kvar i RFID-läsare bufferten Serial.read(); //read det till arduino buffert Serial.flush(); //then spola}
/ *** ÅTERSTÄLLA indikatorer *** / void resetIndicators() {delay(WAIT_TIME); //wait en liten flushBuffers(); //clear buffertar //return allt till start position digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(ENABLE,LOW);}
/ *** BETEENDE av LED indikatorer om A nyckel IN THE tillgång lista är SWIPPED *** / void accessGranted() {digitalWrite(OPEN_LIGHT,HIGH); my.write (140); //Sends 5V till transistorn att vitalisera dörrlåset} / *** beteende av LED indikatorer om en nyckel att NOT IN THE ACCESS LIST är SWIPPED *** / void accessDenied() {digitalWrite(DENIED_LIGHT,HIGH); my.write(10);}
/ *** BETEENDE av LED indikatorer om en ny nyckel är trädde IN THE lista *** / void newKeyEntered() {för (int jag = 0; jag
/ *** BETEENDE av LED indikatorer om en nyckel är bort från ACCESS LIST *** / void keyDeleted() {för (int jag = 0; jag
/ *** BETEENDE av LED indikatorer om tillgång lista är FULL *** / void listFull() {för (int jag = 0; jag