Autor Tema: Cronometro cuenta atras con desactivacion para juego Paintballz  (Leído 3677 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Cronometro cuenta atras con desactivacion para juego Paintballz
« en: 16 de Enero de 2012, 16:36:29 »
este proyecto se me dio por desarrollarlo esta ultima semana, de primeras por la de foros en los que encuentro a alguien que le interesa hacerse un reloj cuenta atrás y active una sirena indicando del tiempo o para algo parecido a una bomba que allá que desactivas. juegos Paintball.

el proyecto es simple, para un 16f84a y cinco display controlador por un 4017 por barridos.

su funcionamiento es simple se enciende siempre con 15minutos y después con la puerta a.2 subes su valor de 5minutos en 5 hasta 90min o minimo 5.
a3 a 1 seria el ok que pulsarias te daria un codigo de 5 unos y ceros que nos serviran para poder desactivarlo una vez entra la cuenta atrás. (pulsas OK a.3=1 mantienes pulsado asta que parpadee la pantalla y una vez sueltes la cuenta atras empieza)

una vez entras en la cuenta atras puede pulsar a.2 para introducir los unos y ceros si das a ok comprueba si son correctos si no lo son si lo es parpadea la pantalla y vuelve al inicio si no es asi el tiempo triplica su velocidad, si vuelves a fallar se triplica de nuevo la velocidad de tmr0 y ala tercera salta del tirón.

para que el equipo contrario pueda conseguir el codigo desbloqueo deberia pasar una anilla que estaría conectada al bit 0 que si chocase con la patilla a.4 se activaria del tiron si consigues pasar sin tocar a.4 y tocar b.3 te sacara el codigo por pantalla medio segundo (pero solo una vez).
a partir de hay el equipo contrario introducirá el código y la desactivara..
realmente el código tan solo es una variable que hay al principio que se suma siempre hasta 31 dependiendo donde se pare te lo mostrara en binario en la pantalla..

los otros led sueltos serian los dos puntos que separarían los minutos de los segundos en b.1, b.2 seria el punto que separaría los segundos de la centésimas de segundo y por ultimo el led de b3 seria para mostrar que esta en la parte de introducir el codigo. pongamos que cuando muestra el tiempo b.1 y b.2 activados y b.3 desactivado si entras en la parte del codigo apago b.1 y b.2 y activo b.3 en los barridos de la pantalla..

R1-7 = 540 ohm
R8-9 = 56 ohm
R10  = 10Kohm
D1-3 = 1n4002 o similar
C1    = entre 470 y 1000uF 50V
C2    = 100nf
C3    = entre 100 y 220nf
T1-7  = bc547 o similar  (errata T2-7)
IC1   = 7805
IC2   = Cmos 4017
IC3   =16f84a configuracion estandar con cristal de 4mhz

display's catato comun, los terminales del display se conectarian en paralelo segun indico en el dibujo desde b.1 a b.7. b.0 esta asignada al reset
y 4 led para los puntos que seria el 6 caracter del barrido

http://www.youtube.com/user/tarariruritararirura#p/u/0/MWF8ys2GJvo

un saludo ala comunidad:



« Última modificación: 16 de Enero de 2012, 18:00:39 por rina »

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #1 en: 16 de Enero de 2012, 16:57:57 »
programa reloj cuenta atras con desactibacion.

:0200000098283E
:1000080008008001840AFF3E031D052893288F01FC
:100018008E00FF308E07031C8F07031C93280330C4
:100028008D00DF3019200D288D01E83E8C008D09E8
:10003800FC30031C22288C0703181F288C07640037
:100048008D0F1F280C1828288C1C2C2800002C2801
:10005800080003108C0D8D0DFF3E03182D280C0889
:10006800932803108D0C8C0CFF3E031835280C08C0
:1000780093288D018F018E0002304A288E000130AE
:100088004A288E0004304A288E00053094000F0854
:100098000D02031D51280E080C020430031801300C
:1000A800031902301405031DFF3093280038031D7F
:1000B800FF300405031DFF30932891019001103093
:1000C80092000D0D900D910D0E0890020F08031C63
:1000D8000F0F9102031877280E0890070F080318CE
:1000E8000F0F910703108C0D8D0D920B65280C08CE
:1000F8009328103094008D018C01930C920C031CF2
:100108008B280E088C070F0803180F0F8D078D0C0E
:100118008C0C910C900C940B812810089328831355
:1001280003138312640008000C3084004430052057
:100138008B018B17A2288B1B0800942B9F208316FA
:100148001030850083129F208316860183129F201A
:1001580085019F20FF3086009F20FC30AA009F2049
:100168000C30AB009F20DA30AC009F209E30AD00F1
:100178009F202E30AE009F20B630AF009F20F63073
:10018800B0009F201C30B1009F20FE30B2009F209D
:100198003E30B3009F20B4019F2083168730810032
:1001A80083129F2005108316051083129F20283084
:1001B800BB002330BC009F20C1019F20DE229F206E
:1001C80060239F2005158316051183129F20003098
:1001D800051901308C0000303D209E000030C11808
:1001E80001308C0000303D20A0001E08840020084B
:1001F8005A20A000A1003B088C003C088D000B3061
:100208008F00B8304220A200200821048400220870
:100218005A20A200A30064002208230403191B2902
:10022800B830BB020B30031C013EBC02C1149F2036
:100238006400051D2029C1109F20BD0A9F2064006D
:100248003D08203C031D2929BD019F200511831667
:10025800051183129F2085118316851183129F2013
:100268000030051901308C0001303D209E0000301F
:10027800411901308C0000303D20A0001E08840088
:1002880020085A20A000A1003B088C003C088D00E3
:10029800D2308F00F0304520A200200821048400CD
:1002A80022085A20A200A30064002208230403198C
:1002B8006429B830BB070B300318013EBC07411551
:1002C8009F2064000519692941119F206400851940
:1002D8006E29E1289F203D08C0009F2041239F20D0
:1002E800C0019F20C50164001F30450203188A29F8
:1002F8009F2085118316851183129F2060239F20DC
:100308006400851DE1289F20C50F77299F20FA30BA
:100318000B209F206400851D9A299F2060239F2021
:1003280085118316851183129F208E299F20A03066
:100338008B009F203C3081009F2064000518FF2916
:100348009F206400411EA929DE229F2060239F2050
:100358006400051AB32905148316051083129F201B
:1003680005118316051183129F20640005191E2AA2
:100378009F2005158316051183129F208515831666
:10038800851183129F206400051D1E2A9F200030BE
:10039800851901308C0000303D209E000030411846
:1003A80001308C0000303D20A0001E088400200889
:1003B8005A20A000A1006400200821040319FD2987
:1003C8009F203D08C0009F2041239F20C0019F20FF
:1003D80041149F20C5016400173045020318FC2909
:1003E8009F2060239F20323018209F20C50FEF29BF
:1003F8009F209F20A1299F208B019F20DE229F20E4
:10040800C3016400FB30430203181C2A9F20C40167
:100418006400C93044020318192A9F2060239F20D2
:10042800C83018209F20C40F0C2A9F20C30F052A0C
:100438009F20D0289F202830BF009F2005194014F6
:10044800051D40109F20C1149F2041159F209F200B
:1004580005158316051183129F20003005190130F8
:100468008C0000303D209E000030411901308C0086
:1004780000303D20A0001E08840020085A20A0005B
:10048800A1006400200821040319552A9F20411562
:100498009F200310C00D9F2040109F202830BF00D0
:1004A8009F209F206400051D5A2A41119F20051195
:1004B8008316051183129F208511831685118312D7
:1004C8009F200030051901308C0001303D209E002E
:1004D8000030C11801308C0000303D20A0001E08FB
:1004E800840020085A20A000A100640020082104EC
:1004F8000319892A9F20C1149F200310C00D9F2033
:1005080040149F202830BF009F209F2064000519B9
:100518008E2AC1109F2041239F2060239F206400C2
:10052800851DBD2A9F2040088C008D010330302096
:10053800C0009F2040088C008D0103303820C00087
:100548009F20640040083D02031DB42A9F208B01B0
:100558009F2007308F00D0300C209F20D0289F206C
:100568009F2002308316810283129F200130BF0032
:100578009F209F20640083160108813C8312031D7D
:10058800D22A9F2005148316051083129F208B0101
:100598009F20C0019F200130BF009F209F20BF03E4
:1005A8009F2064003F08003C031D2B2A9F20C001A8
:1005B8009F20A0299F203B088C003C088D005830C4
:1005C8008E0002308F006120C2009F2042089200F6
:1005D800930158308E0002308F007D209E00110854
:1005E8009F001E083B02B9001F08031C013E3C0285
:1005F800BA009F2039088C003A088D000A308E0016
:100608008F0161201008B4009F2039088C003A0837
:100618008D000A308E008F016120B9000D08BA00E4
:100628009F2039088C003A088D000A308E008F010F
:1006380061201008B5009F2039088C003A088D0009
:100648000A308E008F016120B6009F2042088C007E
:100658008D010A308E008F0161201008B7009F209D
:1006680042088C008D010A308E008F016120B8008D
:100678009F200630B9009F2008009F204008C50031
:100688009F20C3016400053043020318582B9F20A4
:100698004308343E840080014018800A9F200310DC
:1006A800C00C9F20C30F462B9F200830B9009F2005
:1006B8004508C0009F2008009F20C30164003D300A
:1006C80043020318922B9F20C401640006304402A1
:1006D80003188F2B9F20053018209F208514831620
:1006E800851083129F204408343E840000089E0031
:1006F8001E082A3E8400000886009F2078301820B3
:100708009F20340886009F20851083168510831249
:100718009F20C40F692B9F20C30F622B9F200800C6
:100728003C308100BE0A64003E08023C031DA42B35
:10073800BE010130BB020030031C013EBC02411661
:100748003B088C003C088D008F0100304820031DB9
:10075800B22B05148316051083128B010B110900A7
:02400E00FD3F74
:00000001FF


tiene un adelanto de 1,3segundos en 60min, era la mejor forma de ajustar tmr0 si que sedemorase en acer las demas funciones y se viera la pantalla display bien. por lo menos en mi prototipo.. ese esquema esta mejor ideado y le llegaria mas corriente alos display's..
« Última modificación: 16 de Enero de 2012, 18:30:56 por rina »

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #2 en: 16 de Enero de 2012, 18:19:57 »
buen y el programa en pic basic que seguro se puede mejorar y simplificar mas pero bueno hay os qued para criticar o copiar y pegar.
el programa en picpasic

define osc (4)
tiempo var word
mseg var word
memo var byte
b0 var memo.0
b1 var memo.1
b2 var memo.2
b3 var memo.3
b4 var memo.4
incodigo var byte
b7 var incodigo.0
codigo var byte
contador var byte
cont var byte
minuto var byte
tem1 var byte
tem2 var byte 
tem3 var byte
display var byte [10]
digitos var byte [5]
clear
intcon = %00000000
ON INTERRUPT GOTO relog
trisa=16
trisb=0
porta=0
portb=0
'
' defino los digitos
'
display
  • =%11111100  ' 0

display [1]=%00001100  ' 1
display [2]=%11011010  ' 2
display [3]=%10011110  ' 3
display [4]=%00101110  ' 4
display [5]=%10110110  ' 5
display [6]=%11110110  ' 6
display [7]=%00011100  ' 7
display [8]=%11111110  ' 8
display [9]=%00111110  ' 9
display [10]=%00000000 ' 
'
'        4     
'     ++++     
' 5 +       + 3 
'    +  1   +   
'     ++++   
' 6 +       + 2 
'    +       +   
'     ++++   
'         7     
'
iniciar:
option_reg = %10000111
low porta.0
tiempo=9000
memo=0
'
' establece el tiempo cuenta atras y activacion
'
programa:
gosub descomponer
gosub mostrar
high porta.2 ' suvimos y bajamos el tiempo a.2, a.3 empieza la cuenta atras
if porta.2=0 and b1=0 and tiempo>3000 then tiempo=tiempo-3000:b1=1
if porta.2=1 then b1=0
codigo=codigo+1 ' variable que nos dara el codigo para desblokear
if codigo=32 then codigo=0 ' sin complicaciones un numero del 0 al 31 en binario
low porta.2: low porta.3
if porta.2=1 and b2=0 and tiempo<54000 then tiempo=tiempo+3000:b2=1
if porta.2=0 then b2=0
if porta.3=0 then goto programa
'
' activacion cuenta atras
'
incodigo=codigo
gosub descomponercod ' descomponemos el codigo en binario
incodigo=0            ' para mostrarlo en pantalla
for tem3=0 to 30
    low porta.3 ' un reten nos obliga a tener pulsado 2 segundos para empezar
    gosub mostrar
    if porta.3=0 then programa
next tem3
pause 250
while porta.3=1 ' en cuanto sueltes empieza la cuenta atras
    GOSUB mostrar
    low porta.3
wend
intcon = %10100000
tmr0=60
'
' entra en la cuenta atras
'
cuentatras:
while porta.0=0 ' siempre que se alla activado la sirena sale
    if b3=1 then gosub descomponer ' descomponemos el tiempo al reducirse
    gosub mostrar
    if porta.4=0 then high porta.0 ' fallo pulso y activacion
    low porta.2
    if porta.2=1 then introcucir_cod ' introducir codigo
    high porta.2:high porta.3
    if porta.2=0 then introcucir_cod ' introducir codigo
    if porta.3=0 and b0=0 then ' muestra codigo una vez 0,5seg*
        incodigo=codigo
        gosub descomponercod
        incodigo=0
        b0=1
        for tem3=0 to 22
            gosub mostrar
            pauseus 50
        next tem3 
    endif
wend
'
' a.0 se a activado
'
intcon=0
gosub descomponer 
for tem1=0 to 250 ' se mantiene aqui 2 minutos
    for tem2=0 to 200
        gosub mostrar
        pauseus 200
    next tem2
next tem1
goto iniciar ' y vuelve a iniciarse
'
' canvia la pantalla para introducir el codigo
'
introcucir_cod:
contador=40
b7=porta.2
b1=1
b2=1
repeat  ' se mantiene un tiempo en la pantalla desactivacion
    high porta.2
    if porta.2=0 and b2=0 then  'incrementa bit 0
        b2=1
        incodigo=incodigo<<1
        b7=0
        contador=40
    endif
    if porta.2=1 then b2=0             
    low porta.2:low porta.3
    if porta.2=1 and b1=0 then ' incrementa bit1
        b1=1
        incodigo=incodigo<<1
        b7=1
        contador=40
    endif
    if porta.2=0 then b1=0
    gosub descomponercod
    gosub mostrar
    if porta.3=1 then ' comprueva que el codigo de la pantalla sea el mismo
        incodigo=incodigo<<3
        incodigo=incodigo>>3         
        if incodigo=codigo then ' si es el mismo va al principio
            intcon = %00000000
            pause 2000
            goto iniciar
        endif
        option_reg= option_reg-2 ' si no es corecto aumenta el ritmo tmr0
        contador=1
    endif   
    if option_reg=129 then ' al tercer fallo se activa a.0
        high porta.0
        intcon=0
        incodigo=0
        contador=1
    endif   
    contador=contador-1
until contador=0
incodigo=0       
goto cuentatras
'
' descomponer los caracteres minutos y milisegundos
'
descomponer:
minuto=TIEMPO/600
MSEG=TIEMPO-(minuto*600)
digitos[0]=mseg//10
mseg=mseg/10
digitos[1]=mseg//10
digitos[2]=mseg/10
digitos[3]=minuto//10
digitos[4]=minuto/10
digitos[5]=%00000110
return
'
' descomponer el codigo aleatorio
'
descomponercod:
tem3=incodigo
for tem1=0 to 4
    digitos[tem1]=b7
    incodigo=incodigo>>1
next tem1
digitos[5]=%00001000
incodigo=tem3
return
'
' mostrar caracteres en la pantalla display
'
mostrar:
for tem1=0 to 50 ' barridos
    for tem2=0 to 5 ' de los 5 display's y 3 led
        pauseus 5
        high porta.1
        portb=display[digitos[tem2]]
        pauseus 120
        portb=display[10]
        low porta.1
    next tem2
next tem1
return
'
' interruccion timer decenas milisegundos
'
DISABLE
relog:
tmr0=60 ' el tmr0 mas o menos ajustado a una centesima de segundo
cont=cont+1
if cont=2 then
    cont=0
    tiempo=tiempo-1
    b3=1
endif
if tiempo=0 then ' se acavo el tiempo activa a.0 y desavilita las interruciones
    high porta.0
    intcon = %00000000
endif
intcon.2=0
RESUME
ENABLE
« Última modificación: 17 de Enero de 2012, 02:18:54 por rina »

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #3 en: 16 de Enero de 2012, 18:27:30 »
y bueno la verdad que no se muy bien manejar como escrivir una ventanuca de texto pero vale que la aga para que algo salga mal. (como siempre)  joer, si asta le salio un coraazoncito por hay.. por la mariconadilla de los emoticonos esos..

bueno espero que a alguien le sea util posteare despues el mismo programa pero sin las partes de introducir el codigo..

espero que le sirva a mas de alguno el proyecto. y espero ver alguna critica y pocas preguntas estupidas pliss..

un saludo ai espero no tener ningun fallo (mi prototipo es un poco diferente.. una pantalla de un dvd con anodo comun).

bueno y aun asi creo que podris tambien borrar y canviar las partes de introducir codigo incluso ajustar bien el timer. el programa esta echo un poco ala lijera en esta sema, aunque fue un pequeño quebradero de caveza la parte para introducir eel codigo que quedase bien y entrara  el programa en el pic..  (tenia que mirar como simplificarlo casi llena el 16f84 para la poca cosa que es

un saludo pepe
« Última modificación: 17 de Enero de 2012, 03:17:57 por rina »

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #4 en: 16 de Enero de 2012, 21:24:41 »
Hola Rina, interesante el jueguito!, se lo voy a comentar a un amigo que anda con los Paintball a ver que le parece!  :mrgreen:

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #5 en: 17 de Enero de 2012, 17:46:55 »
la verdad que no es la primera vez que leo un comentaro de alguno que le interes algo asi para ese juego, y la verdad que segun melo curre es algo vastante barato de montar y de acerle lijeras variaciones al programa.

tengo que postearlo en algun otro foro para que sea algo localizable por el google.

vamos es un circuito que quitando por el precio de los display y el pic no saldria por mas de 15€ y con el buen detalle de poder desactivarla, (muy importante)

muchas gracias por echarle un vistazo ya contaras si le gusto como quedo.

un saludo pepe

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #6 en: 17 de Enero de 2012, 23:39:14 »
no entiendo eso de ponerlo en otro foro para que aparezca en google... con solo escribir "conometro Paintballz" ya aparece primero en google...  :mrgreen:
busqueda en google
« Última modificación: 17 de Enero de 2012, 23:41:25 por todopic »
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado rina

  • PIC10
  • *
  • Mensajes: 45
Re: Cronometro cuenta atras con desactivacion para juego Paintballz
« Respuesta #7 en: 17 de Enero de 2012, 23:50:35 »
jejejje. hay pondre "reloj cuenta atras para juego Paintball"   :D
aparte siempre se puede encontrar mejor estando en dos sitios digo yo.

nana pero si tambien la verdad que este foro es muy comun de encontrarmelo de la que busco algo, realmente me a solvetado alguna vez algunas dudas.
empezando que tanto manual de manejar el pbp y en ninguno te hablan de la interruciones. no la e usado hasta ace poco y funciones especiales, y mas quenada por que metime con el 16f628 y por provar  las entradas comparadoras analogicas..  (muy utiles para un apararo que controle la corriente o carga de baterias...

y puestos a tal, se podria canviar el titulo??? por "reloj cuenta atras para juego Paintball" igual seria mas adecuado. jejeje (aveces no las pienso bien)

un saludo
« Última modificación: 17 de Enero de 2012, 23:56:32 por rina »