domingo, 28 de febrero de 2016

PR15 - Lectura de teclado 4x4

- ROBÓTICA ESCOLAR - 
Andalucía Profundiza 2015

Prácticas de robótica escolar
·Lectura de teclado 4x4

En esta práctica programamos nuestro PICAXE para leer un teclado 4x4 y mostrar el resultado en pantalla. Las teclas están dispuestas en la intersección de 4 filas y 4 columnas. El método de lectura es el siguiente:
- Conectamos las 4 filas a 4 entradas, y las 4 columnas a 4 salidas.
- Ponemos una salida en ON y las otras tres en OFF (esto se hace una a una con todas las salidas).
- Leemos una a una todas las entradas. Si alguma está en ON entonces la correspondiente tecla estará pulsada.


Principales características de la práctica "Prueba de teclado 4x4"
  • La tarjeta controladora es la "Proyectos PICAXE-18 de alta potencia" (CHI035A).
  • El teclado tiene 8 conexiones, 4 para filas y 4 para columnas.
  • Solo queda crear una subrutina para leer las teclas de la forma mencionada anteriormente.


 Vídeo de la práctica 



Esquema eléctrico
Los elementos utilizados son:
  • Tarjeta controladora "Proyectos PICAXE-18 de alta potencia" (CHI035A)
  • Teclado plano con 16 botones/teclas dispuestos en 4 filas y 4 columnas
  • Filas del teclado conectadas a las entradas C.2, C.5, C.6 y C.7
  • Columnas del teclado conectadas a las salidas B.0 a B.3 
  • Dejamos el cable USB PICAXE conectado para ver en pantalla mediante el comando DEBUG las teclas pulsadas .




Croquis de montaje





 Programa
;------------- INFORMACIÓN --------------
;    Nombre  :      profu2015-prueba-teclado-4x4.bas
;    Autor   :      Departamento de Tecnología
;    Micro   :      PICAXE-18M2 (CHI035A)
;    Entradas:      C.2 C.5 C.6 C.7 -> columnas
;    Salidas :      B.0 B.1 B.2 B.3 -> filas
;    Función :      Lee teclado 4x4, guarda caracter en b0
;                   y se visualiza con DEBUG en el Explorador de código
;----------------------------------------


;----------- INICIALIZACIÓN -------------

;----------------------------------------


;----------- BUCLE PRINCIPAL ------------
do
      gosub leer_keypad_4x4   ;Lee teclado y guarda caracter en b0
      debug                   ;Se visualiza b0 en pantalla
      pause 20
loop
;----------------------------------------


;------------- SUBRUTINAS ---------------
leer_keypad_4x4:
      b0 = 0

      high B.0                      ;Se pone a HIGH la COLUMNA 1 (1-4-7-*)
      low B.1, B.2, B.3             ;Si se pulsa alguna de estas teclas
      if pinC.2 is on then          ;la correspondiente fila quedará a HIGH
            b0 = "1"                ;Se LEEN entonces las 4 FILAS
      else if pinC.5 is on then     ;para comprobar si hay alguna a HIGH,
            b0 = "4"                ;es decir, para ver si alguna está pulsada
      else if pinC.6 is on then
            b0 = "7"
      else if pinC.7 is on then
            b0 = "*"
      endif
      
      high B.1                      ;Lo mismo de antes pero en la COLUMNA 2
      low B.0, B.2, B.3
      if pinC.2 is on then
            b0 = "2"
      else if pinC.5 is on then 
            b0 = "5"
      else if pinC.6 is on then
            b0 = "8"
      else if pinC.7 is on then
            b0 = "0"
      endif
      
      high B.2                      ;Lo mismo de antes pero en la COLUMNA 3
      low B.0, B.1, B.3
      if pinC.2 is on then
            b0 = "3"
      else if pinC.5 is on then 
            b0 = "6"
      else if pinC.6 is on then
            b0 = "9"
      else if pinC.7 is on then
            b0 = "#"
      endif
      
      high B.3                      ;Lo mismo de antes pero en la COLUMNA 4
      low B.0, B.1, B.2
      if pinC.2 is on then
            b0 = "A"
      else if pinC.5 is on then 
            b0 = "B"
      else if pinC.6 is on then
            b0 = "C"
      else if pinC.7 is on then
            b0 = "D"
      endif
return
;----------------------------------------