# Algoritmo para nombre and POV led



## anthony123 (Nov 30, 2007)

Hola compañeros este es uno de los muchos temas que escribiré para preguntar y debatir sobre los PIC's. Bueno, la cuestion es la siguiente: en josepino  se encuentra un proyecto sobre un airdisplay (parecido al propeller clock que tanto me gusta y me gustara) y se muestra un algoritmo para personalizar el mensaje. Me gustaria que me explicaran cuales son los pasos que debo tomar para modificar el algoritmo con mi nombre (anthony) y en diversas ocaciones cambiarlos a otros.
Aqui se encuentra el link del algoritmo: http://www.josepino.com/pic_projects/air_display/airdisplay_code.html. Gracias por su atensión y tiempo y espero sugerencias, modificaciones, etc. Gracias


----------



## El nombre (Nov 30, 2007)

Con lo sencillo que es decir "usar tablas"
¿Cual es el problema? es tan facil como... pos no, lo es más aun. dolo tienes que ir llamando ´a la letra que quieres invocar. en orden claro está.

con fijarte un poco, igual te das cuenta y todo.

PD joer como se notan los tripis


----------



## anthony123 (Nov 30, 2007)

Pues lo que pasa es que estoy superrrrr novato en esto de los PIC's y no se que tomar. Saludos.
PD: Me podrias mostrar como se haria con las 2 primeras letras?


----------



## anthony123 (Nov 30, 2007)

Algo asi?


```
;Microcontroller:  12f629 Speed: 4 Mhz Internal RC

delay 200 miliseconds
Set Comparator Mode 7

variable byte f = 00000000b   ; Output data
variable byte s                  ; Temporal variable
variable byte o                  ; message number.

procedure salida( s as byte ) is
gpio = s
delay 500 us
gpio = 00000000b
delay 200 us         
end procedure

procedure disp ( f as byte ) is
if f = "0" then f = "O" 
if f = "A" then
   salida(0011_0110)
   salida(0000_0101)
   salida(0000_0101)
   salida(0011_0110)
end if
if f = "B" then
   salida(0011_0111)
   salida(0010_0101)
   salida(0010_0101)
   salida(0001_0010)
end if
if f = "C" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0001)
   salida(0010_0001)
end if
if f = "D" then
   salida(0011_0111)
   salida(0010_0001)
   salida(0010_0001)
   salida(0001_0110)
end if
if f = "E" then
   salida(0011_0111)
   salida(0010_0101)
   salida(0010_0101)
   salida(0010_0001)
end if
if f = "F" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0000_0001)
end if
if f = "G" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0101)
   salida(0011_0101)
end if
if f = "H" then
   salida(0011_0111)
   salida(0000_0100)
   salida(0000_0100)
   salida(0011_0111)
end if
if f = "I" then
   salida(0010_0001)
   salida(0011_0111)
   salida(0010_0001)
end if
if f = "J" then
   salida(0001_0000)
   salida(0010_0000)
   salida(0010_0000)
   salida(0001_0111)
end if
if f = "K" then
   salida(0011_0111)
   salida(0000_0100)
   salida(0001_0010)
   salida(0010_0001)
end if
if f = "L" then
   salida(0011_0111)
   salida(0010_0000)
   salida(0010_0000)
   salida(0010_0000)
end if
if f = "M" then
   salida(0011_0111)
   salida(0000_0010)
   salida(0000_0100)
   salida(0000_0010)
   salida(0011_1111)
end if
if f = "N" then
   salida(0011_0111)
   salida(0000_0010)
   salida(0000_0100)
   salida(0001_0000)
   salida(0011_0111)
end if
if f = "O" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0001)
   salida(0001_0110)
end if
if f = "P" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0000_0010)
end if
if f = "Q" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0011_0001)
   salida(0011_0110)
end if
if f = "R" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0011_0010)
end if
if f = "S" then
   salida(0010_0010)
   salida(0010_0101)
   salida(0010_0101)
   salida(0001_0001)
end if
if f = "T" then
   salida(0000_0001)
   salida(0011_0111)
   salida(0000_0001)
end if
if f = "U" then
   salida(0001_0111)
   salida(0010_0000)
   salida(0010_0000)
   salida(0001_0111)
end if
if f = "V" then
   salida(0000_0111)
   salida(0001_0000)
   salida(0010_0000)
   salida(0001_0000)
   salida(0000_0111)
end if
if f = "W" then
   salida(0011_0111)
   salida(0001_0000)
   salida(0000_0100)
   salida(0001_0000)
   salida(0011_0111)
end if
if f = "X" then
   salida(0010_0001)
   salida(0001_0010)
   salida(0000_0100)
   salida(0001_0010)
   salida(0010_0001)
end if
if f = "Y" then
   salida(0000_0001)
   salida(0000_0010)
   salida(0011_0100)
   salida(0000_0010)
   salida(0000_0001)
end if
if f = "Z" then
   salida(0011_0001)
   salida(0010_0101)
   salida(0010_0101)
   salida(0010_0011)
end if
if f = "1" then
   salida(0010_0001)
   salida(0011_0111)
   salida(0010_0000)
end if
if f = "h" then         ; 'h' lowercase = Hearth character
   salida(0000_0010)
   salida(0000_0111)
   salida(0001_0111)
   salida(0011_0110)
   salida(0001_0111)
   salida(0000_0111)
   salida(0000_0010)
end if
if f = "!" then
   salida(0000_0000)
   salida(0010_0111)
   salida(0000_0000)
end if
if f = "'" then
   salida(0000_0011)
end if
if f = "." then
   salida(0010_0000)
end if
if f = "o" then        ; 'o' Lowecase
   salida(0001_0000)
   salida(0010_0100)
   salida(0010_0100)
   salida(0001_0000)
end if
if f = " " then        ; space character.
   delay 4 miliseconds
end if
delay 1 milisecond
end procedure

; main program
gpio = all output

if o = 0 then
; Display  "ANTHONY"
o = o + 1
anthony loop
disp("A")
disp("N")
disp("T")
disp("H")
disp("O")
disp("N")
disp("Y")
disp(" ")
disp("h")
end loop
end if
o = 0
salida(0000_0000)
sleep microcontroller   ; sleep command
nop   ; No operation
```


----------



## El nombre (Dic 1, 2007)

Hay una opción, no te lo tomes a mal, que te permite simular los programas. Prueba a usarla a ver que ocurre.

Saludos

PD me encanta tu postura. eres un autodidacta que merece la pena apoyar.


----------



## anthony123 (Dic 1, 2007)

Muchas gracias, pues lo que se lo saque de leer ,comprender y preguntar demasssss. Bueno me podrias decir que programa?  Estube conversando con algunos compañeros y me dijeron que necesito copilarlo o algo por el estilo y trabajar en conjunto con el MPlab


----------



## John Sebastian (Dic 3, 2007)

mira anthony 
en el mplab puedes crear tus programas y compilarlos y luego consiguete el proteus , una herramienta poderosisima para simulacion de microcontroladores y en ella lo simulas


----------



## anthony123 (Dic 4, 2007)

La pregunta del millon de dolares es: ¿Como lo hago? segun lo entendido ese lenguaje no es empleado en MPLAB


----------



## El nombre (Dic 4, 2007)

LA pregunta más lógica no sería ¿El programa original funciona?
Contesta eso primero. y luego continuamos.

Saludos 

PD. Esa pregunta te va a costar unas birras.


----------



## anthony123 (Dic 4, 2007)

El nombre dijo:
			
		

> PD. Esa pregunta te va a costar unas birras.


Ya las estoy enviando por fedex! 
Pues la verdad que modifique el codigo en microbasic y lo copile. Falta que me llegue el PIC y lo armo de una. 
PD: Todavia dejo una pregunta al aire ¿Como lo hago con mas resolusion empleando el archiconocido 16F84A?


----------



## bactering (Dic 6, 2007)

El programa es muy sencillo en asm. Usando tablas va al pelo. En volver de vacaciones, si alguien no se adelanta. lo hacemos.


----------



## anthony123 (Dic 6, 2007)

Podrias darme mas datos please:
*nombre del programa
*donde consigo la tabla?


----------



## bactering (Dic 13, 2007)

te adjunto un programita muy sencillo para sacar un código de una tabla. 
Primero aprende a utilizar la tabla simulando con el Mplab.
Si comprendes como funciona podrás hacerte el que quieras facilmente. Tiene una pega si tasas con las tablas. ya te darás cuenta.

Saludos y paciencia


----------



## anthony123 (Dic 13, 2007)

mmm la verdad tedria que ir intentando. Pero siempre me ha gustado tener una persona que me ayude personalmente o que acuda a un curso no se. Creo que se aprende mejor asi. Pero gracias por la ayuda. Seguire intentando. Cualquier cosa lo publico aki.


----------



## El nombre (Dic 14, 2007)

hombre, viene a ser como nadar. tienes que empezar por el principio. 
Bájate un tutorial y...
Tienes todo el permiso del mundo para bombardear mi correo cuanto quieras y respecto a lo que quieras. (no más que cervezas, pasta ni un ctmo).

A tu servicio


----------



## jcea (Dic 15, 2007)

No sé si entiendo la pregunta.

Los códigos que mandas a los leds los enciendes y apagan, formando el dibujo de las letras. Si inclinas tu cabeza sobre el hombro derecho y te fijas en los códigos, verás el "dibujo" que se manda para "dibujar" cada letra.

Con eso puede crear cualquier gráfico. Prueba a dibujar el texto que quieres en papel cuadriculado, y pasa luego la secuencia de casillas encendidas/apagadas al PIC.

Si no estoy respondiendo a la pregunta, disculpadme


----------



## anthony123 (Dic 15, 2007)

He visto millones de tuto's (hiperbole moderada) pero todos EXIGEN tener algo de conocimiento en X lenguaje, cosa que caresco!


----------



## El nombre (Dic 15, 2007)

En breve voy a disponer de mi ordenata y así poder terminar una cosa que tengo pendiente en este gran foro. Si quieres podemos abrir un par de temas ya que nadie se decide:
En uno voy comentando el pic en ensamblador, desde cero.
En otro se van comentando problemas.
De esa forma se puede quedar un bonito tutorial


----------



## patriceloco (Dic 16, 2007)

Hola he visto el circuito del enlace que aparece en el primer post, me podriais explicar de como con ese circuito, tan solo 7 leds,  se puede ver una palabra, perdonad la intrusion en el tema pero parece interesante.
Un saludo.


----------



## jcea (Dic 16, 2007)

patriceloco dijo:
			
		

> Hola he visto el circuito del enlace que aparece en el primer post, me podriais explicar de como con ese circuito, tan solo 7 leds,  se puede ver una palabra, perdonad la intrusion en el tema pero parece interesante.
> Un saludo.



Letra A:


```
**
 *  *
*    *
******
*    *
*    *
```

Letra K


```
*      *
*    *
*  *
**
*  *
*    *
*      *
```

Los 7 leds que giran son cuando están en la posición angular "1", se iluminan todos a la vez
un momento despues, que se han movido, se apagan todos menos el central. Un momento despues se apaga el central y se encienden los que tenía a cada lado. Un poco despues, se apagan esos dos y se encienden los dos que tienen a su lado, hacia el exterior... etc.
Acabas de dibujar una letra "k" en el aire


----------



## patriceloco (Dic 17, 2007)

Hola, ya voy entendiendo el tema. Pero tengo una duda, como se mueven los leds?
Estan colgando de una cuerda y los haces pendular?
O se mueven con algun motor paso a paso?
Un saludo.


----------



## jcea (Dic 17, 2007)

Yo he conectado una fila de leds al motor de un cd, para que gire a toda velocidad... Queda bastante espectacular


----------



## anthony123 (Dic 17, 2007)

patriceloco dijo:
			
		

> Hola he visto el circuito del enlace que aparece en el primer post, me podriais explicar de como con ese circuito, tan solo 7 leds,  se puede ver una palabra, perdonad la intrusion en el tema pero parece interesante.
> Un saludo.


Pues la verdad que es un proceso de rapidez y precision: Ese aparatito emplea un "defecto" en la vision humana, de manera que los led's, al prender y apagarse de manera rápida (uSeg) y de forma ordenada (codigo) forman una "palabra"


----------



## patriceloco (Dic 17, 2007)

jcea dijo:
			
		

> Yo he conectado una fila de leds al motor de un cd, para que gire a toda velocidad... Queda bastante espectacular



Podrias hacerme un dibujo, o mejor poner una foto de como lo has montado. No me imagino como lo has hecho, haces girar solo los leds o todo el conjunto circuito-pilas-leds ?
El tema este me parece muy interesante y me gustaria hacer algun circutillo para ver como queda.
Un saludo.


----------



## anthony123 (Dic 17, 2007)

Pues la alimentacion se puede hacer con pilas (celdas) o a través de las escobillas extraidas de un motor.


----------



## jcea (Dic 18, 2007)

patriceloco dijo:
			
		

> jcea dijo:
> 
> 
> 
> ...



El montaje lo tengo a 700 Km . Hago rotar todo el esquema: circuito, baterías y leds. Hay que tener cuidado para que esté bien equilibrado y no hay vibraciones.

Las escobillas era mi primer opcion y la mejor, pero no tenía nada mano...

De todas formas aunque uses escobillas, tienes que meterle un contrapeso a los leds, para equilibrar el giro.


----------



## patriceloco (Dic 18, 2007)

Tengo por hay unos motores de lectora de CD, a ver si me hago uno de esos AIR-Display, Voy a buscar mas información por internet, si podeis  os agradeceria que adjuntarais una foto de vuestros artefactos.
Gracias por la información.
Un saludo.


----------



## anthony123 (Dic 18, 2007)

Hola a la hora de programar el pic (12F629) me vi inmerso en este monton de opciones
¿cual deberia usar? Ademas en el ASM aparece esto:
*intrc_osc, wdt_off, pwrt_off, mclr_off, bod_off, protect_off*


----------



## anthony123 (Dic 25, 2007)

He terminado el circuito y funciona a la perfección pero solo con el codigo de josepino, el que creé no me funciona y cuando lo intento meter en el pic, el winpic800 me manda una ventana


----------



## bactering (Dic 26, 2007)

aisss!
veras:
Veo que has hecho funcionar el original. Entonces ¿que hace que no vaya el tuyo? "forever"

Anthoni no es reconocido ni es instruccion. observa la secuencia de todos los mensajes que saca y veras que el "copy- paste" no lo has usado correctamente.

Esto te va a costar unas birras (si las gano) joer que tour me voy a pegar por esos lares.

Saludos y a ver si te rula ya!

PD en electronica, mecanica, etc hay mucho de vista y comparacion.


----------



## bactering (Dic 26, 2007)

alguien pregunto como funcionaba?

http://www.josepino.com/pic_projects/air_display/indexsp.html

Una hilera de leds y a girar


----------



## anthony123 (Dic 26, 2007)

mmmmmm pues la verdad que no creo que halla problema con el "copy -paste" sino con la modificacion del algoritmo y la copilacion, por eso escribi al foro, en busqueda de ayuda 
Este es el mensaje:


----------



## bactering (Dic 29, 2007)

Veras como si:

Hay que estrujarse eso que evita las corrientes de aire entre oreja y oreja. En este caso la vista que no evita eso pero alegra vista cuando pasa una buena minifalda dominada por dos...
Y esto a que viene? voy a perder el hilo.

Escribi:  "..."forever" 

Anthoni no es reconocido ni es instruccion. observa la secuencia de todos los mensajes que saca y veras que el "copy- paste" no lo has usado correctamente. ..."

¿Que ocurre si cambias el "anthoni" que escribes antes de iniciar la secuencia de sacar letras por "forever". Fijate en el original a ver que pasa.

Animo que ya casi lo tienes.


----------



## anthony123 (Ene 1, 2008)

Pues no creo que halla problema con el copy-paste, creo que el problema esta en la copilacion. Tengo el microbasic pero desconosco de su aplicacion


----------



## leop4 (Ene 3, 2008)

es algo asi no YouTube - spokepov3-2 pero no me entra en la cabeza como lo acen o asi YouTube - Broadcast Yourself. 
o este YouTube - MonkeyLectric at Maker Faire 2007 la verdad me gano jejeje 8)


----------



## PICMIND (Ene 4, 2008)

amigos miren en la red es realmente dificil que encuentren información en español, deben buscarla en ingles pueden poner en google POV DISPLAY, led display, POV o parecidos asi encontraran bastante información.

El circuito de la bici es super sencillo, solamente son unos led conectados al puertoB de un 16f84 con sus respectivas resistencias, y listo. Para la alimentacion pueden usar dos pilas AA conectadas directamente al PIC y listo.

los que muestra leop4 son unos POV comerciales, esos tienen comunicacion IR y una cantidad de cosas. Pero para hacer lo que yo hice solo necesitan el PIC los led, paciencia e ingenio no más.

proximamente haré un tutorial de como hacer esto, cuando este lista yo les avisaré. lo que pasa es que estos dias he estado algo ocupado.


----------



## anthony123 (Ene 4, 2008)

Pero solo queria esa información (parte del pic), con respecto a la tematica del funcionamiento del circuito la SE, he investigado mucho en paginas de ingles, foros, paginas comerciales y una inmensidad de información, todo para concretar mi proyecto y principalmente, APRENDER a hacer lo benditos y salvadores codigos....


----------



## PICMIND (Ene 4, 2008)

Aprende primero a usar un lenguaje de programacion y luego podras hacerlo


----------



## anthony123 (Ene 4, 2008)

ufff eso es lo que estoy preguntado y te metes con la parte tecnica del artilujio... te estaba preguntando que programa empleas para copilar...


----------



## anthony123 (Ene 4, 2008)

Hablando de POV: vean este


----------



## leop4 (Ene 5, 2008)

si pero lo que no entiendo como hace el efecto de las luces cuando gira la rueda no me entra en la cabaza lo quero hacer con 8 leds en paralelo por rueda y un 555 pero ¿como formo las letras?


----------



## anthony123 (Ene 5, 2008)

Con un 555 no funciona, solo funciona con microcontroladores que encienden secuencialmente los led (de acuerdo con el codigo), cosa que el 555 NO hace


----------



## Fogonazo (Ene 5, 2008)

Mi funcion en el universo es claramente complicarle la vida a la gente !

¿ Y por que no hacerlo con un laser ?


----------



## anthony123 (Ene 5, 2008)

Creo que con los laser la imagen sera dificil de formar (Los ojos tomaran al laser como un estimulo fuerte y se intentaran cerrar)


----------



## leop4 (Ene 5, 2008)

che antony123 y que me decis de este: http://www.webelectronica.com.ar/news08/nota01/nota01/juegodeluces.htm sin pics sin complicasiones y sin nada lo compras lo armas y listo jejeje. lo que no se es que efecto hara sera como las luces del auto fantastico jejeje...


----------



## anthony123 (Ene 5, 2008)

Pues de esa forma la cosa pierde atracción, y en realidad creé el post para que me ayudaran a modificar el codigo para que apareciera mi nombre y es lo menos que se ha mostrado


----------



## PICMIND (Ene 6, 2008)

bueno anthony uso el lenguaje C y como compilador el CCS y MPLAB.

El secreto para hacer los dibujos, letras o lo que quieran mostrar es ir poniendo los led en 1 o 0 dependiendo de que es lo que quieran mostrar. 

Las luces secuenciales que dice leop4 son una perdida de tiempo por que no te mostraran nada más que lineas simples, ninguna figura.

Les recomendaria que si no son muy diestros en el desarrollo de software para uC que practiquen con ayuda de tutoriales y se ahgan unos secuenciadores, leds parpadeante o cosas por el estilo.

SUERTE


----------



## anthony123 (Ene 7, 2008)

Amigo podrías pasarme un buen tutorial?


----------



## FRYCK (Ene 10, 2008)

hola  a todos   en esta  pagina  hay   uno  facilito para que  lo mires  
http://www.ladyada.net/make/minipov3/index.html 
http://www.ladyada.net/make/minipov3/download.html

http://drewish.com/blogger/archives/2005/03/17/2sided_pov_toy.html


----------



## anthony123 (Ene 10, 2008)

Amigo y sabes algo de programacion?


----------



## FRYCK (Ene 11, 2008)

Si más o menos  manejo   assembler    y    C   
para  programar   y tienes  bases en   C  lo puedes  hacer  con mplab  descargando  también  un complemento de este  que se llama  mcc18   pero lo malo es que no  sirve para programar los  pic de la gama  16   o  con mplab   de microchip el ensamblador   es fácil  de aprender    y es  muy   utilizado  y en la red se consiguen  muchos tutoriales


----------



## anthony123 (Ene 12, 2008)

Pues te comento que llevo meses tratando de hacer algo con el MPLAB  y no he podido! Pero en especial la partde del codigo y la copilacion!


----------



## FRYCK (Ene 12, 2008)

hola  anthony123 sobre  que necesitas  si puedo te ayudo   si quieres   contactame  por el correo


----------



## luis_e (Ene 12, 2008)

Hola, el mplab 8.00 trae una version lite del C de Hi-Tech para pics 16fxx, las unicas limitaciones que tiene es que solo puede usarse con unos pocos micros. Ha, una de las cosas que tiene es que es bastante complicado hacerlo andar con el mplab, porque te da errores de todo tipo, hasta tuve que crear un archivo *.hex porque no lo encontraba ni tampoco lo creaba. Nada que ver con el C18 de microchip.

La verdad que el ensamblador es sencillo pero tiene sus complicaciones, lleva un buen rato agarrarle la mano.

Si quieres usar usar un lenguaje simple, usa picbasic. Es facil de aprender, esta muy bien documentado ( algunas versiones ) y tiene funciones que son muy buenas.

Yo pienso que la parte mas dificil de armar uno es hacerlo girar rapidamente y a su vez alimentar el circuito. El uso de pilas no me convence, ya que deben consumir bastante todos esos leds.

Para el programa creo que seria mejor el uso de C porque permite el uso de punteros y se haria mas facil a la hora de buscar los datos en la memoria para mostrarlos.

Ahora estoy bastante ocupado, pero cuando tenga un poco de tiempo voy a ver si me puedo armar uno porque es bastante interesante.

Saludos


----------



## anthony123 (Ene 13, 2008)

Pues yo tngo armado el de josepino y esta alimentado por 2 baterias alcalinas AA. Pues el consumo ronda por los 100 mA (No es mucho)!


----------



## pic-man (Ene 14, 2008)

Si por algo son maravillosos los leds es por su bajo consumo de corriente   

He seguido este tema y me parece bastante interesante, espero sacar algo de tiempo para armar mi propio POV, ya sabran de eso si lo llego a hacer.


----------



## anthony123 (Ene 14, 2008)

Sería bueno, que si lo haces, publiques el codigo!


----------



## anthony123 (Ene 19, 2008)

Alguien me podria explicar los pasos con el MPLAB?


----------



## PICMIND (Ene 20, 2008)

hola de nuevo anthony, me gustaria que especificaras a que te refieres con lo de pasos, lo unico qu tienes que hacer es cpiar un codigo, crear un proyecto y compilarlo. pon en Google compilar MPLAB y vas a encontrar buena información.


MUCHA SUERTE


----------



## anthony123 (Ene 20, 2008)

Ya lo he hecho y solo encuentro las "palabras" para formar el codigo! Stoy buscando la parte de copilacion!


----------



## anthony123 (Ene 21, 2008)

Consumo del pequeñuelo: 100 mA


----------



## FRYCK (Ene 24, 2008)

Hola  a  todos  en  esta pagina    hay un proyecto  completo referente  a este tema Spoke POV v3 tanto   codigo  como   pcb esquema  e instrucciones   de armado  espero les sirva.

http://www.ianpaterson.org/projects/spokepov20070731/index.htm


----------



## FRYCK (Ene 24, 2008)

anthony123 dijo:
			
		

> Ya lo he hecho y solo encuentro las "palabras" para formar el codigo! Stoy buscando la parte de copilacion!





Hola  anthony123  necesita la parte de la  compilación   en  mplab  pero con  que herramienta         porque es algo diferente si utilizas   una de las herramientas para  c    mcc18  o ccs  o si utilizas  assembler  te dejo creacion de proyecto en assembler


----------



## anthony123 (Ene 25, 2008)

Se ve expectacular ese proyecto! Aunque creo que tendria problemas con el en la parte de programacion!


----------



## FRYCK (Ene 28, 2008)

anthony123 dijo:
			
		

> Se ve expectacular ese proyecto! Aunque creo que tendria problemas con el en la parte de programacion!


hola   anthony123   en  esta misma paguina en descargas  esta   el codigo  en  .hex para programar el micro.   Solo es programarlo  creo que   no necesitas nada de programacion     esa parte  la  explican  es para  que  se guien si se quiere realizar   diseños propios.  chaos y suerte     ¿alguien ya lo ha echo   pues yo no  ?


----------



## anthony123 (Ene 30, 2008)

Amigo estube detallando las fotos y el autor puso 3 en una sola llanta! Será que hay que hacer 3?


----------



## Luis F (Feb 10, 2008)

Se utilizan 3 en el de la bicicleta porque no gira muy rápido, por lo tanto si utilizara solo uno se perdería la calidad del efecto y podrias notar el parpadeo de los leds, puedes hacerlo con solo uno pero debe girar lo suficientemente rapido unas 1200RPM


----------



## anthony123 (Feb 10, 2008)

Ahhh ok! y has armado alguno?


----------



## pepechip (Feb 10, 2008)

hola


			
				Fogonazo dijo:
			
		

> Mi funcion en el universo es claramente complicarle la vida a la gente !
> 
> ¿ Y por que no hacerlo con un laser ?


parece que no le habeis mostrado mucha atensión al comentario de fogonazo.
el diseño a base de diodos led no deja de ser un juguete, ahora bien si lo montamos con diodos laser y estos los proyectamos sobre un espejo que este continuamente oscilando, podremos representar cualquier tipo de mensaje sobre una pared. 
A base de diodos laser comercialmente puede resultar bastante interesante.
comparto la opinion de fogonazo, a mi tambien me gusta complicarle la vida a la gente.
saludos.


----------



## anthony123 (Feb 10, 2008)

Claro que le preste atensión, pero por ahora lo veo como un detalle "adicional" o "para probar", pero lo primero en mi lista de prioridades es aprender a modificar y/o crear un codigo para mostrar lo que sea por POV


----------



## pepechip (Feb 10, 2008)

yo tambien estoy trabajando en ello.
pretendo hacerlo para que resulte facil introducir cualquier tipo de mensaje, cuando lo tenga teminado lo pasare.
saludos


----------



## anthony123 (Feb 10, 2008)

Gracias! Pero tambien me gustaria aprender jejejejeje 8)


----------



## pepechip (Feb 10, 2008)

la base seria esta:
http://www.diselc.es/foro/TablaVocabulario.txt

Siempre el eterno problema el tiempo.


----------



## anthony123 (Feb 10, 2008)

Y las pausas donde estan?


----------



## Luis F (Feb 11, 2008)

Yo hice un propeller clock en el colegio para algo llamado expotecnica, pero nunca me metí con el código, y nunca funciono completamente bien.
Unas foticos

Y Un saludo a los alumnos del Pedro Justo Berrio -2006 que se acuerden de el


----------



## anthony123 (Feb 11, 2008)

Luis F dijo:
			
		

> Yo hice un propeller clock en el colegio para algo llamado expotecnica, pero nunca me metí con el código, y nunca funciono completamente bien.



¿¿¿Porque dices que no funciono completamente bien? Yo lo veo bien!


----------



## Luis F (Feb 12, 2008)

No funciono bien porque la hora digital y analoga se descuadraban, se reseteaba de ves en cuando y era muy sensible a la luz externa descuadrandose, por ejemplo la foto donde esta la hora digital, se ve 2 veces la hora porque el flash lo enloquece, y uno que otro pereque que ponia.[/quote]


----------



## anthony123 (Feb 12, 2008)

Ahhhh ya, porque seguro debe tener un sistema de IR Tx y Rx con el cual se "actualiza" el pic y la imagen queda mas clara y fija!


----------



## anthony123 (Feb 17, 2008)

*LO LOGRÉ* Al fin pude poner mi nombre en el POV!! Les dejo un video para que lo vean!!

YouTube - POV Led


----------



## microtronic (Feb 19, 2008)

esta version en RGB
  

YouTube - RGB LED POV display using pic16f628a


----------



## anthony123 (Feb 19, 2008)

Jejejejeje No te preocupes, ya hice contacto con el creador de ese video y estamos próximos a ponernos a charlar e intercambiar ideas! 8)


----------



## microtronic (Feb 19, 2008)

q bien paisano estemos al tanto entonces aqui te va otro a ver si lo has visto.....

YouTube - Super POVç

 mas información de creador del pov

http://www.electric-clothing.com/megapov.html


----------



## steinlager (Feb 19, 2008)

gira muy lento no?... deberia quedar casi siempre en el ismo lugar el msj...


----------



## microtronic (Feb 19, 2008)

steinlager dijo:
			
		

> gira muy lento no?... deberia quedar casi siempre en el ismo lugar el msj...


a cual te refieres al primero eso es asi..el efecto!


----------



## anthony123 (Feb 19, 2008)

Lo mismo pregunto yo! No te entendi!


----------



## steinlager (Feb 19, 2008)

Me referia al de anthony comparado con el RGB, es por las rpm del motor (el motor es mas lento)... Fijate q en el RGB gira mas lenmto el msj, cosa q el de anthony no hace... no se si me explico bien


----------



## microtronic (Feb 19, 2008)

eso puede ser por la camara habria que saber cuantos cudros por segundo toma la misma..


----------



## Eduardo (Feb 19, 2008)

El efecto le quedo asi porque no sincroniza los leds con el giro del motor, se comio ponerle un indice.
Ajusto la frecuencia de barrido de los leds lo mejor que pudo a un multiplo del giro, por eso va desplazandose despacio el mensaje.
Cuando se le mueve un poco la mano, cambia el plano de giro del motor y caen un poco las vueltas, y se nota porque ahi el mensaje avanza mas rapido.


----------



## anthony123 (Feb 19, 2008)

Yo no sincronice nada! Mi interés era poner mi nombre, lo demas es secundario u accesorio!
Eso vendrá despues: actualizacion con led's IR Tx y Rx


----------



## Eduardo (Feb 19, 2008)

Anthony, me referia al otro, al RGB.


----------



## steinlager (Feb 19, 2008)

Pues el RGB me gusta su efecto...


----------



## PICMIND (Feb 19, 2008)

Bueno muchachos he colocado en mi pagina un tutorial de como hice el pov para la bicicleta, el que lo quiera mirar dirijase a www.picmind.es.tl en la seccion de proyectos y clikan sobre POV TOY y listo.

espero que todo quede claro despues de esto.

MUCHA SUERTE y no dejen de poner sus comentarios en el libro de visitantes.


----------



## microtronic (Feb 19, 2008)

bueno el de 8 leds rgb me gustara hacerlo vamos aver si el amigo anthony123 consigue información aqui otro un poco mas complejo

32 leds rgb

 

YouTube - Magic Ball 32 RGB led

MAs información 

http://home.versatel.nl/edithenwilliam/william.htm?/edithenwilliam/william/magic.htm


----------



## anthony123 (Feb 19, 2008)

No me compliques la vida mas de la que la tngo ahora!


----------



## anthony123 (Feb 23, 2008)

Alguien me podria ayudar con lo de la actualizacion? Lo hago con fototransistores o diodos Rx IR?


----------



## microtronic (Feb 23, 2008)

anthony123 dijo:
			
		

> Alguien me podria ayudar con lo de la actualizacion? Lo hago con fototransistores o diodos Rx IR?



con diodos porq a una alta velocidad la fotocelda no es eficiente


----------



## anthony123 (Feb 23, 2008)

Yo se , pero me referia a la parte del programa del pic!


----------



## anthony123 (Feb 25, 2008)

Una foto en gran resolucion del artilujio montado sobre el rin de la bici! Perdonen el color, es de mi siter jejejejej!


----------



## anthony123 (Abr 11, 2008)

Bueno se me han ocurrido nuevas ideas.. pero esta vez con led's RGB y el archiconocido 16F84A

Puedo configurar todos los puertos como salidas?

Se me habia ocurrido emplear un decodificador de 7 segmentos para aumentar las salidas? ¿Es posible?

¿¿Cuanto es el minimo tiempo del "DELAY"?


----------



## pepechip (Abr 11, 2008)

con el 16f84 tienes 13 pines (2 puertos) los cuales los puedes configurar como desees. Si tu quieres 13 salidas no hay problema.

Con un cristal de 4Mhz el tiempo de ejecucion de instruccion sera de 1uS. Apartir de ese tiempo puedes crear el retardo que desees.


----------



## anthony123 (Abr 11, 2008)

Alguien me podria dar una mano con lo de la configuracion de los puertos?

La forma en que hay que hacer el codigo para obtener en la salida cualquier secuencia de estados logicos?


----------



## Tomasito (Abr 12, 2008)

anthony123 dijo:
			
		

> Bueno se me han ocurrido nuevas ideas.. pero esta vez con led's RGB y el archiconocido 16F84A
> 
> Puedo configurar todos los puertos como salidas?
> 
> ...




Si te referís a ese integrado de Motorola que no me acuerdo cómo se llamaba, te recomiendo que uses un multiplexor normal, no veo cuál sea el inconveniente. Me parece hasta más simple 
Y si, claro que es posible multiplexar las salidas. Por supuesto que vas perder resolución (en el sentido del tiempo -perdón si no me expreso bien, me levanté a las 7am para trabajar y solo había dormido algo más de 2hs (casi a las 5am me dormi) :S - )




Salu2!


----------



## anthony123 (Abr 12, 2008)

DriX dijo:
			
		

> integrado de Motorola



No trabajo con integrados de motorola   

Tienes mucha razón con respecto a la perdida de resolución!


----------



## anthony123 (Abr 14, 2008)

Bueno, ya que tengo un post abierto sobre POV's y programacion.. voy a continuar haciendo las preguntas aqui:

1* Como configuro los puertos en el programa Niple?
2* Como configuro el retardo?


----------



## anthony123 (May 11, 2008)

Se me ocurrio una idea y qria consultarla a los amigos foreros:
¿No sera mejor emplear un PIC con mayores puertos? Si es asi, cual me recomiendan?


----------



## patriceloco (May 13, 2008)

> ¿No sera mejor emplear un PIC con mayores puertos? Si es asi, cual me recomiendan?



Yo te recomendaria el 16F876, tiene 22 entradas-salidas o el 16F877 que tiene 33.



> 1* Como configuro los puertos en el programa Niple?



Lo de configurar los puertos en el niple es muy sencillo, solo tienes que darle en el arbol de la derecha a Rutinas basicas - Puertos -Configurar puerto X
Se te abre una ventana y alli a las que quieras que sean entradas les clicas en el cuadradito correspondiente, aceptas y ya tienes configuradoel puerto correspondiente.Luego puedes cambiar la configuracion cuando quieras.



> 2* Como configuro el retardo?



Los retardos yo los hago con Temporizadores - Tiempos por ciclos. Se te abre una ventana y eliges si quieres temporizacion fija o variable y cuanto tiempo quieres que tenga la temporizacion.

Yo tambien quiero hacer un POV con RGB, de momento estoy con otro proyecto pero sin duda que pronto empezare a desarrollar mi propio POV. Si te parece bien puedes poner en este post tus avances y problemas, tratare de ayudar en lo que pueda.
Un saludo.


----------



## renoid (May 14, 2008)

Hola a todos, Hace poco hice el circuito de la pagina de josepino y me funciono bien, ahora quiero cambiar los mensajes, para lo cual me baje el PicBasic Pro y lo integre con MPLAB, pero al momento de compilar, incluso el archivo original, me salen errores:



> Executing: "C:\PBP\PBPW.EXE" -p12F629 -ampasmwin -oq -z "texto.bas"
> PICBASIC PRO(TM) Compiler 2.47, (c) 1998, 2006 microEngineering Labs, Inc.
> All Rights Reserved.
> 
> ...


----------



## koki y2k (May 15, 2008)

anthony123 dijo:
			
		

> Alguien me podria ayudar con lo de la actualizacion? Lo hago con fototransistores o diodos Rx IR?



aNTHONY, podrias paarme un ejemplo en basic del pov, me esta matando esto de no poder compilarlo segun el algorhitmo que da jose pino en su pagina, muchas gracias.-


----------



## renoid (May 15, 2008)

Amigo Anthony, seria bueno que colocaras el codigo que utilizaste, ya q he tratado con el de josepino y no me funciona..  Gracias...


----------



## patriceloco (Jun 5, 2008)

Hola, estoy pensando ya en mi nuevo proyecto, un POV de 24 Leds RGB. Los Leds girarian alrededor de un motor dibujando un cilindro.
Todavia no me he decidido por un micro en concreto, estoy dudando entre un 16F84 y un 16F876. He pensado guardar los datos (dibujos) en una memoria 24LC16, que tiene 2 KB, suficiente para almacenar un par de dibujos, creo.
Estoy haciendo pruebas con el proteus y ya he conseguido tanto leer como escribir en la memoria EEPROM, el problema que veo es que creo que sera demasiado el tiempo de lectura de la EEPROM.
Alguien sabe cuanto tiempo tiene que estar encendido un led? supongo que habra que calcularlo en funcion de la velocidad del motor y del radio de giro no? si alguien me puede dar alguna pista en eso se lo agradeceria.
Tengo pensado alimentar cada 8 leds con tres 74HC595, uno por cada color, en total serian 9. Los datos los introduciria por medio de 3 salidas, una por cada color, una salida de reloj y otra que saque lo que hay almacenado en los 74HC595 a sus salidas.
Tengo tambien una duda de si es necesario un mecanismo de reinicio del dibujo al pasar los leds por un punto en concreto de la circunferencia o lo podria hacerlo por sofware.
Os agradeceria cualquier comentario que podais hacer sobre lo que he expuesto, mas adelante intentare poner algun croquis del aparato y un circuito aproximado.
Un saludo.


----------



## manuel360 (Jun 21, 2008)

Hey Anthony Saludos necesito de tu ayuda tengo los mismos problemas que tu y las mismas preguntas    pero no encuentro que programa usaste para editar y compilar este archivo de Jose Pino   ya intente Mplab y me muestra muchos errores  lo trate con  Mikropic y me muestra mas errores podras poner el algoritmo y con que programa lo compilaste 
Gracias estoy muy interesado en el este proyecto    .


----------



## anthony123 (Jul 6, 2008)

Los codigos que salen en la pagina NO SE PUEDEN COPILAR   

Esos codigos fueron colocados hay para GUIAR a los demas que qisieran armar el proyecto..! Bueno yo ahorita tngo tiempo sin experimentar pero me gustaria ver cual han sido sus avances.:! Si pueden coloquen imagenes y detalles de sus artilujios"!


----------



## renoid (Jul 7, 2008)

Hola, yo logre cambiar el mensaje, pero no con el codigo de Josepino. Sin embargo quedaron algunos "errores", por ejemplo al intentar cambiar el mensaje, y al principio no funcionaba, luego tuve que cambiar algunas opciones e ir probando por ensayo y error ya que soy nuevo en el mundo de los PIC's, aun me quedan algunos detalles, principalmente el de cambiar los mensajes.


----------



## anthony123 (Jul 8, 2008)

Bueno yo recibi ayuda de un foro ingles, al principio no entendi la solucion que me habian brindado, pero luego un generoso señor de la india me envio algunas imagenes y pude entender el proceso (Que lastimas que las imagenes estan perdidas en el PC; de caso contrario, las colgaria en el foro)


----------



## patriceloco (Ago 3, 2008)

Hola, como prometi hace ya tiempo os pongo unas fotos de lo realizado hasta ahora, es solo una prueba , se puede ver una P de color azul con el fondo rojo y el hueco de la p de color verde. De momento el codigo para realizar el dibujo esta en el propio programa del PIC, pero el objetivo es leer de una memoria EEPROM externa los datos para hacer varios dibujos, incluso dibujos moviles. La prueba se ha realizando moviendo el circuito con la mano a izquieda y derecha lo mas rapido posible, por eso en el video se ve la P al reves algunas veces. Todabia no he hecho nada de la parte mecanica que movera el circuito en circulos.
Cuando realice mas avances los ire posteando.

YouTube - prueba POV RGB


----------



## anthony123 (Ago 3, 2008)

Que pic estas usando? Empleas sistemas opticos para actualizar la imagen?


----------



## patriceloco (Ago 4, 2008)

Estoy usando el 16F84A, de momento el dibujo esta dentro del codigo del pic pero mi intensión es almacenar el dibujo o caracteres en una memoria EEPROM (24LC16) externa. Aunque de momento debido, creo,  a un fallo en el circuito no he conseguido leer de la EEPROM, espero que el tiempo de lectura no sea muy alto y me fuerce a replantearme el tema.
Ahora voy a trabajar en el sistema de giro de los leds para ver mejor el resultado. En cuanto obtenga resultados lo posteo, estoy muy ilusionado con las primeras pruebas.


----------



## anthony123 (Ago 4, 2008)

Bueno aunque no se nada de programacion, no se si te diste cuenta pero pude poner mi nombre en el POV..!! [_"El que percevera, alcanza!!"_]...!

Estube haciendo el contacto con varias personas de youtube y las respuestas coincidian en lo mismo: Hay que usar una &%&$%$· EPROM.:!

Yo por mi parte estoy tratando de conseguir información para aprender a programar y armar mis propios POV!


----------



## patriceloco (Ago 5, 2008)

Hola, esta tarde he hecho mas pruebas con buen resultado. He colocado el POV en una extructura y he hecho girar esta con un atornillador a bateria. Todavia tengo que conseguir un motor que haga el giro y ver la manera de hacer llegar corriente al POV mientras gira. De momento le he puesto pilas recargables pero la idea es alimentar todo, motor y POV con la misma fuente de enrgia, el enchufe de 220V. Si alguien sabe alguna forma de hacerlo, lo de pasar corriente a el POV que esta girando que me lo diga, todavia no se me ha ocurrido nada para solucionar ese problema.

Aqui os dejo un video que he hecho, no tiene demasiada calidad pero se puede apreciar el resultado:

YouTube - prueba 2 POV RGB


----------



## anthony123 (Ago 5, 2008)

Che probá con las escobillas de un motorcillo..!  Conectas las 3 y el GND los dejas para el hierro del motor.. Recoda usa un diodo de proteccion, un regulador de voltage y condensadores de mediano tamaño..!


----------



## patriceloco (Ago 8, 2008)

Ya he conseguido solucionar el tema de alimentar el circuito desde el exterior. Me he fabricado una placa de circuito impreso con dos circunferencias concentricas de unos 3 mm de grosor, la he sujetado al motor y por la parte del rotor le he puesto un par de escobillas para pasar la corriente, funciona muy bien. El problema ahora es que no consigo un motor de la suficiente potencia para mover la estructura lo suficientemente rapido para que se vea el dibujo continuamente. Ahora lo tengo con el motor de un radio casette viejo. Voy a probar a hacer una estructura mas ligera, con eso y quitando el peso de las pilas que es bastante importante puede que consiga una velocidad aceptable. Si alguien sabe de donde puedo conseguir un motor potente y barato que me lo diga.
Seria importante tener ya el motor para realizar la estructura definitiva y centrarme en el programa.


----------



## anthony123 (Ago 8, 2008)

Opciones: 
**Motor DC + engranaje - Peso de la estructura
**Motor AC+ Dimmer- Peso de la estructura

El motor de cassetera de por si es lento..! Buscá algunas de mis opciones u otras que te ofresca tu mercado electrico local.


----------



## patriceloco (Ago 10, 2008)

Ya estoy de nuevo aqui para mostraros mis avances. He encontrado un motor que se ajusta perfectamente a mis necesidades. Era de un impresora HP vieja.
Tambien le he añadido al circuito un detector de campo magnetico, para sincronizar el dibujo y que siempre lo escriba en el mismo espacio. El integrado es un DN6851 que lo saque de un radio-casette viejo. Para excitarlo he utilizado un trozo de iman flexible que lo he sacado de un ventilador de PC.
Aqui os dejo unas fotos y un video. Ahora que ya tengo el Hardware me enfrascare de lleno en programarlo, a ver que se me ocurre, imajenes en movimiento, frases largas, ....


YouTube - prueba 3 POV RGB


----------



## anthony123 (Ago 11, 2008)

Excelente aporte al post...! Estas usando una memoria externa¿


----------



## patriceloco (Ago 11, 2008)

De momento lo que dibuja es parte del codigo del pic, pero mi intensión es escribir los datos en una memoia EEPROM 24LC16 ( 2KB ) , de echo en el circuito de control ya esta colocada la EEPROM, solo me queda hacer pruebas para leer de ella. Simulando en el proteus lee bien pero en la realidad no, puede que sea porque el cristal  es de 14 Mhz y el codigo de lectura de la EEPROM se ha diseñado para una frecuencia de 4 Mhz.
Ya posteare resultados.


----------



## anthony123 (Ago 11, 2008)

Bueno yo no tengo tus niveles de conocimientos.. por eso no puedo lograr mas que un simple monocromatico..  ops:


----------



## patriceloco (Ago 12, 2008)

La diferencia entre un monocromatico y un RGB es que el circuito es un poco mas complicado, los componentes se triplican, pero el control es facil. Yo pense que una vez de hacer un POV que mejor que un RGB, y ya puestos de 24 leds. 
A sido todo un reto el crear el circuito y el programa (todavia en desarrollo) partiendo de cero. Pero cuando lo pones en funcionamiento y poco a poco vas avanzando y viendo los resultados te sientes realizado, aunque en realidad no tiene una utilidad practica.
A ver si para la proxima puedo decir que he conseguido leer de la EEPROM. Una idea que tengo es programar todo el abecedario en la EEPROM, junto con algun caracter especial y en el codigo del pic programar una serie frases. No lo he calculado pero supongo que en la EEPROM tendre espacio de sobra y que en el codigo del pic tendre sitio para muchos frases.
Ahora tengo un problema, a la hora de programar el PIC, con Ic-Prog, me da errores, impidiendo acabar de programar y teniendo que volver a comenzar de nuevo. Creo que es debido al programador, un TE-20 que me compre alla por el año 1996. He decidido fabricarme uno y he estado mirando varios diseños y me he quedado con el PIC-PG2C, he sacado la información de esta pagina:

http://www.piratainc.tk/


Hasta pronto


----------



## anthony123 (Ago 12, 2008)

http://www.hamradioindia.org/circuits/feng.php

Usá este.. yo lo hago y no me ha traido problema.. Ademas acepta multiples  familias de PIC


----------



## gilmata (Ago 12, 2008)

Hola excelente el POV de RGB muy bien que se yo en estos dias eh visto el de josepino y quiero hacermelo aver que tal estaria bien que tuviera mas leds pero aver que tal queda con 7.


----------



## anthony123 (Ago 12, 2008)

Si quieres dar un toque de color a un monocromatico podrias hacer un decade counter con un FF y ponerle varios RGB..


----------



## gilmata (Ago 13, 2008)

Bueno ahora estoy esperando mi pic que llegue para ponerme ah armar todo mientras me puse a hacer pruebas con el Isis el emulador, pues me armo todo el circuito de la pagina de jose pino le meto el hex de jose pino al pic y le doy emular y me tira error este.

Bueno pienso que sera algun error del programa por cierto anthony podrias compartir tu codigo? o decirnos como le hiciste tambien tengo problemas al compilar


----------



## anthony123 (Ago 13, 2008)

Estas usando el hex o el algoritmo?


----------



## patriceloco (Ago 14, 2008)

Acabo de hacer el circuito en el ISIS, le he cargado el codigo (JP6293E.HEX) de la pagina de Josepino y  me da el mismo error:

FATAL: [U1] Program or EEPROM data has invalid address [2000] for this device

Yo creo que el codigo no esta bien.


----------



## gilmata (Ago 14, 2008)

Si ya eh buscado todo y no todo esta bien tambien pense que era el codigo pero por aqui lei que ya lo hicieron y con el codigo que esta en la pagina y funciono asi que pienso que es un error del isis o no se, tambien me arme el led chaser en el isis de la misma pagina de josepino, le cargo el hex y me tira el mismo error


----------



## patriceloco (Ago 19, 2008)

Ya he conseguido leer de la EEPROM externa (24LC16), el problema pareceque era que le faltaba una resistencia de el bus de datos a VCC. 
La mala noticia es que como me temia el tiempo empleado en leer de la EEPROM es  muy elevado haciendo inviable este metodo. A no ser que pueda reducir el tiempo de lectura considerablemente. En este video que os pongo el PIC lee de la EEPROM y lo escribe en los leds, seguidamente vuelve a leer y a escribir. Se puede apreciar que el tiempo es muy elevado produciendo un dibujo muy ancho:

YouTube - prueba 4 POV RGB

Leo los datos de la siguente forma:

-Leo un byte de la EEPROM y sumo uno al contador de celda a leer, serian los primeros 8 leds de color rojo.

-Leo otro bite de la EEPROM y vuelvo a sumar uno al contador de la celda a leer, serian los primeros 8 leds de color verde.

-Leo otro bite de la EEPROM y vuelvo a sumar uno al contador de la celda a leer, serian los primeros 8 leds de color Azul.

-Vuelvo a realizar el proceso otras dos veces, despues de hacerlo tres veces voy a la rutina que saca la información de los registros ROJO1,ROJO2, ROJO3, VERDE1, etc a los leds.

-Empiezo desde el principio otra vez.

Resumiendo, hago 9 lecturas a la EEPROM, y una escritura a los leds. El tiempo de escritura es despreciable pero el de lectura es muy elevado.
Estoy utilizando el NIPLE, no se si lo conoceis, es un programa para programar PIC con un metodo grafico, tipo diagramas de flujo. El programa es muy intuitivo, para mi es genial.

He estado probando el codigo en el Proteus y me da los siguientes tiempos:

Tiempo de lectura de 1 Byte = 0.49 mS
Tiempo de escritura = 0.053 mS
Tiempo de lectura-escritura de los 9 Bytes = 4.59 mS

Necesitaria saber si se puede leer de una EEPROM externa por I2C mas rapido. He estado ojeando el datasheet pero como esta en ingles no me entero de casi nada. Alguien conoce alguna pagina en castellano donde expliquen el protocolo I2C ?


----------



## gilmata (Ago 19, 2008)

Orle que bien seva viendo eso tan siquuiera ya seve algo.

yo quiero armarme el mio sencillo y luego uno con eeprom y hasta un tecladillo    supongo que si se podra   

Ahora ando tratando de hacer mi codigo pues de basic no entiendo nada y pss no entiendo el de josepino y no eh encontrado nada.


----------



## jose_flash (Ago 27, 2008)

ola queria saber si se puede sustituir el 12F629 por el 12F683 o 12f675 ya que el primero no lo tienen mi tienda habitual y la cuestio el codigo hex seria el mismo..?


----------



## cooperharris (Ago 29, 2008)

jose_flash dijo:
			
		

> ola queria saber si se puede sustituir el 12F629 por el 12F683 o 12f675 ya que el primero no lo tienen mi tienda habitual y la cuestio el codigo hex seria el mismo..?



saludos amigo, si no  hay problema  en que  utilices el pic que quieras, lo que tendrias que cambiar es el  programa del mismo y ya.


----------



## cesartm (Dic 20, 2008)

anthony123 dijo:
			
		

> He terminado el circuito y funciona a la perfección pero solo con el codigo de josepino, el que creé no me funciona y cuando lo intento meter en el pic, el winpic800 me manda una ventana



En el diagrama aparese un 12f629 y en algoritmo indica un 12f675, con cual te funciono?


----------



## FRYCK (Dic 21, 2008)

cesartm dijo:
			
		

> anthony123 dijo:
> 
> 
> 
> ...



hola  lo mas  facil es  compilarlo de  nuevo  cambiandole  el tipo de prosesador   s i solo tienes  el .hex  puedes  obtener  el codigo  en  asembler  con  picdisasm106  cambiar  las   directivas de prosesador  y compilarlo  con el  mplab   cualquier duda  comentenla


----------



## nosferatuspacho (Dic 30, 2008)

hola, me he interesado con esta cuestion, al principio intente montarlo conel de jose pino, y crei  que no funcionaba, por el mismo problema con ISIS, es mas, a la fecha no lo he probado y no se si consiga 12f´s, la cuestion es que de codigo y lenguajes cero,  pero vi en una web que ya no encuentro, donde un chavo pone el mensaje KEVIN y el codigo (de hecho pequeño) estaba en asm y la configuracion de los puertos se hacia binaria, dotando resolucion de 8 filas 60 columnas.

 estaba solo el codigo fuente y solo tuve que compilarlo con mpasm para 16f84, luego de interpretar la interaccion del binario con las salidas, escribi "Up the IRONS", pero veo que aqui se avanzo en serio, me gustaria incluirle frames, interrupciones, control del motor paso a paso (hacia un amplificador de poder), 
el sensor magnetico u optico, rgb (hay que bonita es la electronica)

agradeceria si alguien postea codigos GNU (o   libres) con las opciones de control de lo enumerado.
obviamente no me voy sin aportar, este es el asm intuitivo antes de compilarlo en el MPASM:


```
STATUS      equ       03h       ; Status Register
TRISA       equ       85h       ; TrisA  Register
PORTA       equ       05h       ; A Port
TRISB       equ       86h       ; TrisB  Register
PORTB       equ       06h       ; B Port
COUNT1      equ       0Ch       ; delay loop counter

P           equ       0Eh       ; pointer
C           equ       0Fh       ; display counter

FSR         equ       04h       ; File Select Register
INDF        equ       00h       ; Uses contents of FSR to address Data Memory


bsf         STATUS,5            ; ==> Bank 1
movlw       00h                 ; B port
movwf       TRISB               ; output
bcf         STATUS,5            ; ==> Bank 0

               
            
movlw       b'00000000'
movwf       10h
movlw       b'11111110'
movwf       11h
movlw       b'11111111'
movwf       12h
movlw       b'00000011'
movwf       13h
movlw       b'11111111'
movwf       14h
movlw       b'11111110'
movwf       15h
movlw       b'00000000'
movwf       16h
movlw       b'00011111'
movwf       17h
movlw       b'00010100'
movwf       18h
movlw       b'00010100'
movwf       19h
movlw       b'00001000'
movwf       1ah
movlw       b'00000000'
movwf       1bh
movlw       b'00000000'
movwf       1ch
movlw       b'00100000'
movwf       1dh
movlw       b'11111110'
movwf       1eh
movlw       b'00100000'
movwf       1fh
movlw       b'00000000'
movwf       20h
movlw       b'11111110'
movwf       21h
movlw       b'00010000'
movwf       22h
movlw       b'00010000'
movwf       23h
movlw       b'00011110'
movwf       24h
movlw       b'00000000'
movwf       25h
movlw       b'00011100'
movwf       26h
movlw       b'00101010'
movwf       27h
movlw       b'00101010'
movwf       28h
movlw       b'00011000'
movwf       29h
movlw       b'00000000'
movwf       2ah
movlw       b'00000000'
movwf       2bh
movlw       b'11111111'
movwf       2ch
movlw       b'11111111'
movwf       2dh
movlw       b'00000000'
movwf       2eh
movlw       b'11111111'
movwf       2fh
movlw       b'11111111'
movwf       30h
movlw       b'01111000'
movwf       31h
movlw       b'11011100'
movwf       32h
movlw       b'01110110'
movwf       33h
movlw       b'00101011'
movwf       34h
movlw       b'00011101'
movwf       35h
movlw       b'00111110'
movwf       36h
movlw       b'01110111'
movwf       37h
movlw       b'11100011'
movwf       38h
movlw       b'01110111'
movwf       39h
movlw       b'00111110'
movwf       3ah
movlw       b'10011100'
movwf       3bh
movlw       b'11001000'
movwf       3ch
movlw       b'11111111'
movwf       3dh
movlw       b'11111111'
movwf       3eh
movlw       b'01110000'
movwf       3fh
movlw       b'00111000'
movwf       40h
movlw       b'11111111'
movwf       41h
movlw       b'11111111'
movwf       42h
movlw       b'00100100'
movwf       43h
movlw       b'01110110'
movwf       44h
movlw       b'11010011'
movwf       45h
movlw       b'11001011'
movwf       46h
movlw       b'01101110'
movwf       47h
movlw       b'00000000'
movwf       48h
movlw       b'00000000'
movwf       49h
movlw       b'00000000'
movwf       4ah
movlw       b'00000000'
movwf       4bh



Restart     movlw     10h       ; Load 0x10 in P (first led combination) 
            movwf     P
            movlw     3Ch       ; load 0x3C in C (0x3C=60 led combination)
            movwf     C

Start       movf      P,0       ; W = P
            movwf     FSR       ; FSR = W
            movf      INDF,0    ; W = INDF (INDF is the value pointed by FSR)
            movwf     PORTB     ; Display W on the led row
            incf      P,1       ; P++
            call      Delay     ; wait a little bit
            decfsz    C,1       ; c--;if(C!=0){goto start} else {goto restart}
            goto      Start
            goto      Restart

   

Delay
Loop1       decfsz    COUNT1,1  ; goto loop1 while COUNT1!=0
            goto      Loop1
return 



end
```

y del circuito son niveles logicos positivos (o sea resistencia, led y a tierra) por el puerto b, cristal 4M y ademas una excelente opcion para la energia fue con un plug de audifonos desarmado (quitandole el eje que lleva la muesca de seguridad) encajo perfecto en el eje del motor, brindando seguridad y dos contactos electricos casi libres de friccion con escobillas metalicas pequeñas puestas en un trozo de plastico......

espero esta información sea de ayuda para los que hasta ahora comenzamos con los micros  (a mi me sirvio del carajo) ya que aun existimos mortales que reparamos de todo sin saber de nada. (y si reparo de todo y tengo mas de una decada de conocimiento empirico). saludos espero lean aunque sea tan largo, pero es un pequeño tuto.


----------



## nosferatuspacho (Feb 2, 2009)

listo, como que me tire el foro, si quieren ver nuevos mods sigan por aqui (sensor de posicion y 4 secuencias)
https://www.forosdeelectronica.com/posts/167202/


----------



## anthony123 (Feb 2, 2009)

No se empeñen en COPILAR en algoritmo que Jose Pino publico en su web, por que simplemente no les va a resultar. El coloco ese algoritmo para que la gente se guiara y pudiera armar sus propios codigos.


----------



## cesartm (Feb 2, 2009)

anthony123 dijo:
			
		

> No se empeñen en COPILAR en algoritmo que Jose Pino publico en su web, por que simplemente no les va a resultar. El coloco ese algoritmo para que la gente se guiara y pudiera armar sus propios codigos.



Yo te pedi ayuda la ultima vez y me ignoraste, no quiero hacer lo mismo ni jackear ideas o programas ya hechos pero si te agradeceriamos que nos digas por donde empezar, en mi caso he tratado de hacer parpadear un Led creo que es el ejemplo principal en ensamblador como el "Hola mundo" en otrs lenguajes.

Saludos


----------



## anthony123 (Feb 2, 2009)

No te ignore, recuerdo haberte respondido algunos mensajes   ! Yo no soy un master en programacion de pic, de hecho hace meses que no toco uno.! La alta flexibilidad que me ofrece la RF ha hecho que me concentre mucho mas en ella. Si me pongo a comparar numeros, sale 5 veces mas barato.

Otra cosa, no se si te has leido todas las paginas de este post que he escrito. Me pase muchas noches tratando de obtener la solucion y escribiendo en otros foros. La moraleja es: No le des el pescado, enseñale a pescar..! 

Saludos


----------



## giiovanniii (Abr 17, 2009)

ola  soy nuevo en esto   ..  se me ocurrio aventurarme  en este proyecto...
compre  todo lo q decian .. de echo trabajare con un pic16F876a  es el mismo   q el 16F877 pero  en vez de 40 pines   utiliza 28  creoo..
lo que no  me  cuadra es  como realizo el programa   de reloj
me dijieron  que utilizara el micro c para la programacion de este proyecto pero poco y nada se de este   software
.. si me pudieran ayudar a programar o dar una pista   seriaa    geniall..
de ante mano graciass


----------



## reyvilla (Abr 18, 2009)

hola que tal hace tiempo realice mi propio pov led con la ayuda de la pagina de jose pino y de alexander costa de brasil a los cuales le doy todo el credito por colocar este proyecto tan interesante.
lo logre hacer con el programa pic basic y microcode no es muy complicado de echo arme alguno prototipos partiendo de su algoritmo es cuestion de tener logica y paciencia para enterder como hacer el sistema del circuito que a pesar de lo sencillo que es, el simple echo que este armado para procesar un sistema de persistencia a nuestra vision ya da bastante trabajo yo de echo intente crear un tipo de tutorial que a la final no culmine por que esta muy escualido con respecto a la real teoria al verdadero significado de lo que es pov.  Yo recomiendo partir de que investiguen primero que es pov para que puedan entender como funciona y luego saber como trabajar con lenguaje asemble y el picbasic que es mas sencillo y veran que pueden hacer sus propios programas sin ningun problema.
Voy a explicar un trozo del programa que yo realice en picbasic.



                          Portada;
                 '********************************
	'Pantalla Mensajes En el Aire   *
	'Realizado por : Reimy Vilamizar*
	'Noviembre 2008                 *
	'********************************
                Declaracion de pic a utilizar puede ser el 12f629 o el 12f675 y los fuses 
                como pueden ver todos estan en off ecepto "intrc_osc" esto por que este
                 pic no necesita un cristal externo en internamente trae un oscilador asi 
                que esto nos ahorra 2 condensadores y un cristal en el pcb el pic basic
                toma como configuracion device llamemoslo asi a 4mhz el oscilador interno
                esto se debe a que si no le especificamos al programa de cuanto es el lo 
                 coloca o configura a 4Mhz directamente, ojo: podemos configurarlo a 
                cualquier otro valor menor a 4Mhz Ejemplo: 3Mhz. pero esto ya les 
                toca a ustedes hacerlo de todas formas luego les coloco una guia
                de picbasic para que sepan como hacerlo;

	@ device pic12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off

                Aca mas abajo tenemos una espera de medio segundo para estabilizar el pic
               esto se hizo ya que el pic a penas no energicemos el va a empezar a leer el programa
              y para que no realice una loquera el primero espera medio segundo y luego es que empieza
             a leer el programa;

	pause 500'TIEMPO DE ESPERA 1/2 SEG. PARA ESTABILIZAR EL PIC

              el cmcon que tambien lo vasn a ver en la guia se trata de un comando especial
              y lo que logramos con el es colocar todos los puertos en salidas y entradas 
               digitales en este caso el puerto ya que hablamos de un pic enano de 6 pines
                de los cuales dos son alimentacion 5 son entradas y salidas y una solamente de
                entrada;

	CMCON = 7

	y seguimos ahora con la declaracion de variables la cual vamos a utilizar para 
                poder establecer el tiempo de encendido y apagado entre palabras y letras o lo que 
                es lo mismo el espacio de separacion entre las palabras y las letras;


	'DEFINICION DE VARIABLES
	TEMPR VAR BYTE 'VARIABLES DE PALABRAS O FRASES 
	TEMPL VAR BYTE 'VARIABLE PARA PAUSA ENTRE LETRAS

               limpiamos las variables la llevamos a 0

                Clear 'LIMPIA TODAS LAS VARIABLES
	aca apago todo los led's
	GPIO = %00000000
               le asigno un valor al timpo entre palabras esto depende mucho 
               del tamaño de los led y sobre todo el recorrido de los mismo al
               moverse que quiere decir esto que a mayor recorrido a lo mejor 
               no va imoportar mucho en el sentido que no se nos va a pegar 
              una palabra con otra pero a menor recorrido si, entonces
             va a depender mas que todo del recorrido que hagan los led's.
	TEMPL = 1

	ahora si por fin el inicio del programa el cual es obligatorio declararlo.
                lo digo por aquellos que tangan alguna duda.

	INICIO:

                declaro de derecha a izquierda los bit's como entrada o salida
                el primero de la derecha seria el bit 0, hay muchas formas 
               o maneras de hacerlo una podria ser mas largar que la otra 
               asi que por eso esta es la mas practica la otra seria uno a uno 
               algo asi: gpio.0 = 0, gpio.1=1,...,etc. 

	TRISIO = %00001000 

                esta es la primera condicion del programa que dice que si el 
                pin 3 del puerto es igual a 1 tempr es igual a 10 y te vas a la
                subrutina palabra_1 y fin 

	if gpio.3 = 1 then
                tempr = 10
                gosub PALABRA_1
                ENDIF

              hasta aqui todo es facil y de las mil maravilla no lo creen pues yo tampoco
             lo crei hasta que vi como formar una letra que trabajoso es formar una letra
             lo bueno fue que gracias a jose y alexander no tuve que hacerlas todas desde
            cero ya que tenia la referencia de todas las letras y unos dibujitos 

             entonces seguimos vamos a ver como formar una letra para luego formar una 
             palabra completa.

             la letra a como en prescolar je je je :   seguro de igual no lo cre
             lo primero que vemos es que declaramos LETRA_A: y acontinuacion 
             apagamos todos los led que se suponen que debieron de un principio estar asi
             pero esto se hace por que si vamos a cambiar de una palabra a otra pues primero
             debemos apagar luego programar y depues encender nuevamente con la nueva configuracion.
              despues vemos que encendemos 4 led's. Nota: hay que tomar en cuenta que para este programa
              el circuito tiene dos led en paralelo en el puerto de los pines 4 y 1 si no me equivoco osea cuando 
             encendemos el pin 4 o 1 estamos encendiendo 2 led's y no 1 asi que pendientes con eso.
             Siguiendo con el programa nos quedamos en que encendemos del puerto gpio los pines 1;2;4 y 5
             estoy quiere decir que estamos encenciedo 6 led's en ese instante luego hay una pausa 
             y se enciende 2 led's nada mas y luego los mismos 6 que al principio y luego todos los 
             led's se apagan de nuevo.


                LETRA_A: 
	GPIO=%00000000 
	GPIO=%00110110
	PAUSE 1
	GPIO=%00000101
	PAUSE 1
	GPIO=%00000101
	PAUSE 1
	GPIO=%00110110
	PAUSE 1
	GPIO=%00000000
	RETURN


           de un modo grafico parecido al que vi posteado alguna vez por alli con permiso al que lo hizo.
            Nota: recordemos tres cosas la primera que el pin 1 y 4 tienen dos led cada uno y por eso los
            coloque dobles y la otra que tiene que ver con lo mismo si activamos el 1 o el 4 se encienden dos
            led no 1 aclarado esto continuo a parte reordemos que el pin 3 del puerto es unicamente entrada
             eso quiere decir que no lo podemos aunque queramos utilizarlo como salida por eso no se toma 
              en cuenta para formar letras.


                           T1 T2 T3 T4
               gpio.0        *   *   *              Como podemos ver es facil T1 es la primera instancia de la letra
               gpio.1        *        *              cuando apagamos todos los pines del pic. T2 cuando encendemos    
               gpio.1        *        *              los pines 0;1;2;4 y 5 Luego apagamos los pines 1;4 y 5 dejando 
               gpio.2        *   *   *               encendidos nada mas los pines 0 y 2 y depues volvemos a encender
               gpio.4        *        *              nuevamente los pines 1;4 y 5 sin apagar el 0 y el  2 y para finalizar 
               gpio.4        *        *              apagamos todos y retornamos para mantener la letra en el aire. y
               gpio.5        *        *              ya tenemos nuestra primera letra formada.


       Ahora faltan las demas que pueden hacerla ustedes mismos o fijarse en las paginas de jose pino o alexander costa

            ahora lo mas facil formar palabras, luego de que formamos todas las letras y dibujos o lo que sea que 
            agamos simplemente con la condicion inicial llamamos a la subrutina palabra_x
            y la formamos de la siguiente manera.

                PALABRA_1:                                   nombramiento de la subrutina
	PAUSE TEMPR                                convertimos el valor de tempr en valor de tiempo que tiempo entre palabras
	GOSUB LETRA_F                             que varia dependiendo de la trayectoria velocidad y espacio del circuito 
	PAUSE TEMPL                                 ejecupamos la subrutina letra_F, pausamos con el timpo establedico para
	GOSUB LETRA_O                            tempL que tambien varia con la trayectoria y espacio que recorre el circuito
	PAUSE TEMPL                                 lo mismo con las demas letras al llegar al final llamamos a inicio a ver si hay 
	GOSUB LETRA_R                             algun cambio si no se retorna a la subrutina PALABRA_1 y asi hasta que 
	PAUSE TEMPL                                 varie o cambie le inicio en caso de que excista alguna condicion para que 
                GOSUB LETRA_O                            no siga en esta subrutina.
                PAUSE TEMPL
                GOSUB LETRA_S
                PAUSE TEMPL
                GOSUB LETRA_D
	PAUSE TEMPL
                GOSUB LETRA_E
	PAUSE TEMPL
	GOSUB LETRA_E
	PAUSE TEMPL
	GOSUB LETRA_L
	PAUSE TEMPL
               GOSUB LETRA_E
	PAUSE TEMPL
	GOSUB LETRA_C
 	PAUSE TEMPL
               GOSUB LETRA_T
 	PAUSE TEMPL
               GOSUB LETRA_R
 	PAUSE TEMPL
	GOSUB LETRA_O
 	PAUSE TEMPL
	GOSUB LETRA_N
 	PAUSE TEMPL
	GOSUB LETRA_I
 	PAUSE TEMPL
               GOSUB LETRA_C
	PAUSE TEMPL  
	GOSUB LETRA_A
	PAUSE TEMPR
	CALL INICIO
	GOTO PALABRA_1   


Espero que les haya servido de ayuda no se mucho de pic asi que si encuentran algun detalle disculpen 
yo tembien soy algo novato a pesar de saber mas o menos siento que aun me falta bastante por aprender
de este mundo les agradezco de antemano sus agradecimientos no es facil describir un programa 
a pesar de que es en un lenguaje de alto nivel y sobre todo cuando se trata de pov. les anexo algunas 
cosas que le pueden servir de utilidad tampoco soy un genio asi que si me pueden ayudar a mejorar lo que 
les anexo se los agradeceria...saludos suerte

PD: no pude cargar el archivo pdf de la guia de pic basic pero consegui una pagina donde explican muy bien
el uso de este programa y tambien desde alli pueden bajar el pdf.


----------



## Mushito (Abr 18, 2009)

Felicidades, gracias por tus aportes.
¿funcionaria el codigo con mirkobasic?


----------



## reyvilla (Abr 18, 2009)

funciona con picbasic proc y microcode ese que me nombras no lo he usado si trabaja bajo lenguaje basic debe funcionar

Megustaria me ayudaran un poco con la alimentacion de este circuito a travez de una rolinera, vi en una pagina de internet "que no tengo a la mano ahora", que el circuito puede ser alimentado a travez de una rolinera asi en vez de utilizar pilas se puede conectar directamente a una fuente de poder si alguien tiene alguna idea o teoria al respecto se lo agradeceria...saludos


----------



## Mushito (Abr 19, 2009)

Modificas un motor DC como muestra en esta pagina, los tres cables sales del colector del motor a través de las escobillas, estas van a girar junto al rotor y llegan a un circuito rectificador y filtro a la vez.

http://www.metricmind.com/clock/clock.htm

Yo estaba pensando hacer algún dispositivo electromecánico con electroimanes como un péndulo invertido.
Saludos.


----------



## thecrowrc (Abr 29, 2009)

Arme un proyecto POV "personalizado" sacando un poco de codigo de cada lado y adaptandolo a los componentes que enia en ese momento,pero me surgio la duda de como conectar un dispositivo que sincronice el inicio del momento en que se muestra el texto, vi por varios lados que usan sensores hall o una parte de un mousede bola pero no termine de entender bien , en concreto mi pregunta es como puedo poner un sensor de efecto hall o unos fototransistores o diodos al pic16f84?.Si es posible quisiera saber tambien como puedo identificar los s. hall para sacarlo de una video que tengo desarmada y estoy por tirar.Gracias


----------



## cesartm (Abr 29, 2009)

Me funciono bien con los Fototransistores el emisor a vss y colector a RA4, coloca el IR led en alguna parte que coinsida. a mi me funciono muy bien aunque con los sensores efecto hall no probe pero debe de ser similar


----------



## thecrowrc (Abr 30, 2009)

Muchas Gracias, en cuanto pueda le echo un ojo a la video y se lo saco,  la resistencia esa de 10k esta calculada para 5v o es indistinto? es que al circuito ahora lo alimento con 3v.Bueno Gracias de nuevo.

*Agregado:*Acabo de agarrar un mouse para probar por que no estoy donde la video,  y encontre q tiene cuatro pares de elementos que no se el nombre exacto.A partir de aca corregime cualquier moco que me pueda mandar OK?, bueno como sabia que uno de estos dos elemento debia ser un diodo emitiendo y un receptor haciendo la contraparte, tome el tester y en la posicion de diodos medi para determinar los pines de cada uno , luego con la ayuda de la webcam determine cual era el emisor, y por ende el receptor.Entonces hasta aca tengo emisor y receptor con los terminales identificado pero empieza el lio de ¿ que tension le pongo al emisor y como conecto el receptor?


----------



## cesartm (Abr 30, 2009)

Si asi es la resistencia que puse fue para 5VDC


----------



## Mushito (Jun 25, 2009)

donde descargo pic basic para probar con tu programa?


----------



## CER (Jul 9, 2009)

Consulta? alguien tiene el algoritmo testiado y que funcione? siempre se me queda pegado  en algún error, y al ser autodidacta hay cosas que no se que significan y me gustaría compararlos con algún algoritmo ya funcionando, yo al menos estoy trabajando con microcode studio que muestra los errores, pero no da sugerencias o soluciones, ayuda por favor, adjunto mi algoritmo en basic por si alguien puede ayudar o refregar los errores en mi cara, lo que sea para poder aprender, gracias.

pd: uso PIC12f629


```
'*****************************************************
'*        Programa Mensajes en el aire                                                *
'*        08/07/2009                                                                            *
'*****************************************************

@ device 12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off 
Pause 500  			'espera 1/2 seg. para estabilizacion del pic

				'SETAG las puertas a la comparación digital

CMCON=7 			'Digital I/O
 

				'Apaga todos los led en gpios
GPIO=%00000000

				'Definicion de variables
SEQ VAR BYTE		'variable de las palabras o frases
TEMPL VAR BYTE		'variable de pausa entre las letras
TEMPR VAR BYTE		'variable de tiempo entre las palabras (retorno)

Clear				'Limpia todas las variables

TEMPL=4			'Pausa entre letras=4, para cualquier palabra
SEQ=0				'cero variables SEQ

INICIO
TRISIO=%00001001		'Flecha GPIO.0 Y GPIO.3 como entradas
IF GPIO.0 = 0 Then		'Selector de clave de secuencia presionada
Pause 400			'Evitar Ondulacion
SEQ=SEQ+1			'Suma 1 a la secuencia de palabra o frase

				' En caso contrario
IF GPIO.3=1 Then INICIO	' si la llave de partida no es presionada va a incio
				'si llave DIS prsionada:
TRISIO=%00001000		'flecha somete GPIO.3 como entrada

IF SEQ=1 Then		'si SEQ=1
TEMPR=50			'flecha pausa de inicio/retorno
GoTo P1			'Va a palabra 1 P1
EndIF

IF SEQ=0 Then INICIO		'Si SEQ=0 va para INICIO

				'Formacion de palabras
P1:
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoSub LETRA_X
Pause TEMPR
GoTo INICIO

P2:
Pause TEMPR
GoSub LETRA_A
Pause TEMPR
GoSub LETRA_B
Pause TEMPR
GoSub LETRA_C
Pause TEMPR
GoSub LETRA_D
Pause TEMPR
GoSub LETRA_E
Pause TEMPR
GoSub LETRA_F
Pause TEMPR
GoSub LETRA_G
Pause TEMPR
GoTo INICIO

P3:
Pause TEMPR
GoSub LETRA_H
Pause TEMPR
GoSub LETRA_I
Pause TEMPR
GoSub LETRA_J
Pause TEMPR
GoSub LETRA_K
Pause TEMPR
GoSub LETRA_L
Pause TEMPR
GoSub LETRA_M
Pause TEMPR
GoSub LETRA_N
Pause TEMPR
GoTo INICIO

P4:
Pause TEMPR
GoSub LETRA_O
Pause TEMPR
GoSub LETRA_P
Pause TEMPR
GoSub LETRA_Q
Pause TEMPR
GoSub LETRA_R
Pause TEMPR
GoSub LETRA_S
Pause TEMPR
GoSub LETRA_T
Pause TEMPR
GoSub LETRA_U
Pause TEMPR
GoTo INICIO

Letra_A:			'Para Todas las letras, o bit X y referencia como GPIO.3
				'GPIO 54x210 - GPIO.0 o parte superior de las letras
GPIO=%00000000
GPIO=%00110110
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00000000
Return

LETRA_B:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000000
Return

LETRA_C:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000000
Return

LETRA_D:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000000
Return

LETRA_E:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00000000
Return

LETRA_F:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000000
Return

LETRA_G:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010100
Pause 2
GPIO=%00000000
Return

LETRA_H:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_I:
GPIO=%00000000
GPIO=%00100001
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_J:
GPIO=%00000000
GPIO=%00010000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010111
Pause 2
GPIO=%00000000
Return

LETRA_K:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_L:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00000000
Return

LETRA_M:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_N:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000110
Pause 2
GPIO=%00010100
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_O:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000000
Return

LETRA_P:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000000
Return

LETRA_Q:
GPIO=%00000000
GPIO=%00010110
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00110001
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00000000
Return

LETRA_R:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00000101
Pause 2
GPIO=%00010101
Pause 2
GPIO=%00100010
Pause 2
GPIO=%00000000
Return

LETRA_S:
GPIO=%00000000
GPIO=%00100010
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010001
Pause 2
GPIO=%00000000
Return

LETRA_T:
GPIO=%00000000
GPIO=%00000001
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000001
Pause 2
GPIO=%00000000
Return

LETRA_U:
GPIO=%00000000
GPIO=%00010111
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010111
Pause 2
GPIO=%00000000
Return

LETRA_V:
GPIO=%00000000
GPIO=%00000111
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00100000
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00000000
Return

LETRA_W:
GPIO=%00000000
GPIO=%00110111
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010000
Pause 2
GPIO=%00110111
Pause 2
GPIO=%00000000
Return

LETRA_X:
GPIO=%00000000
GPIO=%00100001
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00010010
Pause 2
GPIO=%00100001
Pause 2
GPIO=%00000000
Return

LETRA_Y:
GPIO=%00000000
GPIO=%00000011
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00110000
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000011
Pause 2
GPIO=%00000000
Return

LETRA_Z:
GPIO=%00000000
GPIO=%00110001
Pause 2
GPIO=%00110011
Pause 2
GPIO=%00110000
Pause 2
GPIO=%00100011
Pause 2
GPIO=%00000000
Return

LETRA_CORAZON:
GPIO=%00000000
GPIO=%00000010
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00110110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000111
Pause 2
GPIO=%00000010
Pause 2
GPIO=%00000000
Return

LETRA_FLECHA1:
GPIO=%00000000
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000000
Return

LETRA_FLECHA2:
GPIO=%00000000
GPIO=%00000100
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00010110
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00100101
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000100
Pause 2
GPIO=%00000000
Return
```


----------



## reyvilla (Jul 24, 2009)

hola que tal estuve revisando tu algoritmo y esta muy bueno, con respecto a los errores del programa ya te iras a 
costumbrabdo a ir decifrandolos, a mi al principio me sacaba canas verdes el programita pero ya con un poco de logica le fui 
entendiendo que queria decirme, el problema esta en que tenemos que ir realizando el programa de una palabra a la vez, 
eso quiere decir que no podemos simplemente copiar y pegar ya que nos puede pasar que al copiar no se sombree todo lo 
que queremos copiar y alli esta el error, lo otro es que todo programa tiene unas normas pautas o leyes las cuales hay que cumplir y llevar a cabo para que pueda funcionar correctamente y nuevamente volvemos a tener un error por causa de la  
falta de entrenamiento con respecto al programa, es como cuando compras un cel y no lees el manual de usuario por que te la sabes todas + 1 entonces terminas dañandolo sin haberlo encendido por primera vez..."me ha pasado"jejeje
no lo tomes a mal, solo son consejos por la experiencia que he tenido...
bueno dicho esto te explico


aqui tienes tu algoritmo corregido segun los errores que me dio el programa microcode...


```
'***************************************************** 
'*        Programa Mensajes en el aire               * 
'*        08/07/2009                                 * 
'***************************************************** 

@ device pic12f629,intrc_osc,wdt_off,pwrt_off,mclr_off,bod_off,protect_off 

Pause 500           'espera 1/2 seg. para estabilizacion del pic 

            'SETAG las puertas a la comparación digital 

CMCON=7          'Digital I/O 
  

            'Apaga todos los led en gpios 
GPIO=%00000000 

            'Definicion de variables 
SEQ VAR BYTE      'variable de las palabras o frases 
TEMPL VAR BYTE      'variable de pausa entre las letras 
TEMPR VAR BYTE      'variable de tiempo entre las palabras (retorno) 

Clear            'Limpia todas las variables 

TEMPL=4         'Pausa entre letras=4, para cualquier palabra 
SEQ=0            'cero variables SEQ 

INICIO 
TRISIO=%00001001      'Flecha GPIO.0 Y GPIO.3 como entradas 
IF GPIO.0 = 0 Then      'Selector de clave de secuencia presionada 
Pause 400         'Evitar Ondulacion 
SEQ=SEQ+1          'Suma 1 a la secuencia de palabra o frase 
endif             

            ' En caso contrario 
IF GPIO.3=1 Then INICIO   ' si la llave de partida no es presionada va a incio 
            'si llave DIS prsionada: 
TRISIO=%00001000      'flecha somete GPIO.3 como entrada 

IF SEQ=1 Then      'si SEQ=1 
TEMPR=50         'flecha pausa de inicio/retorno 
GoTo P1         'Va a palabra 1 P1 
EndIF 

IF SEQ=0 Then
goto  INICIO
endif                   'Si SEQ=0 va para INICIO 

            'Formacion de palabras 
P1: 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoSub LETRA_X 
Pause TEMPR 
GoTo INICIO 

P2: 
Pause TEMPR 
GoSub LETRA_A 
Pause TEMPR 
GoSub LETRA_B 
Pause TEMPR 
GoSub LETRA_C 
Pause TEMPR 
GoSub LETRA_D 
Pause TEMPR 
GoSub LETRA_E 
Pause TEMPR 
GoSub LETRA_F 
Pause TEMPR 
GoSub LETRA_G 
Pause TEMPR 
GoTo INICIO 

P3: 
Pause TEMPR 
GoSub LETRA_H 
Pause TEMPR 
GoSub LETRA_I 
Pause TEMPR 
GoSub LETRA_J 
Pause TEMPR 
GoSub LETRA_K 
Pause TEMPR 
GoSub LETRA_L 
Pause TEMPR 
GoSub LETRA_M 
Pause TEMPR 
GoSub LETRA_N 
Pause TEMPR 
GoTo INICIO 

P4: 
Pause TEMPR 
GoSub LETRA_O 
Pause TEMPR 
GoSub LETRA_P 
Pause TEMPR 
GoSub LETRA_Q 
Pause TEMPR 
GoSub LETRA_R 
Pause TEMPR 
GoSub LETRA_S 
Pause TEMPR 
GoSub LETRA_T 
Pause TEMPR 
GoSub LETRA_U 
Pause TEMPR 
GoTo INICIO 

Letra_A:         'Para Todas las letras, o bit X y referencia como GPIO.3 
            'GPIO 54x210 - GPIO.0 o parte superior de las letras 
GPIO=%00000000 
GPIO=%00110110 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_B: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_C: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_D: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_E: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00000000 
Return 

LETRA_F: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_G: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010100 
Pause 2 
GPIO=%00000000 
Return 

LETRA_H: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_I: 
GPIO=%00000000 
GPIO=%00100001 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_J: 
GPIO=%00000000 
GPIO=%00010000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_K: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_L: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00000000 
Return 

LETRA_M: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_N: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000110 
Pause 2 
GPIO=%00010100 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_O: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_P: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Q: 
GPIO=%00000000 
GPIO=%00010110 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00110001 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00000000 
Return 

LETRA_R: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00000101 
Pause 2 
GPIO=%00010101 
Pause 2 
GPIO=%00100010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_S: 
GPIO=%00000000 
GPIO=%00100010 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_T: 
GPIO=%00000000 
GPIO=%00000001 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_U: 
GPIO=%00000000 
GPIO=%00010111 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_V: 
GPIO=%00000000 
GPIO=%00000111 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00100000 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_W: 
GPIO=%00000000 
GPIO=%00110111 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010000 
Pause 2 
GPIO=%00110111 
Pause 2 
GPIO=%00000000 
Return 

LETRA_X: 
GPIO=%00000000 
GPIO=%00100001 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00010010 
Pause 2 
GPIO=%00100001 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Y: 
GPIO=%00000000 
GPIO=%00000011 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00110000 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000011 
Pause 2 
GPIO=%00000000 
Return 

LETRA_Z: 
GPIO=%00000000 
GPIO=%00110001 
Pause 2 
GPIO=%00110011 
Pause 2 
GPIO=%00110000 
Pause 2 
GPIO=%00100011 
Pause 2 
GPIO=%00000000 
Return 

LETRA_CORAZON: 
GPIO=%00000000 
GPIO=%00000010 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00110110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000111 
Pause 2 
GPIO=%00000010 
Pause 2 
GPIO=%00000000 
Return 

LETRA_FLECHA1: 
GPIO=%00000000 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000000 
Return 

LETRA_FLECHA2: 
GPIO=%00000000 
GPIO=%00000100 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00010110 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00100101 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000100 
Pause 2 
GPIO=%00000000 
Return
```

Como puedes ver no he modificado nada esta totalmente igual solo agregue algo...?
revisa bien como utilizas if then y te daras cuenta de los errores que tienes.
suerte me avisas cualquier cosa.


----------



## Chico3001 (Jul 24, 2009)

Por favor coloquen sus programas entre las etiquetas *code* y */code* para que las respuestas sean mas faciles de entender.....

Gracias.....


----------



## shadow_x (Nov 12, 2009)

saludos; quiero compartir mi programa para mi POV. lo hice em mplab y se le puede poner el mensaje que uno desee pero esta echo para mensaje continuo ya que no tiene control de reinicio del mensaje por eso entre mas largo el mensaje mas radio requerira para desplegarce.

apenas esta en la fase de prueba por lo que si alguien tiene una sugerencia para la velocidad de giro o algo asi sera bienvienbenida 


```
;**************************************************************************************************
;                                   Zona de Datos 

            __CONFIG _CP_OFF & _WDT_OFF &_PWRTE_ON & _XT_OSC   ;Configuraciòn para el grabador
            
            LIST P=16F84A          ; Procesador utilizado
            INCLUDE <P16F84A.INC>  ; Definición de algunos operandos        
;**************************************************************************************************
;                                   Zona de Código
            CBLOCK 0x0C
            ContMensaje        ;identifica la posicion de la letra a cargar
            ContSeg            ;identifica el valor de segmento
            LETRA            ;el valor de la letra para llamar a la secuencia correspondiente
            ENDC

            ORG        0    
Inicio    
        bsf        STATUS,RP0 
        clrf       TRISB      
        movlW      b'00011111'
        movwf      TRISA
        bcf        STATUS,RP0
Resetea 
        clrf    PORTB  
        clrf     ContMensaje
        clrf    LETRA
        movlw    .255
        movwf    ContMensaje     
CargaLetra
        clrf    PCLATH
        clrf    ContSeg
        incf    ContMensaje,F
        call    P3
        movf    ContMensaje,W
        call    Mensaje
        movwf    LETRA        ;reviza que no sea la etiqueta cero (indica el final del mensaje
        sublw    .0
        btfsc    STATUS,Z
        goto    Resetea        ;si es la marca cero se reinicia el mensaje
Determina                    ;si no es la etiqueta cero determina que no sea una letra especial y que sea valida
        movf    LETRA,W
        sublw    ' '
        btfsc    STATUS,Z
        goto    espacio
        movf    LETRA,w
        sublw    '!'
        btfsc    STATUS,Z
        goto    EXCLAMA
        movf    LETRA,W
        sublw    'Ñ'
        btfsc    STATUS,Z
        goto    ÑÑ
;****************** fin de caracteres especiales; verificamos que LETRA sea valido **********************
        movf    LETRA,W
        sublw    'Z'
        btfss    STATUS,C
        goto    NULO
        movlw    '+'            ;determina la letra que es segun relacion con + (43)
        subwf    LETRA,W
        btfss    STATUS,C
        goto    NULO
        clrf    PCLATH
        addwf    PCL,F
;****** seccion de indexeado a la secuencia correspondiente **********
        goto    mas
        goto    NULO
        goto    menos
        nop
        goto    NULO
        goto    cero
        goto    uno
        goto    dos
        goto    tres
        goto    cuatro
        goto    cinco
        goto    seis
        goto    siete
        goto    ocho
        goto    nueve
        nop
        goto    NULO
        goto    face
        goto    igual
        nop
        nop
        goto    NULO
        goto    AA
        goto    BB
        goto    CC
        goto    DD
        goto    EE
        goto    FF
        goto    GG
        goto    HH
        goto    II
        goto    JJ
        goto    KK
        goto    LL
        goto    MM
        goto    NN
        goto    OO
        goto    PP
        goto    QQ
        goto    RR
        goto    SS
        goto    TT
        goto    UU
        goto    VV
        goto    WW
        goto    XX
        goto    YY
        goto    ZZ
;******* fin del direccionamiento; comiensan las secuencias de cada simbolo *******
mas
    call     P1
    movf    ContSeg,w
    call    TabMas
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    mas
menos
    call     P1
    movf    ContSeg,W
    call    TabMenos
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    menos
cero
    call     P1
    movf    ContSeg,w
    call    TabCero
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cero
uno
    call     P1
    movf    ContSeg,w
    call    TabUno
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    uno
dos
    call     P1
    movf    ContSeg,w
    call    TabDos
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    dos
tres
    call     P1
    movf    ContSeg,w
    call    TabTres
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    tres
cuatro
    call     P1
    movf    ContSeg,w
    call    TabCuatro
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cuatro
cinco
    call     P1
    movf    ContSeg,w
    call    TabCinco
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    cinco
seis
    call     P1
    movf    ContSeg,w
    call    TabSeis
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    seis
siete
    call     P1
    movf    ContSeg,w
    call    TabSiete
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    siete
ocho
    call     P1
    movf    ContSeg,w
    call    TabOcho
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ocho
nueve
    call     P1
    movf    ContSeg,w
    call    TabNueve
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    nueve
face
    call     P1
    movf    ContSeg,w
    call    TabFace
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    face
igual
    call     P2
    movf    ContSeg,w
    call    TabIgual
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    igual
AA
    call     P2
    movf    ContSeg,w
    call    TabAA
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    AA
BB
    call     P1
    movf    ContSeg,w
    call    TabBB
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    BB
CC
    call     P2
    movf    ContSeg,w
    call    TabCC
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    CC
DD
    call     P2
    movf    ContSeg,w
    call    TabDD
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    DD
EE
    call     P2
    movf    ContSeg,w
    call    TabEE
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    EE
FF
    call     P2
    movf    ContSeg,w
    call    TabFF
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    FF
GG
    call     P2
    movf    ContSeg,w
    call    TabGG
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    GG
HH
    call     P2
    movf    ContSeg,w
    call    TabHH
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    HH
II
    call     P2
    movf    ContSeg,w
    call    TabII
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    II
JJ
    call     P2
    movf    ContSeg,w
    call    TabJJ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
;**************** Fin de la pagina 0 respecto al PCL ************
    goto    JJ
KK
    call     P2
    movf    ContSeg,w
    call    TabKK
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    KK
LL
    call     P2
    movf    ContSeg,w
    call    TabLL
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    LL
MM
    call     P2
    movf    ContSeg,w
    call    TabMM
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    MM
NN
    call     P2
    movf    ContSeg,w
    call    TabNN
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    NN
OO
    call     P2
    movf    ContSeg,w
    call    TabOO
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    OO
PP
    call     P2
    movf    ContSeg,w
    call    TabPP
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    PP
QQ
    call     P2
    movf    ContSeg,w
    call    TabQQ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    QQ
RR
    call     P2
    movf    ContSeg,w
    call    TabRR
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    RR
SS
    call     P2
    movf    ContSeg,w
    call    TabSS
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    SS
TT
    call     P2
    movf    ContSeg,w
    call    TabTT
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    TT
UU
    call     P2
    movf    ContSeg,w
    call    TabUU
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    UU
VV
    call     P2
    movf    ContSeg,w
    call    TabVV
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    VV
WW
    call     P2
    movf    ContSeg,w
    call    TabWW
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    WW
XX
    call     P2
    movf    ContSeg,w
    call    TabXX
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    XX
YY
    call     P2
    movf    ContSeg,w
    call    TabYY
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    YY
ZZ
    call     P2
    movf    ContSeg,w
    call    TabZZ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ZZ
NULO
    call     P2
    movf    ContSeg,w
    call    TabNULO
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    NULO
EXCLAMA
    call     P2
    movf    ContSeg,w
    call    TabEX
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    EXCLAMA
espacio
    call     P2
    movlw    .1
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    espacio
ÑÑ
    call     P2
    movf    ContSeg,w
    call    TabÑÑ
    call    DISPLAY
    btfsc    STATUS,Z
    goto    CargaLetra
    goto    ÑÑ

DISPLAY
    movwf    PORTB
    call    Retardo_10ms
    incf    ContSeg,F
    movlw    .7
    subwf    ContSeg,W
    return
TabMas
    addwf    PCL,F
    DT .1,.17,.17,.125,.17,.17,.1
TabMenos
    addwf    PCL,F
    DT .1,.17,.17,.17,.17,.17,.1
TabCero
    addwf    PCL,F
    DT .1,.125,.135,.187,.195,.125,.1
TabUno
    addwf    PCL,F
    DT .1,.35,.67,.225,.3,.3,.1
TabDos
    addwf    PCL,F
    DT .1,.103,.139,.145,.147,.99,.1
TabTres
    addwf    PCL,F
    DT .1,.1,.147,.147,.147,.109,.1
TabCuatro
    addwf    PCL,F
    DT .1,.241,.17,.17,.17,.255,.1
TabCinco
    addwf    PCL,F
    DT .1,.243,.147,.147,.147,.143,.1
TabSeis
    addwf    PCL,F
    DT .1,.125,.131,.147,.147,.141,.1
TabSiete
    addwf    PCL,F
    DT .1,.129,.145,.145,.145,.255,.1
TabOcho
    addwf    PCL,F
    DT .1,.109,.147,.147,.147,.109,.1
TabNueve
    addwf    PCL,F
    DT .1,.97,.145,.145,.145,.127,.1
TabFace
    addwf    PCL,F
    DT .1,.109,.99,.11,.99,.109,.1
    nop
    nop
    nop
    nop
    nop
    nop
;**************** FIn de la pagina 1 respecto al PCL ************
TabIgual
    addwf    PCL,F
    DT .1,.41,.41,.41,.41,.41,.1
TabAA
    addwf    PCL,F
    DT .1,.127,.144,.144,.144,.127,.1
TabBB
    addwf    PCL,F
    DT .1,.255,.147,.147,.147,.109,.1
TabCC
    addwf    PCL,F
    DT .1,.255,.131,.131,.131,.131,.1
TabDD
    addwf    PCL,F
    DT .1,.255,.131,.131,.69,.57,.1
TabEE
    addwf    PCL,F
    DT .1,.255,.147,.147,.147,.131,.1
TabFF
    addwf    PCL,F
    DT .1,.255,.145,.145,.129,.129,.1
TabGG
    addwf    PCL,F
    DT .1,.125,.131,.147,.147,.141,.1
TabHH
    addwf    PCL,F
    DT .1,.255,.17,.17,.17,.255,.1
TabII
    addwf    PCL,F
    DT .1,.131,.131,.255,.131,.131,.1
TabJJ
    addwf    PCL,F
    DT .1,.141,.131,.253,.129,.129,.1
TabKK
    addwf    PCL,F
    DT .1,.255,.17,.59,.69,.131,.1
TabLL
    addwf    PCL,F
    DT .1,.255,.3,.3,.3,.1,.1
TabMM
    addwf    PCL,F
    DT .1,.255,.65,.49,.65,.255,.1
TabNN
    addwf    PCL,F
    DT .1,.255,.97,.17,.13,.255,.1
TabOO
    addwf    PCL,F
    DT .1,.125,.131,.131,.131,.125,.1
TabPP
    addwf    PCL,F
    DT .1,.255,.145,.145,.145,.97,.1
TabQQ
    addwf    PCL,F
    DT .1,.125,.131,.139,.135,.125,.1
TabRR
    addwf    PCL,F
    DT .1,.225,.153,.149,.147,.97,.1
TabSS
    addwf    PCL,F
    DT .1,.99,.147,.147,.147,.13,.1
TabTT
    addwf    PCL,F
    DT .1,.129,.129,.225,.129,.129,.1
TabUU
    addwf    PCL,F
    DT .1,.253,.3,.3,.3,.253,.1
TabVV
    addwf    PCL,F
    DT .1,.249,.5,.3,.5,.249,.1
TabWW
    addwf    PCL,F
    DT .1,.255,.5,.25,.5,.255,.1
TabXX
    addwf    PCL,F
    DT .1,.199,.41,.17,.41,.199,.1
TabYY
    addwf    PCL,F
    DT .1,.225,.17,.15,.17,.225,.1
TabZZ
    addwf    PCL,F
    DT .1,.135,.139,.147,.163,.195,.1
TabNULO
    addwf    PCL,F
    DT .1,.109,.69,.1,.69,.109,.1
TabEX
    addwf    PCL,F
    DT .1,.1,.1,.247,.1,.1,.1
TabÑÑ
    addwf    PCL,F
    DT .1,.255,.97,.17,.141,.191,.1
P1
    movlw     .1
    movwf     PCLATH
    return
    nop
    nop
P2
    movlw     .2
    movwf     PCLATH
    return
    nop
    nop
P3
    movlw     .3
    movwf     PCLATH
    return
    nop
    nop
    nop
;**************** FIn de la pagina 2 respecto al PCL ************
Mensaje ;mensaje maximo de 20 caracteres para evitar saturacion
    addwf    PCL,F
    DT    "HOLA",0x00

    INCLUDE <RETARDOS.INC>
Fin
    IF (Fin>0x3FE)
        ERROR    "se supero el espacio maximo de la ROM"
    ENDIF
    END
```


----------



## Maritto (Nov 22, 2009)

Hola gente, estuve siguiendo en silencio la linea de este foro. Hace 3 semanas me puse a diseñar un POV con un 12F675 y un shift-register (que nos permite mediante 3 patas del pic, obtener 8 salidas independientes) y está quedando genial.
Faltan solo 2 detalles, el primero es, puedo implementar un cabezal de lectora de cassettes como sensor de campo magnetico para sincronizar el micro?
Los leds de montaje superficial funcionan bien para esto?
Por cierto lo estoy haciendo todo en SMD asi que es bastante compacto. Una vez terminado lo publico todo completo


----------



## shadow_x (Nov 29, 2009)

hola Maritto; yo he visto POV's donde usan leds de montaje superficial y funcionan bien, supongo que solo tienes que asegurarte que esten bien soldados. supongo que un cabezal funcionaria solo  preocupate porque tenga la potencia para mover al circuito y que no salga volando el circuito como me paso a mi cuando probe el mio.


----------



## MAXTORCAMPOS (Ene 10, 2010)

Saludos, hice una recopilacion de informacion de este hilo y pude crear mi programa, me parece muy bueno el proyecto ya he realizado varias rutinas y efectos, es solo cuestion de imaginacion y el cielo es el limite, muchas gracias a todos, de verdad mil gracias...

PD: lo hice en picbasicPro, en este programa es muy facil y podemos crear los mensajes que queramos y que se comporten de la manera que queramos, Saludos


----------



## retrotero (Ene 16, 2010)

Hola de nuevo. Me he estado leyendo todo el hilo del post, y la verdad es que me encanta hacer povs. De hecho tengo uno que le puedes poner cualquier mensaje que queda maravillosamente, y pasando por los pov clocks, y el ultimo que he podido solucionar que por cierto me ha costado bastante en averiguarlo sin ayuda de nadie, es el "air display".

Saludo a todos.


----------



## retrotero (Ene 18, 2010)

Si, el de Jose Pino


----------



## Mushito (Jun 3, 2010)

Estimados amigos:
Por  favor algún alma piadosa podría postear unas líneas en picbasic o mikrobasic  para sincronizar el POV.
Al momento tengo un POV construido pero sin sincronización y las letras no se notan bien y se van corriendo de un extremo a otro. Mi circuito tiene el 16F84A y RA2 está configurado como entrada. El sensor que estoy usando es de un fototransistor y emisor LED que lo saque de un disco duro antiguo. 
Todo el mecanismo gira a una velocidad desconocida pero cuando le di una pausa de 450 microsegundos entre LEDs encendidos y LEDs apagados se ven unos puntitos.
Gracias Brothers.


----------



## epilef (Sep 7, 2010)

No sé si estoy haciendo bien al poner esto aquí o si esoy infringiendo alguna regla (lo cual no quiero hacer). Hola a todos! es mi primer  post aquí, estoy tratando de implementar el reloj POV, no con leds RGB por ahora hasta entender bien la idea y de ahí ir progresando poco a poco. Ya hice un circuito y lo sujete a la rueda de la bicicleta y como quien dice "funcionó de cine" para considerar que ni siquiera sincronizaba mostró bien los mensajes. Ahora quiero hacerlo un poco más formal, estoy trabajando en hacer mecánicamente una base donde se sujetará el motor y bueno para pasar la corriente simplemente mando un cable a la carcasa del motor, y con eso transfiero a través del eje del mismo motor la corriente, y la  masa la tomo con escobillas y problema resuelto. Ahora mi segundo gran problema :enfadado::enfadado::enfadado: es que el motor DC que tengo no tienen nada en el tope de arriba del cual yo pueda agarra algo. Mi pregunta es si necesito fabricar por mis medios alguna pieza que se pueda agarrar ahí o cómo hago, porque en ningún lado venden algo de eso. Y alguien ha probado soldando alguna pieza al eje del motor? funciona? hace todo inestable? o al contrario es la solución más obvia que todos usan y no me doy cuenta 

Gracias por sus respuestas!


----------



## Mushito (Sep 10, 2010)

Ve con un tornero y que te fabrique un tarugo y una pieza extraible


----------



## epilef (Sep 10, 2010)

Muchas gracias , pero talvez existe alguna otra solución?. Por otro lado, estoy tratando de hacer las escobillas o algún tipo de contacto adicional para sacar masa, alguien sabe de alguna manera o tiene alguna referencia que me muestre cómo hacerlo?. Probé usando un cable de mayor grosor de esos que son "peluditos" pero se doblan muy rápido y casi no da resultado.


----------



## gamow (Oct 27, 2010)

Saludos a la gente del foro , este es mi prototipo basado en el de Ian Paterson .


----------



## Dario (Ene 9, 2011)

saludos gente 
bueno, yo tampoco pude resistirme a experimentar con este proyecto asi que, me hice un pov medio cachivache como para probar y la verdad, logre hacerlo funcionar al primer intento... me gusto bastante. el unico problema, es que ahora me gustaria que el mensaje se desplace por ejemplo, de derecha a izquierda pero no logro dilucidar como y con que instrucciones lograrlo. aca les dejo los 2 codigos que escribi haber si alguno de ustedes me da una manito. el codigo esta hecho en microcode.
saludosss y espero alguien me de una manito 
codigo 1

```
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 09/01/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define Osc 4
CMCON = 7
TrisA=%00001111
TrisB=%00000000
PORTA = %00000000
PORTB = %00000000

hola:
gosub h
pause 2
gosub o
pause 2
gosub l
pause 2
gosub a
pause 2
goto hola
h:
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %11111111:pauseus 300
return
o:
portb = %01111110:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %01111110:pauseus 300
return
l:
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %10000000:pauseus 700
portb = 0:pauseus 300
portb = %10000000:pauseus 300
portb = 0:pauseus 300
portb = %10000000:pauseus 300
portb = 0:pauseus 300
portb = %00000000:pauseus 300
return
a:
portb = %11111110:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %11111110:pauseus 300
return
end
```
 
codigo 2

```
'****************************************************************
'*  Name    : cartel pov.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20/12/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Define Osc 4
CMCON = 7
TrisA=%00001111
TrisB=%00000000
PORTA = %00000000
PORTB = %00000000
cartel:
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %00010000:pauseus 300
portb = 0:pauseus 300
portb = %11111111:pauseus 300
portb = 0:pause 2
portb = %01111110:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %01111110:pauseus 300
portb = 0:pause 2
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %10000000:pauseus 700
portb = 0:pauseus 300
portb = %10000000:pauseus 300
portb = 0:pauseus 300
portb = %10000000:pauseus 300
portb = 0:pauseus 300
portb = %00000000:pauseus 300
portb = 0:pause 2
portb = %11111110:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %11111110:pauseus 300
portb = 0:pause 4
portb = %01111110:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pause 2
portb = %01111110:pauseus 300
portb = 0:pauseus 300
portb = %10001001:pauseus 300
portb = 0:pauseus 300
portb = %10001001:pauseus 300
portb = 0:pauseus 300
portb = %10001001:pauseus 300
portb = 0:pauseus 300
portb = %10001110:pauseus 300
portb = 0:pause 2
portb = %10001110:pauseus 300
portb = 0:pauseus 300
portb = %10001001:pauseus 700
portb = 0:pauseus 300
portb = %10001001:pauseus 300
portb = 0:pauseus 300
portb = %10001001:pauseus 300
portb = 0:pauseus 300
portb = %01110001:pauseus 300
portb = 0:pause 2
portb = %11111110:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %00010001:pauseus 300
portb = 0:pauseus 300
portb = %11111110:pauseus 300
portb = 0:pause 2
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %00011001:pauseus 300
portb = 0:pauseus 300
portb = %00101001:pauseus 300
portb = 0:pauseus 300
portb = %01001001:pauseus 300
portb = 0:pauseus 300
portb = %10001110:pauseus 300
portb = 0:pause 2
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %00011000:pauseus 300
portb = 0:pauseus 300
portb = %00100100:pauseus 300
portb = 0:pauseus 300
portb = %01000010:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pause 2
portb = %11111111:pauseus 300
portb = 0:pauseus 300
portb = %00011000:pauseus 300
portb = 0:pauseus 300
portb = %00100100:pauseus 300
portb = 0:pauseus 300
portb = %01000010:pauseus 300
portb = 0:pauseus 300
portb = %10000001:pauseus 300
portb = 0:pause 2
pause 8
goto cartel
```


----------



## JvLIO (May 28, 2011)

anthony123 dijo:


> Con un 555 no funciona, solo funciona con microcontroladores que encienden secuencialmente los led (de acuerdo con el codigo), cosa que el 555 NO hace



Mira eso no solamente se puede hacer con el famoso PIC si no tambien con simples registros y contadores y una memoria eprom para grabar los bits a usar.


----------



## halionsp (May 29, 2011)

este post esta muy bueno, en especial porque los aportes continúan.


io realizo programas en lenguaje basic y me pondre manos a la obra en este proyecto POV los mas pronto posible.

colaborare a la prontitud con aportes en cuanto termine los examenes en la universidas

saludos


----------



## nicolas (Jul 12, 2011)

hola gente... como andan... me preguntaba antony si este circuito que se que es tuyo pasa todos los mensajes o solo 1 y los vas eligiendo con el pulsador... espero me entiendas suerteeeee...

http://www.josepino.com/microcontroller/asotillet_pov_display

ahhh por ahi tambien econtre el algoritmo de josefino pero en txt y no se como pasarlo a .asm

espero me ayuden

solo quiero poner te amo y nada mas...


----------



## nicolas (Jul 14, 2011)

genteeeeeee ya pude hacer mi propio pov... esta en base al de josepino pero pude programar el 12f629 con el mensaje que yo queria o con los mensajes que yo quiera.... si necesitan ayuda avisen... tengo un pcb diseñado por mi tambien... anda de maravillas se los puedo pasar...


----------



## limonetti (Jul 25, 2011)

nicolas dijo:


> genteeeeeee ya pude hacer mi propio pov... esta en base al de josepino pero pude programar el 12f629 con el mensaje que yo queria o con los mensajes que yo quiera.... si necesitan ayuda avisen... tengo un pcb diseñado por mi tambien... anda de maravillas se los puedo pasar...



Yo quiero ese PCB.. a ver si lo puedes colgar por akí no? gracias


----------



## nicolas (Jul 25, 2011)

ahi te mando el pcb... lo tengo hecho en eagle... te mando 2 fotos asi las puedes insertar en word y poner cuantas placas quieras hacer... la medida del pcb es de 60 x 25 mm

si tienes algun problema para hacerlo te mando directamente el archivo listo para imprimir... suerte espero te ande bien


----------



## sistemasalextremo (Ene 18, 2012)

Amigos quiero pedirles su apoyo,  ya termine mi proyecto POV pero nececito escribir varios caracteres,  mi duda es como hago para que los caracteres aparezcan en un determinado punto y que el mensaje gire, segun se puedo escribir mas de 100 caracteres pero no tengo idea como.  desde ya gracias


----------



## maxi1330 (Feb 9, 2012)

nicolas, tenes el algoritmo del pov que armastes el de josepino? lo podrias subir asi modifico las frases? gracias


----------



## german32 (Jun 20, 2012)

nicolas dijo:


> genteeeeeee ya pude hacer mi propio pov... Esta en base al de josepino pero pude programar el 12f629 con el mensaje que yo queria o con los mensajes que yo quiera.... Si necesitan ayuda avisen... Tengo un pcb diseñado por mi tambien... Anda de maravillas se los puedo pasar...



hola recien vi su mensaje, lo que quisiera es tener el programa en asm para terminar mi proyecto de display pov es con pi16f629 gracias espero su ayuda


----------



## alejandrozambrano90 (Jun 25, 2012)

hola amigos.. este proyecto es supersencillo yo lo hice en asm. y resulta myu fácil debido a que solamente se tienen que encender los leds por un cierto tiempo, luego apagarlos todos y asi sucesivamente hasta formar la laetra deseada.. para mantener el mensaje fijo se necesita un receptor ir en la partil móvil y un emsor en la base del motor, esto va conectado al contador de eventos externos (en mi caso pic 16f877a use un sensor optico de barrera) para que el msj este fijo sin importar las rpm del motor, pronto subo imagenes de mi pov terminado debido a que el primero lo hice solo para probar y ahora estoy fabricando otro con leds en posicion curva que le dará un efecto 3d al mensaje.. aqui esta la letra A en .asm

LETRA_A   	CLRF  PORTB
		MOVLW   B'01111100'
		MOVWF   PORTB
		call Retardo_500micros
		clrf    PORTB
                MOVLW   B'00010010'
		MOVWF   PORTB
		call Retardo_500micros
		clrf    PORTB
                MOVLW   B'00010001'
		MOVWF   PORTB
		call Retardo_500micros
		clrf    PORTB
                MOVLW   B'00010010'
		MOVWF   PORTB
		call Retardo_500micros
		clrf    PORTB
                MOVLW   B'01111100'
	        MOVWF   PORTB
	        call Retardo_500micros
		clrf    PORTB


Como ven es superfacil la programación.. los tiempos establecidos entre el encendido y apagado del puerto son para la anchura de la letra.. como pueden ver el pin RB7 no se esta usando debido a que las letras formadas son de una matriz de 7x5


----------



## manito80 (Ago 9, 2012)

nicolas dijo:


> genteeeeeee ya pude hacer mi propio pov... esta en base al de josepino pero pude programar el 12f629 con el mensaje que yo queria o con los mensajes que yo quiera.... si necesitan ayuda avisen... tengo un pcb diseñado por mi tambien... anda de maravillas se los puedo pasar...



amigo me gustaria mucho que me ayudaras en este proyecto si lo tienes y me lo puedes pasar te lo agradecria mucho para poder hacer el mio.


----------



## carlos1A (Sep 2, 2012)

hola soy nuevo en el manejo de los pics.
 estoy haciendo un proyecto similar al de D@rio  en que puso dos codigos.
con un pic 16f84
es para generar un mensaje con 7 led. tengo mp lab y proteus
si tiene un codigo que esta hecho en .bas y yo lo quiero en .asm lo puedo convertir?
puedo simular el codigo hecho en .bas en el proteus?
gracias por su ayuda.


----------



## manito80 (Sep 6, 2012)

hola como estan primero que nada saludos a todos, pido ayudas a los grandes conocedores de este megaforo por la siguiente razon por una duda, estoy elaborando un anuncio POV, ya tengo casi todos los materiales que necesito pero el pic que me pide el projecto es 18F4648 y no se consigue en mi localidad, el que pude conseguir es el pic 18F4550 y 18F4580. ¿Acaso alguno de estos pic me podra servir para mi projecto, o tengo que conseguir obligatoriamente el pic que me piden, que diferencia hay entre uno y otro?, espero que alguien me pueda ayudar.


----------



## willyfv (Sep 20, 2012)

hola manito80 entra en esta pagina alli tienen ese pic, y muchas cosas mas, yo estoy trabajando en un pov voy bastante adelantado, ya puedo convertir imagenes o letras a radianes para que las imagenes y letras se vean perfectas..... al programa le falta pronto subire lo que he adelantado para que otros usuarios los usen, el programa calcula los 8 bit de cada imagen y los transforma a radianes, pero antes hay que ralizar un imagen en paint y guardarla en formato monocromatico, luego convertir la imagen a raw  y de alli es que se procesa, la ideas es hacer todo en un solo programa, no he terminado ya que mi trabajo me consume tiempo y tampoco he podido buscar informacion de como medir el tiempo exacto de cuando se active el sensor para asi obtener el tiempo y encedido de los led si necesidad de programar los tiempo, la idea es que si el motor cambia de revolucion al imagen no se distorsione tanto y cambie el tiempo de encendido y apagado a la velocidad en que gire el motor...


estos es la parte de convertir las imagenes a codigos, vb 6

Private Sub Form_Load()
Dim angleincrement As Single
Dim anglecounter As Integer
Dim ringcounter As Integer
Dim ledspacing As Integer
Dim ledoffset As Integer
Dim imagesize As Integer
Dim origin As Integer
Dim x As Single
Dim y As Single
Dim fileoffset As Long
Dim pixel As String * 1
Dim outputstring As String

imagesize = 240        'tamaño de la imagen
angleincrement = 1.41176 '360 grados divididos entre 255 que seria la cantidad de leds en el radio
ledspacing = 5     'separacion entre leds [mm]
ledoffset = 0       'distancia entre el eje del motor y el 1er led,
angleincrement = angleincrement / 57.296 'convirte a radianes
origin = imagesize / 2   'divide la imagen entre 2, para tomar el centro de la imagen

Open "C:\willyfv.raw" For Binary As 1 'willyfv es la iamgen previamente convertida a formato raw
Open "C:\Users\willy\Desktop\C\willyfv.txt" For Output As 2 ' esta e sla direccion donde yo guarde el resultado, cambiarla a su gusto

' para mi diseño estoy usando 24 leds con una separacion de leds de 5 mm y la distancia del eje con el primer led e "0"
' ya que el primer led esta montando o centrado con el eje del motor
'los resultados  que se obitienen bien sea puede usarse como registro de desplazamiento o en su defecto directamente al puerto del pic
' ejemplo:
' d= diodos led
' d24,d23,d22,d21,d20........d0 donde d0 es el primer diodo led que va desde abajo(eje) hasta arriba
' 01010101010101010101 como registro de desplazamiento(con cualquier pic)
' 01010101=29,01010101=29,0101=5
' usando un pic 16f877a  puerto a= 29   puerto b= 29 y puerto c=5, puerto c(eje)....
' mejor usar asm ya que consume menos memoria que pic basic, yo trabajo en pic basic pero me di cuenta
' que asm es mejor para ahorrar espacio

For anglecounter = 0 To 254
outputstring = "  "

   For ringcounter = 24 To 1 Step -1
      x = origin + (Sin(anglecounter * angleincrement) * ((ringcounter * ledspacing) + ledoffset))
      y = origin + (Cos(anglecounter * angleincrement) * ((ringcounter * ledspacing) + ledoffset))
      fileoffset = Int(x) + (imagesize * (imagesize - Int))
      Get #1, fileoffset, pixel
      If Asc(pixel) = 0 Then
     outputstring = outputstring + "1" & ","
      Else
        outputstring = outputstring + "0" & ","
      End If
   Next ringcounter

outputstring = outputstring
   Print #2, outputstring

Next anglecounter

Close
End
End Sub

esto esat hecho en visual basic 6, no lo he probado en otro programa ya que tengo disponible vb 6 portable....

por ahora quiero ver como trabajar los tiempos y lo otro es enviar esos datos en forma serial y guardalos en una tabla sin necesidad de programa el pic cada vez que se quiera cambiar la imagen o textos a mostrar.....

se acepta todo tipo de ayuda..jajajaja





http://www.electronica.com.ve//vent...Csid=c74f73c6aa7111950f67584137611e77&x=0&y=0



toda la informacion y diseo para un 16f628a esta aqui, http://www.ianpaterson.org/projects/spokepov20050704/index.htm


----------



## Justiciero24 (Nov 22, 2012)

Bueno, ya no supe en que quedaron pero por si te interesa probar un poco sobre este efecto y lo que se puede hacer con el, yo hize uno parececido hace tiempo solo que en forma de barra y se mueve con la mano o lo puedes montar en una bicicleta, si te interesa te paso los esquematicos y el programa. 


Aqui lo puedes ver: http://www.dafr-electronics.mex.tl/1022690_Letrero-LED-POV.html

y aca una foto:
Ver el archivo adjunto 83889


----------



## Don Plaquetin (Nov 25, 2012)

bien creo que el circuito que estamos buscando es este 



y la palabra clave para buscar informacion en *GOOGLE* es *"Letrero POV"*


----------



## willyfv (Oct 16, 2013)

Este es un programa modificado de la pagina de  http://www.ianpaterson.org/projects/spokepov20050704/


----------



## WJB (Nov 25, 2017)

Este código es para un PIC12F629

```
;Microcontroller:  12f629 Speed: 4 Mhz Internal RC

delay 200 miliseconds
Set Comparator Mode 7

variable byte f = 00000000b   ; Output data
variable byte s                  ; Temporal variable
variable byte o                  ; message number.

procedure salida( s as byte ) is
gpio = s
delay 500 us
gpio = 00000000b
delay 200 us         
end procedure

procedure disp ( f as byte ) is
if f = "0" then f = "O" 
if f = "A" then
   salida(0011_0110)
   salida(0000_0101)
   salida(0000_0101)
   salida(0011_0110)
end if
if f = "B" then
   salida(0011_0111)
   salida(0010_0101)
   salida(0010_0101)
   salida(0001_0010)
end if
if f = "C" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0001)
   salida(0010_0001)
end if
if f = "D" then
   salida(0011_0111)
   salida(0010_0001)
   salida(0010_0001)
   salida(0001_0110)
end if
if f = "E" then
   salida(0011_0111)
   salida(0010_0101)
   salida(0010_0101)
   salida(0010_0001)
end if
if f = "F" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0000_0001)
end if
if f = "G" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0101)
   salida(0011_0101)
end if
if f = "H" then
   salida(0011_0111)
   salida(0000_0100)
   salida(0000_0100)
   salida(0011_0111)
end if
if f = "I" then
   salida(0010_0001)
   salida(0011_0111)
   salida(0010_0001)
end if
if f = "J" then
   salida(0001_0000)
   salida(0010_0000)
   salida(0010_0000)
   salida(0001_0111)
end if
if f = "K" then
   salida(0011_0111)
   salida(0000_0100)
   salida(0001_0010)
   salida(0010_0001)
end if
if f = "L" then
   salida(0011_0111)
   salida(0010_0000)
   salida(0010_0000)
   salida(0010_0000)
end if
if f = "M" then
   salida(0011_0111)
   salida(0000_0010)
   salida(0000_0100)
   salida(0000_0010)
   salida(0011_1111)
end if
if f = "N" then
   salida(0011_0111)
   salida(0000_0010)
   salida(0000_0100)
   salida(0001_0000)
   salida(0011_0111)
end if
if f = "O" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0010_0001)
   salida(0001_0110)
end if
if f = "P" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0000_0010)
end if
if f = "Q" then
   salida(0001_0110)
   salida(0010_0001)
   salida(0011_0001)
   salida(0011_0110)
end if
if f = "R" then
   salida(0011_0111)
   salida(0000_0101)
   salida(0000_0101)
   salida(0011_0010)
end if
if f = "S" then
   salida(0010_0010)
   salida(0010_0101)
   salida(0010_0101)
   salida(0001_0001)
end if
if f = "T" then
   salida(0000_0001)
   salida(0011_0111)
   salida(0000_0001)
end if
if f = "U" then
   salida(0001_0111)
   salida(0010_0000)
   salida(0010_0000)
   salida(0001_0111)
end if
if f = "V" then
   salida(0000_0111)
   salida(0001_0000)
   salida(0010_0000)
   salida(0001_0000)
   salida(0000_0111)
end if
if f = "W" then
   salida(0011_0111)
   salida(0001_0000)
   salida(0000_0100)
   salida(0001_0000)
   salida(0011_0111)
end if
if f = "X" then
   salida(0010_0001)
   salida(0001_0010)
   salida(0000_0100)
   salida(0001_0010)
   salida(0010_0001)
end if
if f = "Y" then
   salida(0000_0001)
   salida(0000_0010)
   salida(0011_0100)
   salida(0000_0010)
   salida(0000_0001)
end if
if f = "Z" then
   salida(0011_0001)
   salida(0010_0101)
   salida(0010_0101)
   salida(0010_0011)
end if
if f = "1" then
   salida(0010_0001)
   salida(0011_0111)
   salida(0010_0000)
end if
if f = "h" then         ; 'h' lowercase = Hearth character
   salida(0000_0010)
   salida(0000_0111)
   salida(0001_0111)
   salida(0011_0110)
   salida(0001_0111)
   salida(0000_0111)
   salida(0000_0010)
end if
if f = "!" then
   salida(0000_0000)
   salida(0010_0111)
   salida(0000_0000)
end if
if f = "'" then
   salida(0000_0011)
end if
if f = "." then
   salida(0010_0000)
end if
if f = "o" then        ; 'o' Lowecase
   salida(0001_0000)
   salida(0010_0100)
   salida(0010_0100)
   salida(0001_0000)
end if
if f = " " then        ; space character.
   delay 4 miliseconds
end if
delay 1 milisecond
end procedure

; main program
gpio = all output

if o = 0 then
; Display  "ANTHONY"
o = o + 1
anthony loop
disp("A")
disp("N")
disp("T")
disp("H")
disp("O")
disp("N")
disp("Y")
disp(" ")
disp("h")
end loop
end if
o = 0
salida(0000_0000)
sleep microcontroller   ; sleep command
nop   ; No operation
```


----------



## D@rkbytes (Nov 25, 2017)

WJB dijo:


> Este código es para un PIC12F629


Te olvidaste subir el esquema.


Mira por aquí: *¿Cómo subo imágenes y archivos?*


----------

