Stap 3: programma!
Programmering de tijd...
Upload deze code naar je Arduino:
Tekenreeks Master = "A9001513FF"; MASTER CARD LABEL #
Constanten #include #define NumberOfKeys 10 //This bepaalt het bedrag van de sleutels in de toegangslijst #define WAIT_TIME 4000 //Time deur blijft open #define knippert 2 //The bedrag van de tijden de indicatoren knipperen wanneer knipperen is vereist #define ON_TIME 4000 / / tijd in milliseconden het Relais blijft energiek
Externe apparatuur #define inschakelen 2 //Pin verbonden met de pin inschakelen van RFID LOCK 9 Servo #define mijn; int stat = 0; PIN die is verbonden met de NPN-transistor die slot krachten
LED-indicatoren #define OPEN_LIGHT 4 //LED indicator. Geeft dat de juiste sleutel was ingevoerde #define DENIED_LIGHT 5 //LED indicator. Geeft aan de verkeerde sleutel ingevoerd #define PROGRAMMING_LIGHT 6 //LED indicator. Geeft aan programmering-modus is geactiveerd
int val = 0; int bytesread = 0; Slaat de hoofdsleutel wordt gebruikt voor het programmeren van de andere sleutels String lege = "0000000000"; Tekenreeks keyCode; String accessList [NumberOfKeys]; char code [10]; Boolean programmingMode, isInAccessList, KeyFound = false;
void setup {my.attach(9); pinMode(OPEN_LIGHT,OUTPUT); pinMode(DENIED_LIGHT,OUTPUT); pinMode(PROGRAMMING_LIGHT,OUTPUT);
Een matrix van grootte overeenkomt met de grootte van de toegangslijst voor genereert (int i = 0; ik
Serial.begin(2400); RFID lezer Zuid pin aangesloten op seriële RX pin 2400 bps
digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(PROGRAMMING_LIGHT,LOW); digitalWrite (inschakelen, laag); LAGE activeren de RFID-lezer, hoge deactiveert het
}
void loop {/ *** extractie van de gegevens van de kaart *** / if(Serial.available() > 0) {/ / indien gegevens beschikbaar van lezer als ((val = Serial.read()) == 10) {/ / check voor header [kop van gegevens = 10] bytesread = 0; while(bytesread<10) {/ / lees 10 cijferige code als (Serial.available() > 0) {val = Serial.read(); als ((val == 10) || (val == 13)) {/ / Als de kop- of stop bytes voordat de 10 cijfers lezen breken; / / stoppen met lezen} code [bytesread] = val; Voeg de cijfers bytesread ++; klaar om te lezen de volgende cijfer}} if(bytesread == 10) {/ / als 10 cijfers lezen is volledig digitalWrite (inschakelen, hoog); / / deactiveren van de RFID-lezer voor een moment, dus het niet keyCode overspoelen zal = code; keyCode = keyCode.substring(0,10); / *** interpretatie van gegevens *** / //At dit punt gegevens werd voorgelezen, en er is een keycode in de keyCode variabele als ((keyCode == Master) & & (programmingMode == false)) {programmingMode = true, digitalWrite (PROGRAMMING_LIGHT HOGE); } else {if(programmingMode == false) {for (int i = 0; ik
} } }
/ *** VERWIJDERT gegevens uit de BUFFERS aan te voorkomen dat dubbele leest *** / void flushBuffers() {while(Serial.available() > 0) //if er nog gegevens blijven in de RFID reader buffer Serial.read(); //read in arduino buffer Serial.flush(); //then spoel het}
/ *** RESETTEN indicatoren *** / void resetIndicators() {delay(WAIT_TIME); //wait een kleine flushBuffers(); //clear buffers //return alles naar de start positie digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(ENABLE,LOW);}
/ *** GEDRAG van LED indicatoren als A-toets IN de toegang lijst IS SWIPPED *** / accessGranted() {my.write (140), digitalWrite(OPEN_LIGHT,HIGH); //Sends 5V om de transistor te energize deurslot} ongeldig / *** gedrag van LED indicatoren als A KEY THAT'S niet IN de TOEGANGSLIJST IS SWIPPED *** / void accessDenied() {digitalWrite(DENIED_LIGHT,HIGH); my.write(10);}
/ *** GEDRAG van LED indicatoren als A nieuwe sleutel IS opgenomen IN de TOEGANGSLIJST *** / void newKeyEntered() {voor (int i = 0; i
/ *** GEDRAG van LED indicatoren als een sleutel IS verwijderd uit TOEGANGSLIJST *** / void keyDeleted() {voor (int i = 0; ik
/ *** GEDRAG van LED indicatoren als toegang lijst IS volledige *** / void listFull() {voor (int i = 0; ik