lunes, 22 de marzo de 2010
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

Páginas:

Open Alarm: El sistema de alarma hogareña de NeoTeo (III)

Por: Ariel Palazzesi  @  lunes, 28 de abril de 2008  Nota vista 10982 veces

En esta oportunidad vamos a aprender todo lo necesario para aprovechar la posibilidad que brinda el modulo central del sistema de alarma propuesto para la conexión de una pantalla LCD alfanumérica. Se trata de un agregado ideal para facilitar la interacción entre el usuario y la alarma.
 

Compartir
¿te interesa?
52 -2
54 votos
Usaremos el PIC SIMULATOR IDE.

La programación del display LCD, utilizando el lenguaje BASIC incluido en el PIC SIMULATOR IDE, es bastante simple. Ya le hemos dedicado un capitulo de nuestro curso de programación de microcontroladores, así que seria conveniente que lo leas antes de encarar esta etapa del sistema de alarma.

Podemos dar dos usos al display de nuestra alarma. El primero de ellos tiene que ver con la notificación al usuario del estado en que se encuentra el sistema. Se pueden implementar, con mucha sencillez, mensajes del tipo “ALARMA ACTIVADA”, “DISPARO” o cualquiera que el lector crea conveniente. Tampoco tenemos que olvidar que el modulo principal propuesto cuenta con tres LEDs encargados de avisar los estados mas importantes de la alarma, y que veremos en las próximas entregas como sacarle partido.

El segundo uso es el más interesante, y se relaciona con la entrada de datos por medio del teclado. Si bien podemos mantener muy simple el diseño de nuestra alarma haciendo que se active y desactive simplemente pulsando una tecla, es mucho mejor que dichas tareas se ejecuten previo ingreso de una contraseña. Podemos elegir entre una palabra clave (o numero clave) que permita llevar a cabo ambas tareas (que es lo habitual) o también podemos disponer de una clave para la activación y una diferente para la desactivación. Eso es lo bueno de diseñar nuestro propio sistema de seguridad.

Dado que la programación del display esta íntimamente ligada al uso del teclado, les proponemos un ejemplo que utiliza a ambos elementos: un pequeño programa que se encarga de leer el teclado y mostrar un mensaje en la pantalla indicando que tecla se ha pulsado. Este es el listado:

'----------------------------------
'Alarma NeoTeo
'Ejemplo lectura Teclado y
'escritura en el LCD.
'----------------------------------
AllDigital  'Todos los pines del puerto A como E/S.
TRISA = %11111111  'Puerto A como entradas
TRISB = %00001111  'Puerto B: 4 entradas, 4 salidas

'Declaro las variables a utilizar
Dim tecla As Byte  'Tecla presionada

tecla = 16  '16 = no hay tecla presionada

'Declaro los parametros para el LCD
Define LCD_BITS = 4
Define LCD_DREG = portd
Define LCD_DBIT = 4
Define LCD_RSREG = portc
Define LCD_RSBIT = 6
Define LCD_EREG = portc
Define LCD_EBIT = 7

Lcdinit 0  'inicializo el lcd sin cursor.

'Bucle principal

    Lcdout "ALARMA LISTA"  'Muestra el texto…
    WaitMs 1000  'Espero un segundo
    Lcdcmdout LcdClear  'borro el display

loop:
    'Leo el teclado
    Gosub leoteclado
    WaitMs 10  'Espero
   
    'Si se presiono una tecla, la muestro
    If tecla <> 16 Then
        Gosub muestrotecla
        WaitMs 100  'espero y...
        Lcdcmdout LcdClear  'Borro el contenido de la pantalla
    Endif

Goto loop  'vuelvo a loop: para repetir indefinidamente.

End                                              

leoteclado:
        tecla = 16  '16 = no hay tecla presionada
        'Leo la primer columna
        PORTB = %10000000
        If PORTB.3 = 1 Then tecla = 1  'Tecla "1"
        If PORTB.2 = 1 Then tecla = 4  'Tecla "4"
        If PORTB.1 = 1 Then tecla = 7  'Tecla "7"
        If PORTB.0 = 1 Then tecla = 10  'Tecla "*"

        'Leo la segunda columna
        PORTB = %01000000
        If PORTB.3 = 1 Then tecla = 2  'Tecla "2"
        If PORTB.2 = 1 Then tecla = 5  'Tecla "5"
        If PORTB.1 = 1 Then tecla = 8  'Tecla "8"
        If PORTB.0 = 1 Then tecla = 0  'Tecla "0"

        'Leo la tercer columna
        PORTB = %00100000
        If PORTB.3 = 1 Then tecla = 3  'Tecla "3"
        If PORTB.2 = 1 Then tecla = 6  'Tecla "6"
        If PORTB.1 = 1 Then tecla = 9  'Tecla "9"
        If PORTB.0 = 1 Then tecla = 11  'Tecla "#"

        'Leo la cuarta columna
        PORTB = %00010000
        If PORTB.3 = 1 Then tecla = 12  'Tecla "TEST"
        If PORTB.2 = 1 Then tecla = 13  'Tecla "PANICO"
        If PORTB.1 = 1 Then tecla = 14  'Tecla "F1"
        If PORTB.0 = 1 Then tecla = 15  'Tecla "F2"
Return                                           

muestrotecla:
    Lcdcmdout LcdClear  'Borro el contenido de la pantalla
    If tecla < 10 Then Lcdout "Tecla: ", #tecla
    If tecla = 10 Then Lcdout "Tecla: *"
    If tecla = 11 Then Lcdout "Tecla: #"
    If tecla = 12 Then Lcdout "Tecla: TEST"
    If tecla = 13 Then Lcdout "Tecla: PANICO"
    If tecla = 14 Then Lcdout "Tecla: F1"
    If tecla = 15 Then Lcdout "Tecla: F2"
Return

Si has leído nuestro tutorial sobre programación de microcontroladores, no deberías tener problemas para comprender el funcionamiento de este pequeño programa. Si aun no lo has hecho, esta es una buena oportunidad para darle un vistazo.

Con esto damos por terminada la tercera entrega de este tutorial. En el próximo, veremos como construir la sirena, como controlarlos LEDs indicadores y mucho más.

 

"Alarma lista".
"Tecla: TEST".

Anterior
Conexión
Artículo Siguiente
Cómo desactivar servicios en Windows Vista
Artículo Anterior
Giove-B, del sistema Galileo, ya está en órbita
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
Votos: 0 de 0
VICHE
VICHE
VICHE
04/06/2009
5:23:24
#1   Este sitio de NEOTEO LO ENCUENTRO MUY AGRADABLE
     Responder 
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br
 

Síguenos en TwitterAgréganos a tu RSS

 

Autores