Algoritmo POV (Persistence Of Vision) led

Siempre quise hacer un pov (Persistence Of Vision) de mas de 8 filas y encontré lo que buscaba... pero tengo un solo problema... el inicio del código.

Si ven el video lo explica perfectamente... pero me falta la primera parte del código q no se como hacerlo porque no se programar en ese lenguaje... a duras penas puedo hacerlo en c
pero me pareció muy sencillo y quisiera hacerlo.


La parte del código que muestra el video es esta:

Código:
trisa=0
trisb=0
trisc=0
    t VAR WORD
t=1500

start:
porta=0
portb=15
portc=0

PAUSE t

porta=48
portb=48
portc=0

....
.... etc

GOTO start


Si alguien me puede dar una mano en la primera parte antes del trisa trisb etc.. se lo agradecería

estoy usando un 16f877a
y quiero hacerlo con este lenguaje porque me pareció muy bueno lo de poner las salidas en binario.. así es mas fácil armar el pov.
 
Es basic y no hay nada antes de ese codigo, nada mas un adcon1=7 para poner como digitales lo puertos y definir el oscilador a usar...(y los fuses si se quiere hacer desde el codigo) y lo de las salidas en binario tambien se puede en C
 
Es basic y no hay nada antes de ese codigo, nada mas un adcon1=7 para poner como digitales lo puertos y definir el oscilador a usar...(y los fuses si se quiere hacer desde el codigo) y lo de las salidas en binario tambien se puede en C

gracias por la respuesta... me interesaria usar este codigo por la simplicidad...

no se casi nada de programacion por lo que te pido si tenes paciencia de explicarme qué tengo q poner antes de los trisa trisb etc...

Ej.. definir el pic... el oscilador... y eso que me habias explicado antes

como hago para ponerlo en "codigo"

Otra cosa... el cogido termina asi como estaba? (GOTO start) y listo?? o hay que poner algo mas..

muchisimas gracias por tu respuesta
 
Cosigue el Picbasic Pro.... y pones esto...

Código:
@ Device Pic16F877A
@ Device XT_Osc
@ Device WDT_Off
@ Device Pwrt_On
@ Device Bod_Off
@ Device LVP_Off
@ Device CPD_OFF 
@ Device WRT_OFF         
@ Device DEBUG_OFF       
@ Device PROTECT_OFF  

Define Osc 4
Adcon1=7

trisa=0
trisb=0
trisc=0
t VAR WORD
t=1500

start:
porta=0
portb=15
portc=0

PAUSE t

porta=48
portb=48
portc=0


GOTO start

Armas el circuito, lo compilas, lo cargas y seguramente te va a funcionar...
 
Última edición:
...Otra cosa... el cogido termina asi como estaba? (GOTO start) y listo?? o hay que poner algo mas...


Tienes que sacar los valores de los puertos para cada tiempo dado, en el vídeo la columna 1 es para el tiempo 1, la columna 2 es el tiempo 2, etc. Siguiendo la sig. estructura:

Código:
PAUSE t

porta=48
portb=48
portc=0
Sería mas inteligente crear una función a la que le pases los valores para cada puerto.

Y al final pones un GOTO start para que el código se repita hasta el fin del universo.

Saludos!
 
muchas gracias por las respuestas... ya pude compilarlo y andubo.....

funciona bastante bien:)

Ahora tengo una preguna en pics en general... que ya me ha pasado muchas veces desde que enpeze con pics.

Te cuento:

Yo programo el pic - lo pongo en el protoboard - lo pruebo - Funciona perfectamente

pero si desconecto la fuente un tiempo, y al otro dia lo vuelvo a prender, anda muy mal.. (se pone como loco el pic) . y si lo saco y lo pongo devuelta, vuelve a funcionar bien.

Que es lo que pasara???
gracias
 
Que es lo que pasara???

Niiiii iiiideeaaa, es la primer vez que escucho de un caso asi....

podrias poner el esquema completo , el codigo y especifica con claridad como esta echa la fuente de alimentacion para darte mi opinion....

asi de rapido se me ocurre que se queda sin alimentacion, y hay una cosa que se llama WDT(Watch Dog) que sirve mas o menos para eso, pero tu caso es muy raro...
 
Última edición:
Ahora tengo una preguna en pics en general... que ya me ha pasado muchas veces desde que enpeze con pics.

Te cuento:

Yo programo el pic - lo pongo en el protoboard - lo pruebo - Funciona perfectamente

pero si desconecto la fuente un tiempo, y al otro dia lo vuelvo a prender, anda muy mal.. (se pone como loco el pic) . y si lo saco y lo pongo devuelta, vuelve a funcionar bien.

Que es lo que pasara???
gracias

parami hay 2 posibilidades: la primera, podrias tener ruido en la fuente y la segunda, talvez no estes conectando el mclr (pin 4) con una resistencia de unos 47k a positivo o vcc. perdon que te pregunte esto que a lo mejor suena pavo pero ¿estas alimentando el circuito con 5 volt verdad? saludosss
 
Ponle además un pushbutton de reset entre el MCLR y la referencia (GND), además de su resistor pullup de 4k7......... de menos así no sera necesario quitar-poner el uC, bastará con oprimir el botón. je.

Saludos!
 
lo de la fuente ya losolucione.. era de 5 v pero no estaba bien filtrada.

lo que decis de crear una fuincion como seria? me das un ejemplo??

gracias
Tienes que sacar los valores de los puertos para cada tiempo dado, en el vídeo la columna 1 es para el tiempo 1, la columna 2 es el tiempo 2, etc. Siguiendo la sig. estructura:

Código:
PAUSE t

porta=48
portb=48
portc=0
Sería mas inteligente crear una función a la que le pases los valores para cada puerto.

Y al final pones un GOTO start para que el código se repita hasta el fin del universo.

Saludos!
 
...lo que decis de crear una fuincion como seria? me das un ejemplo??...


La verdad es que yo no uso picbasic, pero supuse que dado que era un lenguaje de "alto" nivel debiese de soportar el empleo de funciones..... ahorita estuve buscando para responderte pero creo que picbasic no permite funciones, ni macros, y usando una subrutina el código sería igual de largo.......

A ver si alguien nos ayuda y nos informa si de verdad picbasic no tiene implementado el uso de funciones.

Saludos!
 
La verdad es que yo no uso picbasic, pero supuse que dado que era un lenguaje de "alto" nivel debiese de soportar el empleo de funciones..... ahorita estuve buscando para responderte pero creo que picbasic no permite funciones, ni macros, y usando una subrutina el código sería igual de largo.......

A ver si alguien nos ayuda y nos informa si de verdad picbasic no tiene implementado el uso de funciones.

Saludos!

y porque le pones las comillas en "Alto" nivel.?.. :D

por supuesto que es de alto nivel, lo de alto nivel no significa que sea muy fregon o no...

http://es.wikipedia.org/wiki/Lenguaje_de_alto_nivel

y en realidad usando arreglos y la eeprom eso se hace en unas cuantas lineas..
 
Última edición:
ya solucione lo del pic.. era un problema de capacitores


Tengo una pregunta para los que saben de pic basic pro:

yo en el 16f877a puedo cargarle varias imagenes pero quiero poder con un pulsador ir cambiando 1 por una...

Intente pero no pude la verdad

Por ejemplo tengo

Imagen1:

Porta=3
Portb=2
Portc=45
Portd=12
Porte=1
etc, etc

GOTO imagen 1

Imagen 2:

y asi suscesivamente...


el Porte 0 lo uso como salida para una fila de leds

Pero el Port e 1 y 2 los puedo poner como entradas ... ahora.. como hago para que al presionar un pulsador pueda ir pasando de imagen 1 a 2... de 2 a 3.. etc.

muchisimas gracias a todos los q responden

PD: use el IF Porte.1=1 THEN imagen2

Pero funciona mal y ademas no quiero que valla a la siguiente...
 
y porque le pones las comillas en "Alto" nivel.?.. :D

Bueno, puse las comillas porque sinceramente no me gusta Basic, lo sé....... está mal subestimar dicho lenguaje. Aunque otra razón porqué puse las comillas fue porque si no posse la capacidad de emplear funciones se aleja del paradigma de representar código compresible, dado que se tienen que emplear técnicas más relacionadas a la arquitectura del procesador.

Pero es sólo mi manera de ver las cosas. Sin duda picbasic es una herramienta valida.

Saludos!
 
Si entiendo lo que dices, mas o menos, yo se programar en ambos y los dos me gustan... en ambos se puede hacer lo mismo, hasta ahorita lo unico que he visto que hay en C y no lo he visto que lo hagan en basic es el uso de los monitores VGA, pero esta dentro de mis proyectos hacerlo en basic a futuro... :D aahhh y en basic todavia no he visto soporte para dspic.... aunque creo que debe haber...:unsure:

Bueno, yo no mas te lo pasaba como dato....

Saludos...
 
como se puede saber que retraso hay que ponerle al pov? osea supongo que es depende de las rpm del motor que se use, hay alguna formula o algo para que se vea lo mejor posible? en el video usa un retraso de 1,5ms
 
Hola miembros que componen foro de electrónica, estos días me he decidido armar un pov de 32 leds, para mostrar texto o inclusive imágenes, les cuento.

Mi diseño cuenta con 4 registros serial a paralelo (74hc595), un microcontrolador pic18f4550, un sensor infrarrojo, la tira de led la tengo sujetada a un motor de ventilador haciendo la función como si de una aspa se tratase, Bien mi problema radica en como haces ustedes en cuestión de calcular tiempo correcto al pasar el diodo receptor infrarrojo por el punto de origen del pov para visualizar un arreglo alojado en la memoria del microcontrolador de la siguiente manera:

const unsigned int8 letras[] = {0x01,0x02,0x03,0x04 etc etc};

yo especialmente uso ccs compiler, y me atrevo y estoy abierto a sugerencias mis amigos, experiencias, y sobre todo nuevas ideas. De antemano un saludo vida y bienestar a todos. ...
 
se utiliza generalmente la interrupcion externa para el sensor, y con un timer puedes medir las revoluciones, despues divides el tiempo entre el numero de variables en el arreglo y en ese tiempo desplegas la variable.

o puedes hacerlo a ojillo XD
 
Atrás
Arriba