Tetris Tetris en un microcontr microcontrolador olador PIC El PIC Tetris juego (PICtris) generado a partir de una pregunta reciente RetroBrad en el foro. Quería saber cóo anipular los !E"s # dibujar gr$ficos en %". &o so# $s de un tipo de 'obre pr$ctico # en el pasado los gr$ficos no son un otio de preocupación. &o estaba intrigado a adentrarse en el undo de %" a aeriguar cóo funcionan las cosas otia. !os !E"s *+ # cuatro botones est$n controlados por un ,nico PIC (-!/+0%1) # dos baterías 22. El código fuente opera de anera u# eficiente # el prograa es e3treadaente sensible. &o estaba preocupado por este ,ltio #a 4ue estaba decidido a utili5ar algoritos gr$ficos basados en rotaciones con respecto a las constantes predefinidas. "esde a4uí e endría bien un enfo4ue siilar para crear otros o tros juegos interactios6 Coo siepre las nueas características son una necesidad6 "ado 4ue el ídeo de arriba 'e a7adido lo siguiente8
9na pantalla de presentación 4ue presentación 4ue uestra :TETRI;: cuando se inicia el juego.
Las puntuaciones altas < altas < sus esfuer5os se graban en la EEPR=>.
2lta potencia controlador darlington darlington para iluinar la la pantalla. Todas las características anteriores se incorporan en el código fuente (4ue se encuentra a continuación)
Creación de gráficos 2D En el juego de Tetris los gr$ficos son tratados coo objetos de pí3el 3-*. Para aliiar la sobrecarga de dise7o gr$fico 'ice una hoja de cálculo de Excel 4ue Excel 4ue 'ace todo el trabajo duro por usted. ?a# un capo de 3-* donde usted puede colocar una :3: para cada blo4ue del objeto. Cual4uier blo4ue con una :3: se dar$ forato a parecer 4ue lo 'ace a continuación (e pareció 4ue el enfo4ue $s f$cil de interpretar en coparación con dispersión de 3). !a 'oja de c$lculo se calcula # uestra el código necesario para el pe5 espada gr$fico6 ;iple. 24uí 'a# una captura de pantalla8
Crear y mostrar texto
La hoja de cálculo se puede utili5ar para crear cual4uier objeto inclu#endo te3to. Recienteente 'e 4uerido a7adir una pe4ue7a característica < un to4ue de pantalla. 9tili5ando el dise7ador gr$fico 'ec'o 4ue sea e3treadaente f$cil de 'acer. Puse una :3: en todos los puntos 4ue coponen la palabra TETRI; en la pantalla de 3-*. Tenía 4ue ser un poco creatio # diidir la palabra en dos colunas coo se uestra a la derec'a. ;i a usted le gusta er cóo 'e utili5ado el objeto coo un te3to < naegar por el código fuente (4ue se enueran $s abajo) 'abr$ una rutina 4ue se llaa :;plas';creen:.
Gráficos en un PIC E3isten diersas alternatias para toar cuando se trabaja con gr$ficos en %". ?e e3plorado las ate$ticas detr$s de dos enfo4ues8 trigonometría (rotando coordenadas cartesianas ) # transformación 2D matri afín .2bos suenan coo 4ue necesita un título uniersitario para entender a pesar de 4ue son u# sencillos en su aplicación. I utili5ado originalente trigonoetría para girar los objetos aun4ue la transforación de atri5 afín era uc'o más simple # $s iportante más rápido .
!ransformation "atrix #ffine Rotación de un objeto %" @ A <1 grados se puede 'acer f$cilente de este odo8 otación Gráfico
definir el origen objeto PX = originx PY = originY
/ / definir object width Q
=
0
/ / claro la matriz de destino Para
X1 = 0 a 7 pTarget ( X1 ) =
0
Siguiente
/ / analizar cada
$%u& está pasando' Pfuente !a atri5 contiene inforación gr$fica para el objeto. Cada b#te representa una coluna de pí3eles 4ue se puede denoinar en & forato de este odo8 pObject ( X ) . Bits ( Y )
p=bject es de tipo ord . Esto significa 4ue cada índice tiene * +its (dos b#tes). Esto perite 4ue dos pantallas 3 para ser unido # foran una sola pantalla ,x* . Considere la posibilidad de cual4uier objeto en la pantalla8 Teniendo en cuenta 4ue la es-uina superior i-uierda es ./. píxel 8 ;ólo 'a# cuatro pi3els 4ue est$n 'abilitados 4ue son8
D & D %
D + & D %
D 0 & D %
D + & D !a inforación anterior se puede colocar en p=bject u# f$cilente8
p=bject (). Bits (%)
p=bject (+). Bits (%)
p=bject (0). Bits (%)
p=bject (+). bits () 2'ora teneos una gran ariedad de inforación de los pí3eles 4ue se puede utili5ar de todos odos 4uereos.
0otación de píxeles En el juego de Tetris 4ue estaba originalente rotación de objetos CCF aun4ue a'ora 'a cabiado a CF. Coo este ejeplo fue escrito antes de 4ue el cabio se centrar$ en conertir un objeto 'acia la i54uierda. ;i desea girar un objeto ' acia otro lado a continuación coprobar el código fuente < abas fórulas est$n incluidos. 1órmula 0otación de CC X2 = (Y1 + PX PY) Y2 = (PX + PY X1 Q)
aso 2 Defina la longitud del o+jeto 3 anchura (%) Estaos trabajando en un solo pí3el por pí3el edio abiente. Esto significa 4ue la longitud # la anc'ura (Q) de cada pí3el es siepre 1. ?e incluido este paso para su uso con otras condiciones.
aso 4 Definir el píxel a ser mo5ido (6/ 72) 2l principio e o# a girar pi3el (%).
aso 8 Ejecutar las matemáticas 9i PX = ! PY = 2 = " X1 Y1 = 2 Q = 0
7 X2 = (Y1 + PX PY) Y2 = (PX + PY X1 Q)
or lo tanto X2 = ! Y2 = "
9na rotación de 1 grados de pi3el (%) aterri5aría en el pi3el (8/4) .
aso : Enjuague y 0epita El ,ltio paso es repetir el proceso para cada pí3el # cada
Código Fuente PICtris (Tetris en un microcontrolador PIC)
"V1.0 "liberación del código fuente. Tetris sin campanas + silbidos. " 1.1 score!eeping #adido $% &untuaciones. 'l juego mostrar( la puntuación m(s alta por )ltima ez en el principio. " *i su puntaje es mejor ue la puntuación m(s alta, se guardan en la ''&- como el nueo alto &--
utilizado para la selección al azar gr(ficos Const #$%berO&'apes Const n*in*o,
=
= 7 2-- #$%berO&'apes
/ / terminologa 2podra haber a#adido m(s ..3 / = 1 Const // = 0 Const
/ / T-4 las ariables Dim T2
Como P1.13
T24 Como P1.13 T2O# Como T2/O#.23 %' como Word 3 /$rrentX como Byte 3 s5T Como Byte
Const %'6nc
=
2
/ / T-4 interrupción permitir bandera / / T-4 desbordamiento / / ctia T-4 para comenzar incrementando / / m* registro / Ver / *oftware 5og Timer para entrar en el modo *6''&
Const 5ebo$nce5ea8
=
10
/ / odo de suspensión registra Dim 59#
'/'1 '/'0
/ / / /
Como O'//O#.73
Como O'//O#.13 Como O'//O#.0
/ 7-*8 / seg)rese de actualizar "9umberf*hapes" si se a#aden m(s 2o algunos se eliminan3 / : : : /
: : : / /
: : : / /
: : / /
: : : / /
: : : / / sub lnea de comando *6''& Asm
s$e:o End
End
Asm
Sub
interrupción T26nterr$pt ( 2 )
;$ar*ar ( 0 )
/ / ;opia de seguridad de las ariables del sistema
/ / ;omprobar si la interrupción fue de T-4 / /
Si T24
= 1 entonces T24 = 0 %'
Si
= %' + %'6nc %' = 1000 Entonces %' = 0 s5T = s5T + 1 Si s5T = "0 Entonces / / ;olocar el &=; en el modo *6''& -;>=56' en 59# = 1
'/'1 '/'0 T'< T'B T'/ T'5 T2O#
= = = = = = =
/ / / / / / ?acer ue todas las ' / * de las entradas de alta impedancia
1 0 44 44 44 44 0
/ / 5esactiar T-4 / / ;onfigurar oscilador @1!?z para
O'//O# s$e:o
= O'//O#
y
> 10001111
EndIf EndIf
/ / / / / /
/
comprobar si el botón de rotación reuiere comprobar si el botón de abajo reuiere estor de 'entos B ;ada de objetos / / Cna ez cada D00 ms, se establece un indicador para iniciar la cada siguiente objeto. / / 'sta es una de las pocas caractersticas cl(sicas del tetris Si
End
%' = ?00 Entonces 5ropObject = 1 Si
/ / uestra el contenido de EF 6'5s a traGs de la multipleHación / / seg)rese de multipleHación est( habilitado. / / 'sto es ital para proteger a las ariables compartidas como bject5ata %
=
1
entonces
/ / desactiar T5* eje H
POT< POTB
= POT< = POTB
O O
04 40
/ / llenar % habilitar un eje H 2la correcta para actual eje I3 Si /$rrentX
A ! Entonces Porta. pe*acitos ( /$rrentX )
=
0
POTB. pe*acitos ( /$rrentX )
=
0
Else
EndIf
/ / incrementa eje H, listo para el próHimo multipleH Inc ( /$rrentX ) Si /$rrentX
= ? Entonces /$rrentX = 0
EndIf
/ / una bandera de propósito general para inidcate la realización de una interrupción
nterr$pt/o%pete
=
1
EndIf EndIf
estore
Fin
de interrupción
/ / bucle hasta ue se produce una interrupción. / / Jtil para los sem(foros B permite ue los recursos compartidos para ser utilizado con poco 2no3 impacto sobre el calendario Sub ait4ornterr$pt ( )
nterr$pt/o%pete
=
0
epita !asta nterr$pt/o%pete End
=
1
Sub
/ / 'sta es la rutina sem(foro primaria. *i el programa utiliza los recursos compartidos, esta rutina se llama. Sub Pa$se$tipexing ( )
ait4ornterr$pt @p*ate'creen = 0
$T-4=' K 0 End
Sub
/ / ?abilita la multipleHación para reanudar Sub es$%e$tipexing ( )
$T-4=' K 1
@p*ate'creen
End
Sub
=
1
/ / borra el pasado ariedad de tipos de Lord Sub /ear
como
Como
Word )
Byte
i = 0 Para Bound ( p
Siguiente Final
Sub
/ / seleccionar un objeto aleatorio basado en el n)mero de objetos definidos Sub 'eect#extObject ( Byef pTarget ( ) Dim n*'eection Dim i
como
Como
Como
Word )
Byte
Byte
Dim /onta*or3 'eeccin
Como
Byte
/ / crear un n)mero aleatorio de 0 a 4MM
n*'eection
= an*;en. an*
/ / hacer una selección basada en el n)mero aleatorio creado
/onta*or = 0 'eeccin = 0
epita
conta*or = conta*or + n*in*o, 'eection = seeccin + 1 "asta conta*or C
declaración m(s, sólo en el caso 2prefiero no hacerlo, pero ;ombinar dos conjuntos con el modo seleccionado / / 0 B *obrescribir / / 1 B oer un eje % objetos en p5irection / / 0 B objeto se mueen hacia abajo / / 1 B oer objeto hacia arriba Sub oDeObjectY ( Byef pObject ( )
como
Word 3
como
Word 3
oer objetos de un eje H en p5irection / / 0 B objeto decisión correcta / / 1 B objeto moer a la izuierda Sub oDeObjectX ( Byef pObject ( )
comprobar el objeto ue se pasa a er si se ha llegado al fondo
/ / return true si comprobar el objeto pasado para er si est( contra la pared izuierda %a / / return true si comprobar el objeto pasado para er si est( contra la pared de la derecha %a / / return true si comparar la fuente % el objetio pasa por una colisión / / return true si
Cna forma eHtremadamente r(pida para girar los objetos N0 / BN0 grados. / / / / 9otasO . / / ;alcula el centro del bloue 2para ser utilizado como un punto de piote3, es decir, el centro de la forma de bloueo de llamadas ue 2 pH, p%3. / / ;ada ladrillo ue forma la forma de bloue girar( en torno a ese punto. &ara cada ladrillo, se puede aplicar el siguiente c(lculo. / / P5ónde ancho cada ladrillo % la altura es , la ubicación actual del ladrillo 2de la esuina superior izuierda3 es 2H1, %13 % la ubicación de ladrillo nueo 2H4, %43O / / H4 K 2%1 + pH B p%3 / / %4 K 2pH + p% B H1 B 3 / / &ara girar la dirección opuestaO / / H4 K 2pH + p% B %1 B 3 / / %4 K 2H1 + p% B pH3 / / / / *obre la base de una matriz afn 45
comprobar si las rotaciones son objeto actual para discapacitados Si 9i%ite*otation para
= 2 Entonces X1 = 0 a 7 pTarget ( X1 ) = P&$ente ( X1 )
Siguiente dem#s
/ / definir el origen objeto PX = OriginX PY = OriginY
/ / definir Q Q
=
0
/ / borrar la matriz de destino Para
X1 = 0 a 7 pTarget ( X1 ) =
0
Siguiente
/ / si el objeto est( limitado por rotación, luego inierta rotaciones / / 1 % @. 'sto har( ue el objeto a su ez de este modo / / ;L, ;;L, ;L, ;;L Si 9i%ite*otation
= 1 Entonces Si /$rrentotation = 1 Entonces p5irection = //
EndIf EndIf
/ / analizar cada pHel 2MHM trabajando con
et=ndeHA 2=nt 2A4333 K 1 EndIf EndIf Fin
Si
Siguiente $e%t EndIf End
Sub
/ / ;uenta la cantidad de pHeles ue la igualdad "1". 'st(ndar operadores bit a bit no se adaptaba / / 'sta rutina como pHeles podra mu% bien terminar en cualuier lugar despuGs de un
5eje caer el objeto en incrementos I uno. 5euele 0 si no. Función oDeObject5o,n ( Byef pObject ( )
es$ta*o
=
Como
Word )
Como
Byte
1
/ / *emaphore, para proteger a las ariables compartidas
Pa$se$tipexing
/ / comprobar si ha% una colisión con la parte inferior de la pantalla si /ecE4orBotto% ( pObject )
=
1
entonces
/ / ... si lo tiene B tiempo para salarlo ha%
es$ta*o
=
0
/ / o el objeto en el fondo
ergeObjects ( pObject3 BacEgro$n*5ata3 1 )
/ / obtener un nueo objeto hacia arriba % hacia funcionamiento
'eect#extObject ( pObject )
/ / comprueba las nueas lneas /ecE4or#e,9ines
=
1
lo dem#s
/ / oer el objeto hacia abajo oDeObjectY ( pObject3 0 3 1 )
/ / comprobar si ha% una colisión con el fondo Si /oision5etect ( pObject3 BacEgro$n*5ata )
=
1
entonces
/ / 'l objeto golpeó algo en el fondo. 'l objeto debe ser / / moido copia de seguridad % guardar en el fondo.
es$ta*o
=
0
/ / para moer el objeto hasta una
oDeObjectY ( pObject3 1 3 1 )
/ / moer el objeto al fondo 2o m(s3 ergeObjects ( pObject3 BacEgro$n*5ata3 1 )
/ / btiene un nueo objeto hacia arriba % corriendo
'eect#extObject ( Object5ata )
/ / comprueba si el objeto ha colisionado con el fondo %a. *i es as, entonces / / el juego es m(s. Si /oision5etect ( pObject3 BacEgro$n*5ata )
es$ta*o n*O&;a%e
= =
=
1
Entonces
0 1
EndIf
/ / ue siempre es posible ue las nueas lneas se ha%a hecho %a
/ecE4or#e,9ines
=
1
EndIf
/ / reanudar recursos de multipleHación, compartidos se hacen con EndIf
es$%e$tipexing
End
Función
/ / ;omprobar el estado de cada botón. 5ebido a ue esta rutina se llama a menudo, las posibilidades de perder sólo pulsar un botón / / son mu% poco probables. Sub /ecEB$ttons ( )
/ / comprueba si el botón izuierdo pulsado Si FG$ier*a
=
0
& 9e&t65ebo$nce
=
0
Entonces
/ / sem(foro B ariables compartidas est(n a punto de ser isitada
Pa$se$tipexing
/ / asegurar ue el objeto no es %a contra la pared de la izuierda Si /ecE4or9e&ta ( Object5ata )
=
0
Entonces
/ / moer el objeto a un b)fer temporal
ergeObjects ( Object5ata3 t%pObject5ata3 0 )
/ / 5isminuir el eje H oDeObjectX ( t%pObject5ata3 1 )
/ / asegurar ue no ha% colisiones con el fondo Si /oision5etect ( t%pObject5ata3 BacEgro$n*5ata )
=
0
entonces
/ / todo ha ido bien, combinar la matriz en la memoria intermedia de trabajo
ergeObjects ( t%pObject5ata3 Object5ata3 0 )
/ / actiar el temporizador antirrebote 2eita ue se pulse dobles etc3
9e&t65ea8 = 5ebo$nce5ea8 9e&t65ebo$nce = 1
/ / siempre la posibilidad de ue una nuea lnea se hizo sólo /ecE4or#e,9ines
=
1
EndIf EndIf
es$%e$tipexing EndIf
/ / comprueba si el botón derecho se pulsa
/ / 9TO '*T* ;'9T-=* son casi las mismas ue el anterior, eHcluidos por eso si 5ereca
=
0
& igt65ebo$nce
=
0
Entonces
/ / sem(foro B ariables compartidas est(n a punto de acceder
Pa$se$tipexing
/ / asegurar ue no se encuentra en el derecho
garantizar ue no se colisiones con comprobar si se pulsa el botón -otar Si otate
=
0
& otate65ebo$nce
=
0
Entonces
/ / sem(foro B ariables compartidas est(n a punto de ser isitada
Pa$se$tipexing
/ / Gtodo nuea rotación, nombrado en consecuencia, mas all(
#e,otation ( Object5ata3 t%pObject5ata3 / ) es$%e$tipexing
/ / asegurar ue nada se ha cado debido a las rotaciones cerca de paredes Si Pixe/o$nt ( Object5ata )
= Pixe/o$nt ( t%pObject5ata )
Entonces
/ / cheue por objeto colisión debido a la rotación Si /oision5etect ( t%pObject5ata3 BacEgro$n*5ata )
=
0
Entonces
/ / &or )ltimo, si se pone au, entonces, Todo fue bien. / / buffer temporal se fusionó con tampón de trabajo
Pa$se$tipexing ergeObjects ( t%pObject5ata3 Object5ata3 0 ) es$%e$tipexing
/ / actualizar el (ngulo actual 20 K 0, 1 K N0, 4 K 1D0, comprobar si se presiona hacia abajo Si
= 0 & 5o,n65ebo$nce 5o,n65ea8 = 5ebo$nce5ea8 5o,n65ebo$nce = 1
=
0
Entonces
/ / muee el objeto actual directamente a la parte inferior epetir "asta oDeObject5o,n ( Object5ata )
=
0
EndIf End
Sub
/ / eliminar la lnea en la ubicación pI Sub e%oDe9ine ( Byef pObject ( ) Dim X3 Y3 9inea
Como
como
Word 3
Byef
Byte
/ / cambiar cada lnea
borrar la lnea superior para
X = 0 a 7 pObject ( X ) . Bits ( 0 )
=
0
$e%t End
Sub
/ / uitar las T'-=95* % deoler el n)mero de lneas Y )
#$%berO&9ines EndIf
pHxees $e%t
=
0
= #$%berO&9ines
+
1
pY
Como
Byte )
End
Sub
/ / inicializar T-4 Sub nitiaise6T2 ( )
pri'adas
/ / / /
T2O# = 0 T2 = 0 %' = 0 P2 = 1II T2/O# = > 00100011
/ / / / / / / /
End
T2 = 0 T2 = 1 T2O# = 1 Enable ( T26nterr$pt )
/ / / / / / / /
/ 5esactiar T-4 / pagar T-4 interrumpe / =nicia m* / T-4 &erodo de registro &-4 / / T4;9 0O1 K preescala 00 K preescalador es de 1O1 01 K preescalador es de 1OF 1H K preescalador es 1O1E 0@O0E K &ostscale 0000 K 1O1 postscale 0001 K 1O4 postscale 0010 K 1O@ postscale ... 1111 K uno % diecisGis postscale / / -eset T-4 Valor / / ?abilitar T-4 interrumpe / / ?abilitar T-4 para incrementar
Sub
/ / =nicia el programa Sub nitiaiseProgra% ( )
/ / hacer todas las entradas digitales
@tis. 'et<5igita
/ / configurar ' / *
T'B POTB T'/ POT/ T'5 POT5 T'< POT<
= = = = = = = =
04 00 00 00 00 00 00 11
/ / habilitar wea!pullups &-T<
#T/O#2. 7 =
0
/ / intialise
inicializar eentos
5ropObject = 0 n*O&;a%e = 0 /ecE4or#e,9ines s5T = 0
=
0
/ / inicializar
sem(foro B ariables compartidas est(n a punto de ser isitada
Pa$se$tipexing Para
i
=
0
a
7
sem(foro B ariables compartidas est(n a punto de acceder
Pa$se$tipexing
/ / borrar toda gr(fico
t%pObject5ata )
/ / cambiar el resultado hacia abajo, dependiendo de ndice Seleccione
i
2 oDeObjectY ( t%pObject5ata3 0 3 - ) Caso " oDeObjectY ( t%pObject5ata3 0 3 10 ) Caso
End
Select
/ / o resultado con objeto gr(fico
ergeObjects ( t%pObject5ata3 Object5ata3 1 ) Siguiente
es$%e$tipexing
/ / esperar a ue "hacia abajo" para ser presionado / / realizar botón antiBrebote epita Delay(S ( 10 ) "asta
=
1
/ / esperar a ue se presione el botón epeat "asta
=
0
/ / realizar botón
'ste es el bucle principal del juego de Tetris Sub ain;a%e9oop ( )
/ / inicializa pantalla % las ariables
nitiaiseProgra%
/ / actiar la pantalla del temporizador de multipleHación % otras funciones
@p*ate'creen = nitiaise6T2
1
/ / mostrar la pantalla del flash
'pas'creen
/ / ostrar puntuación m(s alta de la ''&- )ltimo
ea*Jig'core
/ / reinicializar la pantalla % ariables 2pantalla de inicio % puntuaciones m(s altas puede haber alterado cosas ..3
Pa$se$tipexing nitiaiseProgra% nitiaise6T2 es$%e$tipexing
/ / seleccionar un objeto % colocarlo en bject5ata
'eect#extObject ( Object5ata ) epetir
/ / comprobar si la bandera cada de objeto se ha establecido 2inocado produce por la interrupción "Timerbject5rop"3 Si 5ropObject
= 1 Entonces 5ropObject = 0 oDeObject5o,n ( Object5ata )
EndIf
/ / comprobar si ha% lneas completas. cualuier rutina ue se muee un objeto debe habilitar esta opción. Si /ecE4or#e,9ines
= 1 )!en /ecE4or9ines ( BacEgro$n*5ata )
EndIf
/ / botones de escaneado % acciones como necesarias
/ecEB$ttons ( )
/ watch / reset software temporizador perro
s5T
=
0
/ / bucle infinito, o hasta ue el eento 'ndfame se establece erdadero "asta n*O&;a%e
=
1
/ / escribir la puntuación m(s alta en la ''&-
riteJig'core ( )
/ / mostrar el resultado8
'o,'core ( #$%berO&9ines )
End
Sub
/ / main programa de inicio / / semilla randgen módulo an*;en. niciaice ( 77 ) Si bien
*erdadero
/ / entrar en el programa principal del juego, se uedar( all hasta ue se produce un eento '95
ain;a%e9oop
Wend
Esquemático 2lgunas consideraciones con este es4uea8
?e utili5ado dos c$todo co,n 3 !E" atri5. Go 'e incluido ninguna disposición de las patillas para ellos en el pinout aría tanto entre los fabricantes. 9sted tendr$ 4ue coprobar la 'oja de datos para su atri5 específica.
!as cone3iones & son el lado positio de los !E".
!as cone3iones son los aspectos negatios de los !E"s.
Resistencias podría ser cual4uier alor por debajo de %11o's (enos 'asta 4ue tenga el brillo deseado < ;olía 1o's). Por faor intente una :BlinH#: prograa en el PIC no debe despedir a su circuito # trabajar por priera e5. Te puedo
garanti5ar 4ue esta disposición funciona 'e utili5ado la lista de cone3iones desde este iso sc'#eatic para desarrollar i PCB.
El síbolo de un tri$ngulo con una línea atraesada significa dd (0). Tal 9!G%1 Pin -1. =tros consejos8
Para $nodo co,n pantallas !E" de tipo tendr$ 4ue odificar el código fuente. 9sted tendr$ 4ue cabiar el 9!G%1 para un controlador de orígenes de los
?aga clic a4uí para enarlge la iagen. Gota8 ?e utili5ado la ariante de baja tensión de los anteriores >icro PIC su n,ero de parte es -!/+0%1.
El PCB "ebido a petición popular tabiJn esto# copartiendo los archi5os
Nombre: Osberto Rene Estrada Baches Grado: 5to bachiller industrial y perito en Electronica digital y microprocesadores
echa: !"#$#"%!$&'
Traba(o: )nte proyecto Tretis con Pic !*+,5"% y display de *-*
Catedraticos: .uan Escobar Ruben )rbi/u
Catedras: Tecnologia 0 Taller 1igital Tecnologia y Taller )naloga