Documente Academic
Documente Profesional
Documente Cultură
CERRADURA ELECTRONICA
Objetivo:
Materiales a utilizarse:
PICC Compiler
Proteus ISIS (Simulador)
Teclado matricial 4X4
LCD 16X2
PIC18F4550
3 LED (VERDE, ROJO y otro color)
3 Resistencias de 330 Ohms
4 Resistencias de 10K
Cerradura electrónica con clave de 4 digitos alfanuméricos , es decir, la clave puede ser
con letras o números, usando teclado matricial y LCD. La cerradura contara con leds
indicadores de puerta abierta y puerta cerrada y un led indicador de “alarma” que se
activara después de 5 intentos de contraseña equivocados.
Dicho esto comenzaremos por definir como atacar el problema, utilizaremos la técnica de
“divide y venceras”, es decir, VISUALIZAREMOS el esquema global o general del
proyecto y lo dividiremos en tareas simples que después atacaremos individualmente una
por una.
DIAGRAMAS DE FLUJO
MAIN
CONDICIONES INICIALES
-Mensaje de inicio
-Asegurarse de cerrar la puerta
PEDIR LA CLAVE
-Leer el teclado
-Ver si la clave es correcta
NO SI
CLAVE
CORRECTA?
GESTOR_DE_ERRORES CONTROL_DE_USUARIO
-Mostrar mensaje de error -Abrir, Cerrar, Cambiar clave y salir
-Llevar la cuenta de errores del sistema
-Activar ALARMA si es necesario -Resetear la cuenta de errores
Observamos que tenemos un esquema general simple ya que esta dividido en varias
tareas que resolveremos por separado posteriormente. Los bloques de CONDICIONES
INICIALES y PEDIR LA CLAVE posiblemente son muy simples y posiblemente no se
“ejecuten” en diversas partes del programa por lo que probablemente NO nos conviene
hacerlos como “funciones”.
GESTOR DE ERRORES
Incrementar
conta_errores
SI
NO
Conta_errores >= 5?
HACERLA DE TOS!!
-Mostrar mensaje de ALARMA
Mostrar mensaje de ERROR -Hacer parpadear un led o buzzer
-Mostrar un mensaje disuasivo
“LLAMANDO A POLICIA”
-Todo esto unos segundos
-Resetear conta_errores
REGRESAR
CONTROL_DE_USUARIO
seleccionLee_teclado;
SI
Selección== A? Funcion ABRIR
SI Funcion CERRAR
Selección==B?
SI
Selección==C? Funcion CAMBIAR
CLAVE
NO
Selección== F?
SI
REGRESAR
Programación en el lenguaje de programación C:
2) Las variables globales, aquí declararemos las variables globales del programa, es
decir, aquellas que pueden ser leidas y modificadas desde cualquier función del
programa. Aquí ya tenemos las variables declaradas pero en la practica estas variables se
van añadiendo conforme vamos diseñando el programa.
Como vemos las primeras dos variables declaradas son vectores de 4 elementos del tipo
char (caracteres), en el caso del vector llamado contraseña observamos que lo
inicializamos con los valores del 1 al 4 ya que esta será la contraseña por default. Las
demás variables se vera su utilidad mas adelante en el programa.
3) Las definiciones, estas son aquellas que renombran palabras con la finalidad de facilitar
el entendimiento del programa, por ejemplo, es mas lógico de entender:
output_high(led_cerradura); que output_high(pin_b0);
4) FUNCIONES, aquí vamos a declarar las funciones que hemos visto en los diagramas
de flujo, las primeras funciones que haremos son ABRIR(), CERRAR() y
CAMBIAR_CLAVE() y posteriormente las demas ya que estas funciones se utilizan dentro
de la función CONTROL_DE_USUARIO() y por tanto deben definirse primero. Las
funciones ABRIR() y CERRAR() simplemente muestran en pantalla un mensaje de
“ABRIENDO” o “CERRANDO” y encienden/apagan los leds indicadores de puerta abierta
y puerta cerrada, la función CAMBIAR_CLAVE(); prácticamente no hace nada ya que
posteriormente se completara esta función en futuras prácticas.
Seguido de esto hacemos la función control_de_usuario(); como se muestra y como lo
vimos en el diagrama de flujo, lo que hace esta función es darle al usuario el control sobre
el sistema, abrir, cerrar y cambiar clave:
(Luego se inicia un ciclo DO-WHILE donde lo primero es mostrar el MENU de opciones y
seguido se escanea el teclado con la función read_keypad_wait(); , el valor ascii de la
tecla pulsada se almacenara en la variable selección.)
(Se inicia el ciclo infinito donde lo primero que hacemos es escanear o leer el teclado 4
veces almacenando el valor de la tecla pulsada en cada elemento del vector clave[i])
(Lo siguiente es validar la clave, para esto simplemente hacemos uso de una bandera
asumiendo que no habrá error, comparamos uno a uno los elementos de los vectores
clave[i] y contrasena[i] y en caso de que alguno de estos sea distinto levantaremos la
bandera de error, si hubo error o no ejecutamos la función pertinente.)
NOTAS: