MicroCode Studio y PBP: Luces tipo auto fantástico con PIC16F84A

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión un circuito es muy fácil de realizar además con una gran armonía visual, su sombre es luces tipo auto fantástico ya que con unos sencillos componentes se puede tener distintos efectos visualizados en los LEDs. A demás es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.

En este caso tenemos en el puerto B del PIC conectamos LEDs con sus debidas resistencias de 330Ω, los cuales se encienden de distintas formas y cada sentencia o efecto es activado mediante pulsadores en arreglo pull-up conectados en el puerto A de nuestro PIC16F84A. El circuito también cuenta con su botón de RESET conectado al pin designado paro ello en el PIC que en este caso es el pin numero 4, también tiene un cristal de cuarzo de 4MHz y sus debidos capacitores de 22pF para establecer la frecuencia de trabajo del PIC. Todo el circuito se alimenta a 5 volts, el circuito se muestra a continuación:
El código en Basic para este circuito es el siguiente:
Parte de lo que se tiene en el código ya se ha visto anteriormente así que eso doy por hecho que se tiene comprendido como lo son la inicialización de puertos, el uso de las variables, la instrucción GOTO, entro otros puedes revisar publicaciones anteriores para darse una mejor idea y poder comprender este ejemplo. Pero parte del código tiene instrucciones que hasta el momento no se habían utilizado como lo son el uso de las condicionales IF y FOR, además del uso del LOOKUP.

Al utilizar la condicional IF viene acompañado de la instrucción THEN y ENDIF. En este ejemplo se utiliza para revisar el estado de los pulsadores por ejemplo tenemos lo siguiente:

IF PORTA.0 = 1 THEN
   Líneas de código con una tarea específica.
ENDIF

Con estas líneas se revisa el estado del RA0 y si es uno ósea que si el botón es presionado ejecuta las líneas de escritas después de la instrucción THEN hasta que encuentre el ENDIF que indica el termino de la condicional. Por supuesto puedes utilizar más operadores al momento de hacer la comparación (= igual, <= menor o igual que, >=mayor o igual que, < menor que, > mayor que, etc.) y también puedes comparar variables pero este no es el caso.

Al utiliza la condicional FOR viene acompañado de la instrucción TO y de NEXT, en este ejemplo se utiliza para hacer un conteo de las veces que se repita el efecto y también para saber cuántos dígitos se mostraran en el puerto B haciendo uno de la instrucción LOOKUP, la forma de utilizarlo lo mostraremos con un ejemplo:

Para esto es necesario definir las variables en este caso de utiliza la variable “veces” y “digito”

FOR veces = 0 TO 255
   FOR digito = 0 TO 33
      Líneas de código con una tarea específica.
   NEXT
NEXT

Estas instrucciones se encargan de hacer repeticiones de instrucciones que se encuentren dentro del lazo FOR…NEXT, se tiene la primera condicional y esta se encarga contar las veces que se repetirá el efecto y en este caso va desde 0 hasta 255, supongamos que en una primera ocasión veces =0 por lo tanto ejecutara las instrucciones que se encuentren dentro de esta condicional llegando a la instrucción NEXT aumentara uno y así sucesivamente hasta que llegue a 255 una vez que se cumpla yo no realizara lo que este dentro de ello y esperara a que se presione otro botón. La segunda condicional hará lo mismo pero en este caso contara lo que este dentro de la instrucción LOOKUP este número varía dependiendo del efecto que se tenga y por supuesto el conteo lo realiza de la misma manera que la anterior condicional.

La instrucción LOOKUP sirve para mostrar una variable en un puerto en específico, en este ejemplo se muestra en el puerto B y se tiene la siguiente sintaxis:

LOOKUP digito, [$00, $01, $03, $07, $0f, $1f, $3f, $7f, $ff, $fe, $fc, $f8, $f0, $e0, $c0, $80, $00, $80, $c0, $e0, $f0, $f8, $fc, $fe, $ff, $7f, $3f, $1f, $0f, $07, $03, $01, $00], PORTB

PAUSE 75

Se utiliza la variable digito para saber que dato es que se va a mostrar recordar que esta variable está aumentando su valor con la instrucción FOR por lo tanto cada que aumente se mostrara un dato distinto en el puerto B los valores dentro de los corchetes “[valores]” están en hexadecimal, puede modificarse libremente para obtener otro resultados, después de esta instrucción colocamos un retardo para poder visualizar el efecto en los LEDs. Yo he colocado 75 milisegundos pero puede ser otro dependiendo del efecto que se requiera. Dejo la lista de material para poder realizar este ejemplo y seguir aprendiendo de la programación.

MATERIAL:
  • 8 LEDs
  • 1 PIC16F84A
  • 14 Resistores de 330Ω
  • 1 Cristal de Cuarzo de 4MHz
  • 6 Pulsadores
  • 2 Capacitores Cerámicos 22pF
Vídeo del circuito en acción:
Aquí el enlace para DESCARGAR los archivos disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...

No hay comentarios:

Publicar un comentario