Paso 3: programa!
Programación de tiempo...
Añadir este código para el Arduino:
String Master = "A9001513FF"; TARJETA PRINCIPAL DE LA ETIQUETA #
Constantes #include #define NumberOfKeys 10 //This define la cantidad de llaves en la lista de acceso #define WAIT_TIME 4000 //Time puerta permanecerá abierta #define parpadea 2 //The cantidad de veces los indicadores parpadean cuando parpadea es necesario #define ON_TIME 4000 / tiempo en milisegundos que el relé se mantiene energizados
Externos equipo #define 2 habilitar //Pin conectado al pin Enable de RFID #define Servo de la cerradura 9 mi; int stat = 0; PIN que se conecta al transistor de NPN que energiza la cerradura
Indicador de LED indicadores #define OPEN_LIGHT 4 //LED. Indica que la clave correcta fue introducido #define DENIED_LIGHT 5 //LED indicador. Indica la clave mal ingresada #define PROGRAMMING_LIGHT 6 //LED indicador. Indica que está activado el modo de programación
int val = 0; bytesread int = 0; Almacena la clave maestra se utiliza para programar otra llaves cadena vacía = "0000000000"; String clave; Cadena accessList [NumberOfKeys]; código Char [10]; Boolean programmingMode, isInAccessList, KeyFound = false;
void setup() {my.attach(9); pinMode(OPEN_LIGHT,OUTPUT); pinMode(DENIED_LIGHT,OUTPUT); pinMode(PROGRAMMING_LIGHT,OUTPUT);
Genera una matriz de tamaño correspondiente al tamaño de la lista de acceso para (int i = 0; i
Serial.Begin(2400); Pin SOUT RFID lector conectado al pin RX del Serial a 2400bps
digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(PROGRAMMING_LIGHT,LOW); digitalWrite (habilitar, LOW); BAJA activa el lector de RFID, alta se desactivará
}
void loop() {/ *** extracción de datos de tarjeta *** / if(Serial.available() > 0) {/ / si datos de lector si ((val = Serial.read()) == 10) {/ / cheque de cabecera [encabezado de datos = 10] bytesread = 0; while(bytesread<10) {/ leer código de 10 dígitos si (Serial.available() > 0) {val = Serial.read(); si ((val == 10) || (Val == 13)) {/ / Si bytes de encabezado o parada antes de los 10 dígitos de lectura rompen; / / detener lectura} código [bytesread] = val; Agregar dígitos bytesread ++; listo a leer el siguiente dígito}} if(bytesread == 10) {/ / si es de 10 dígitos leer completo digitalWrite (habilitar, alto); / / desactivar el lector por un momento para que no inunde keyCode = código; keyCode = keyCode.substring(0,10); / *** interpretación de datos *** / //At este punto, se leen los datos, y hay una clave en el if variable keyCode ((keyCode == Master) & & (programmingMode == false)) {programmingMode = true; digitalWrite (PROGRAMMING_LIGHT ALTO); } else {if(programmingMode == false) {para (int i = 0; me
} } }
/ *** BORRA datos desde BÚFERES para evitar doble Lee *** / void flushBuffers() {//if while(Serial.available() > 0) aún hay datos en el buffer del lector RFID Serial.read(); //read en arduino búfer Serial.flush(); //then lavarlo}
/ *** REAJUSTANDO indicadores *** / void resetIndicators() {delay(WAIT_TIME); //wait un poco flushBuffers(); //clear protege //return todo a partir de la posición digitalWrite(OPEN_LIGHT,LOW); digitalWrite(DENIED_LIGHT,LOW); digitalWrite(ENABLE,LOW);}
/ *** COMPORTAMIENTO de LED indicadores de si una clave en el acceso lista es SWIPPED *** / void accessGranted() {digitalWrite(OPEN_LIGHT,HIGH); my.write (140) //Sends 5V al transistor para energizar la cerradura de la puerta} / *** no en la lista de acceso comportamiento de LED indicadores si una clave que es SWIPPED *** / void accessDenied() {digitalWrite(DENIED_LIGHT,HIGH); my.write(10);}
/ *** COMPORTAMIENTO de LED indicadores si una nueva clave es entró en la lista de acceso *** / void newKeyEntered() {para (int i = 0; i
/ *** COMPORTAMIENTO de LED indicadores de si una clave es eliminado de lista de acceso *** / void keyDeleted() {para (int i = 0; i
/ *** COMPORTAMIENTO de LED indicadores si acceso lista es completo *** / void listFull() {para (int i = 0; i