Étape 3: programme !
Temps de programmation...
Télécharger ce code sur votre Arduino :
Master de chaîne = « A9001513FF » ; MASTER CARD TAG #
Constantes #include #define NumberOfKeys 10 //This définit la quantité de clés dans la liste accès #define temps_attente 4000 //Time porte restera ouverte #define clignote 2 //The quantité de fois les indicateurs clignotent lorsque le clignotant est requis #define ON_TIME 4000 / / durée en millisecondes, le relais reste sous tension
Externes équipement #define 2 activez //Pin connecté à la broche Enable de RFID #define écluse 9 Servo mon ; int stat = 0 ; Goupille qui est connecté à transistor NPN qui dynamise la serrure
Indicateur de LED indicateurs #define OPEN_LIGHT 4 //LED. Indique la clé correcte était entré #define DENIED_LIGHT 5 //LED indicateur. Indique la clé incorrecte a été entré #define PROGRAMMING_LIGHT 6 //LED indicateur. Indique le mode de programmation est activé
int val = 0 ; bytesread int = 0 ; Stocke la clé principale utilisée pour la programmation d’autre clés String vide = « 0000000000 » ; KeyCode chaîne ; String accessList [NumberOfKeys] ; code de char [10] ; Boolean programmingMode, isInAccessList, KeyFound = false ;
void setup() {my.attach(9) ; pinMode(OPEN_LIGHT,OUTPUT) ; pinMode(DENIED_LIGHT,OUTPUT) ; pinMode(PROGRAMMING_LIGHT,OUTPUT) ;
Génère un tableau de taille correspondant à la taille de la liste d’accès (int i = 0; i
Serial.Begin(2400) ; RFID reader SOUT broche reliée à la broche de la série RX à 2400bps
digitalWrite(OPEN_LIGHT,LOW) ; digitalWrite(DENIED_LIGHT,LOW) ; digitalWrite(PROGRAMMING_LIGHT,LOW) ; digitalWrite (ENABLE, faible) ; BASSE active le lecteur RFID, haute désactive il
}
void loop() {/ *** d’EXTRACTION de données de la carte *** / if(Serial.available() > 0) {/ / si les données de lecteur si ((val = Serial.read()) == 10) {/ / check pour en-tête [en-tête de données = 10] bytesread = 0; while(bytesread<10) {/ / lire 10 chiffres si (Serial.available() > 0) {val = Serial.read() ; if ((val == 10) || (Val == 13)) {/ / Si l’en-tête ou arrêt octets avant le chiffre 10 lecture pause; / / stop lecture} code [bytesread] = val ; Ajouter le chiffre bytesread ++ ; prêt à lire le prochain chiffre}} if(bytesread == 10) {/ / si le chiffre 10 lire est complet digitalWrite (ENABLE, HIGH); / / désactiver le lecteur RFID pour un moment donc il inondera pas keyCode = code ; keyCode = keyCode.substring(0,10); / *** interprétation de données *** / //At ce point, a été lu les données, et il y a un code clé dans la variable si keyCode ((keyCode == Master) & & (programmingMode == false)) {programmingMode = true ; digitalWrite (PROGRAMMING_LIGHT ÉLEVÉ) ; } else {if(programmingMode == false) {pour (int i = 0; j’ai
} } }
/ *** EFFACE les données de mémoires tampons pour éviter les doubles lectures *** / void flushBuffers() {while(Serial.available() > 0) //if il y a encore des données restantes dans le tampon de lecteur RFID Serial.read() ; //read il en tampon arduino Serial.flush() ; //then rincer}
/ *** RÉINITIALISATION des indicateurs *** / void resetIndicators() {delay(WAIT_TIME) ; //wait un peu flushBuffers() ; //clear tampons //return tout à partir de position digitalWrite(OPEN_LIGHT,LOW) ; digitalWrite(DENIED_LIGHT,LOW) ; digitalWrite(ENABLE,LOW);}
/ *** COMPORTEMENT de LED indicateurs IF A KEY IN THE ACCESS liste est SWIPPED *** / void accessGranted() {digitalWrite(OPEN_LIGHT,HIGH) ; my.write (140); //Sends 5V à transistor pour alimenter la serrure} / *** pas dans la liste d’accès de comportement de LED indicateurs IF A clé qu’est SWIPPED *** / void accessDenied() {digitalWrite(DENIED_LIGHT,HIGH) ; my.write(10);}
/ *** COMPORTEMENT de LED indicateurs si A NEW KEY est entré dans l’accès liste *** / void newKeyEntered() {pour (int i = 0; j’ai
/ *** COMPORTEMENT de LED indicateurs IF A clé est supprimée de liste d’accès *** / void keyDeleted() {pour (int i = 0; j’ai
/ *** COMPORTEMENT de LED indicateurs si accès liste est pleine *** / void listFull() {pour (int i = 0; j’ai