Algoritmo para nombre and POV led

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.
 
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.
 
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.
 
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(y)))
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
 
Última edición:

Adjuntos

  • 2012-06-21 20.50.09.jpg
    2012-06-21 20.50.09.jpg
    97.4 KB · Visitas: 50
Este código es para un PIC12F629
Código:
 ;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
 
Última edición por un moderador:
Atrás
Arriba