Sunteți pe pagina 1din 12

PROYECTO A REALIZARSE:

CERRADURA ELECTRONICA

Objetivo:

- Nuestro objetivo es llegar a diseñar y contruir una cerradura electronica


- Aprenderemos a programar para poder controlar nuestra cerradura
- Los conseptos primordiales a aprender son:
 Estructura de un programa en C
 Diseño estructurado de un programa
 Metodologia del diseño de un programa

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

Descripcion del proyecto:

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.

Si el usuario introduce la contraseña correcta el sistema le da la “bienvenida” y da acceso


al sistema pudiendo controlar la apertura y el cierre de la puerta y cambiar la clave.
Desarrollo del proyecto:

Dado que utilizamos el lenguaje C el cual es un lenguaje estructurado debemos


aprovechar esta característica y diseñar un programa bien estructurado, segmentado o
dividido mediante funciones que nos permita hacer un código INTELIGIBLE (fácil de leer y
entender) de manera que nos permita posteriormente “escalar” el código haciendo
mejoras o añadiduras (nuevas versiones) sin tantos problemas. En este punto ni siquiera
es necesario saber programar en C o en ningún lenguaje, es simplemente aplicar nuestra
lógica a la resolución de un proyecto.

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”.

En el caso de los bloques GESTOR_DE_ERRORES y CONTROL_DE_USUARIO son


bloques que probablemente representen un código largo, nos conviene hacerlos
FUNCIONES ya que posteriormente podremos decidir que cambiar, añadir o mejorar en
cada caso de manera “individual” evitando cambiar el esquema general del proyecto.

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

MENSAJE DE BIENVENIDA AL SISTEMA

Muestra MENU de opciones

seleccionLee_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

Mostrar mensaje de despedida, cerrar puerta y


resetear contador de errores

REGRESAR
Programación en el lenguaje de programación C:

1) La CABECERA, lo primero es añadir los archivos o librerías que usaremos en el


programa:

Vemos que se incluye la librería PICPLAY_18F4550.h la cual contiene TODAS las


configuraciones básicas para que el PIC funcione a la máxima velocidad de 48MHz, luego
se incluyen las librerías de los dispositivos que se van a usar como el LCD y el Teclado
matricial 4X4.

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.)

(Seguido de esto mediante un SWITCH ejecutamos la función pertinente según sea la


selección del usuario)
(Y solo si la variable selección es igual a ‘F’ entonces salimos del ciclo DO-WHILE y
terminamos mostrando un mensaje de SALIENDO DEL SISTEMA)

Ahora hacemos la función GESTOR_DE_ERRORES siguiendo o basándonos en el


diagrama de flujo que hicimos en color rojo:

Finalmente escribimos el código del programa principal MAIN:


(Se inicia el programa MAIN con las condiciones INICIALES mostrando un mensaje
inicial)

(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:

Para este proyecto se hizo la siguiente modificación a la librería de PICPLAY_4X4.c para


adecuarla al teclado usado en la simulación:

Para este proyecto también se modifico el archivo PICPLAY_LCD.c añadiéndole una


nueva función llamada lcd_clear(); como se muestra a continuación:

S-ar putea să vă placă și