Páginas

jueves, 1 de marzo de 2012

[Emb Comp Class] Proyecto 1 "Dado PIC"

Descripción

Realizar un dado electrónico, sera "lanzado" presionando un Push Button y mostrará el resultado con un arreglo de 7 leds y mediante la combinación de las salidas del PIC. (B0, B1, B2, B3, B4, B5, B6, B7)

Materiales

  • 1 microcontrolador PIC16F628A
  • 1 diodo rectificador 1N4007
  • 1 regulador de voltage MC7805CT
  • 1 capacitor 470 microFaradios a 16 volts
  • 2 capacitores ceramicos 0.1 microFaradios
  • 1 resistor 10 kiloOhms
  • 1 resistor 270 kiloOhms
  • 3 resistores 33 ohms
  • 1 Protoboard

Procedimiento

Podemos leer un poco de Teoría sobre Microcontroladores para saber con que trabajaremos.
Es necesario tener conocimientos básicos en lenguaje BASIC, podemos leer este articulo
Prácticamente armaremos el hardware del proyecto desde cero, siguiendo el siguiente mapa esquemático.



La parte superior es una fuente que regula el voltage cuando colocamos la bateria, ya que de los 9Volts que nos provee solo son necesarios 5Volts.

Conexion de los LEDS

Para el correcto funcionamiento del dado, los leds deben conectarse correctamente. Son necesarias 4 salidas, 3 de ellas encienden 2 leds cada una, y la que sobra enciende solamente uno, el cual es el LED central.



Estas son las salidas correspondientes en binario, traducidas a hexadecimal para cargarlas en el programa



Como podemos ver, es necesario conectar las parejas en forma cruzada para poder reproducir correctamente los patrones del dado.



Armado en Protoboard



Código


El programa fue realizado en el programa PIC Simulator IDE, es una aplicación bastante completa que permite escribir nuestro código, compilarlo y realizar una simulación del mismo. No nos permite armar un circuito, pero nos permite simular que las salidas de nuestro microcontrolador sean correctas. El programa es de pago y nos permite tener 30 sesiones, cada una con una duración de 2 horas; agotadas dichas sesiones sera necesario pagar por el mismo, sin embargo, el código del dado es super rápido de programar

AllDigital 'Todas las patitas del PIC como I/O (E/S)
TRISA = 0xff 'Configuramos todos los puertos de salida (PORTA) como entradas'
TRISB = 0x00 'Configuramos todos los puertos de salida (PORTA) como entradas'
Dim rnd1 As Byte 'Numero aleatorio que fija el estado final del dado 1
'Dim rnd2 As Byte Numero aleatorio que fija el estado final del dado 2
Dim a As Byte 'contador para el estado temporal de los dados.
Dim temp As Byte 'variable temporal que arregla el valor maximo
loop: 'hacemos un ciclo infinito
PORTB = 0 'apagamos las salidas, (leds)
If PORTA.0 = 1 Then 'cuando presionemos el pushbutton
Gosub lanzar_dados 'vamos a la funcion lanzar_dado
Endif
Goto loop
End 'Fin del programa
lanzar_dados: 'Subrutina "lanza" el dado y muestra el resultado
a = 0
While PORTA.0 = 1 'mientras el boton permanezca presionado
a = a + 1
If a = 7 Then
a = 1
Endif
OPTION_REG.T0CS = 0 'selecciona reloj interno
temp = (6 + 1) - 1 'arregla el numero maximo
rnd1 = (TMR0 Mod temp) + 1 'obtenemos el numero aleatorio entre el numero maximo y minimo
PORTB = LookUp(0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0e), a 'segun el valor de "a" mostramos estado fake
WaitMs 15 'durante 15 milisegundos
Wend 'Fin de while, cuando dejamos de presionar el pushbutton
PORTB = LookUp(0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0e), rnd1 'mostramos el estado "real" del dado
WaitMs 5000 'esperamos 5 segundos para reiniciar
Return
view raw dado2.bas hosted with ❤ by GitHub


Referencias

No hay comentarios:

Publicar un comentario