TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Azicuetano en 03 de Junio de 2007, 20:40:46

Título: Otra de led´s.
Publicado por: Azicuetano en 03 de Junio de 2007, 20:40:46
Hola colegas!

Hacía tiempo que tenía ganas de hacer alguna tontería como esta y... este finde me he animado  :D

Foto del bicho:

(http://img396.imageshack.us/img396/3377/llaveroledsgp8.jpg)

Seguro que ya os imaginais lo que hace  :mrgreen:

Instrucciones de uso:

1-Metes el dedito en la anillita (aunque cada cual es libre de meter lo que quiera  :D)
2-Le das vueltas a una velocidad moderada
3-Cuando la gente lo ve y dice "Anda! que chulo! como lo haces?" les das un par de minutos de explicación jeje.

Aquí va un video.

http://rapidshare.com/files/35098978/PICT0027.MOV.html

Mañana lo pondré en el youtube, en cualquier caso, para los que no podais ver los archivos *.MOV os podeis bajar este software gratuito:

http://quicktime.softonic.com/

Youtube:


Y este es el programa (me ha resultado imposible hacerlo más simple para que nadie se lie):

Código: [Seleccionar]
//************************************************************
//
//                 LED´S GIRATORIOS MAREADOS ;)
//                  Azicuetano (foro Todopic)
//
//************************************************************

#include <18F2550.h>

#fuses XTPLL,PROTECT,NOLVP,PLL1,CPUDIV3,PUT,NOBROWNOUT,NOMCLR
#use delay(clock=12000000)

//#use fast_io(C)
//#use fast_io(B)

void enciende(int);
void letra_I(void);
void letra_V(void);
void letra_A(void);
void letra_N(void);

void enciende(int leds_a_encender)
{
   output_b(leds_a_encender);
}

void letra_I(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
}

void letra_V(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b0000001);
   delay_ms(5);
   enciende(0b0001111);
   delay_ms(5);
   enciende(0b1110001);
   delay_ms(5);
   enciende(0b1000000);
   delay_ms(5);
   enciende(0b0111001);
   delay_ms(5);
   enciende(0b0000111);
   delay_ms(5);
   enciende(0b0000001);
   delay_ms(5);
}

void letra_A(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b10000000);
   delay_ms(5);
   enciende(0b11000000);
   delay_ms(5);
   enciende(0b10111101);
   delay_ms(5);
   enciende(0b00100011);
   delay_ms(5);
   enciende(0b10111100);
   delay_ms(5);
   enciende(0b11000000);
   delay_ms(5);
   enciende(0b10000000);
   delay_ms(5);
}

void letra_N(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b10000111);
   delay_ms(5);
   enciende(0b00011000);
   delay_ms(5);
   enciende(0b11100001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b00000001);
   delay_ms(5);
}

void letra_T(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b11000000);
   delay_ms(5);
   enciende(0b10000000);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000000);
   delay_ms(5);
   enciende(0b11000000);
   delay_ms(5);
}

void letra_O(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b01111110);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b01111110);
   delay_ms(5);
}

void letra_D(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b01111110);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
}

void letra_P(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b11111111);
   delay_ms(5);
   enciende(0b10010001);
   delay_ms(5);
   enciende(0b00010001);
   delay_ms(5);
   enciende(0b00010001);
   delay_ms(5);
   enciende(0b00001110);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
}

void letra_C(void)
{
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
   enciende(0b01111110);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b10000001);
   delay_ms(5);
   enciende(0b01000010);
   delay_ms(5);
   enciende(0b00000000);
   delay_ms(5);
}

void main(void)
{
   set_tris_b(0b00000000);
   set_tris_c(0b00000000);
   set_tris_a(0b00000000);

   port_b_pullups(FALSE);

   output_high(PIN_B0);
   output_high(PIN_C7);
   delay_ms(500);

//************************************************************
//
//    EXPLICACION
//
//    Cada letra ocupa un tiempo de 40ms.
//    En 200ms. haciendo girar el llavero a una velocidad
//    normal, se repetirá 2 veces la palabra que pongamos.
//
//
//************************************************************

   while(1)
   {
      letra_I();
      letra_V();
      letra_A();
      letra_N();
     
//      letra_T();
//      letra_D();
//      letra_P();
//      letra_I();
//      letra_C();
     
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B3);
      output_low(PIN_B4);
      output_low(PIN_B5);
      output_low(PIN_B6);
      output_low(PIN_B7);
      output_low(PIN_C7);

      delay_ms(40);             // retardo necesario para completar los 200ms.
                                // 40ms*4 letras + 40 ms = 200 ms.

   }
}

Bueno chicos, a ver si alguien se anima, en cuanto yo haga mi versión smd ya os mostraré como se me ha quedado.

PD: De darle vueltas al cacharro tengo el dedo índice hecho polvo. Las últimas pruebas las he tenido que hacer con un guante  :D :D :D


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: J1M en 03 de Junio de 2007, 20:48:26
jejejejej enhorabuena! te ha kedado de lujo! yo también ando detrás de un trasto de estos desde hace tiempo, a ver si este verano entre cañita y cañita me hago uno! q la verdad lo has dejado muy asequible!! :D:D

saludos!
Título: Re: Otra de led´s.
Publicado por: BrunoF en 03 de Junio de 2007, 20:55:16
Muy bien! Te felicito! Ya veré si tengo un tiempito y hago algo de esto! es muy interesante, más aún si lo complejizas hasta lograr esas cosas tan fabulosas como generar imágenes en las llantas de los autos.

Saludos.
Título: Re: Otra de led´s.
Publicado por: LABmouse en 03 de Junio de 2007, 21:24:12
Felicidades Azicuetano!!!
Título: Re: Otra de led´s.
Publicado por: jfh900 en 03 de Junio de 2007, 21:39:32
Muy buen trabajo, nada mas simple y al mismo tiempo espectacular. Solo me gustaria preguntarte algunas cosas:

1º) ¿nos dejarias el esquema de montaje del circuito?, mas que nada por no tener que hacer ingenieria inversa sobre el programa para ver donde estan conectados los led.  :-)

2º) ¿Utilizaste por alguna razón en especial el 18F2550?, ¿conectaste el USB algún sitio desconocido?  :D

3º) ¿Cuantas veces se te ha escapado el cacharro probandolo?  :mrgreen:

Un saludo y de nuevo enhorabuena por encontrar una solución tan simple.
Título: Re: Otra de led´s.
Publicado por: electrotacto en 03 de Junio de 2007, 23:27:06
que bonito yo quiero hacer uno pa miiiiiiiiiiiiiiiii, pero que diga HOLA MAMASITA jejejejejejeje
Título: Re: Otra de led´s.
Publicado por: RedPic en 04 de Junio de 2007, 01:18:53
Ayer mismo estuvimos el amigo Nocturno y yo hablando de esto mismo y de las ganas que teníamos de hacerlo. Te ha quedado perfecto Ivan.  :mrgreen:

Título: Re: Otra de led´s.
Publicado por: Nocturno en 04 de Junio de 2007, 01:46:05
Pues sí, felicidades. Siempre he tenido en mente hacerlo pero jamás se me habría ocurrido tan simple.
¿No llevan resistencias esos leds?
Título: Re: Otra de led´s.
Publicado por: santipic_9 en 04 de Junio de 2007, 18:37:51
enhorabuena  por este montaje Azicuetano, es de película, algún día me gustaría hacerlo y montarlo en la rueda de la moto quedaría " de película". Chao , gracias por compartirlo.
Título: Re: Otra de led´s.
Publicado por: jfh900 en 04 de Junio de 2007, 19:15:46
Hola Azicuetano, me he permitido una pequeña licencia para "compactar" el código y reducir el número de líneas:

Código: C
  1. //************************************************************
  2. //
  3. //                 LED´S GIRATORIOS MAREADOS ;)
  4. //                  Azicuetano (foro Todopic)
  5. //
  6. //************************************************************
  7.  
  8. #include <18F2550.h>
  9.  
  10. #fuses XTPLL,PROTECT,NOLVP,PLL1,CPUDIV3,PUT,NOBROWNOUT,NOMCLR
  11. #use delay(clock=12000000)
  12.  
  13. #define delay_led 5
  14. #define enciende(leds_a_encender) {output_b(leds_a_encender); delay_ms(delay_led);}
  15.  
  16. #define TODOPIC
  17.  
  18. //#use fast_io(C)
  19. //#use fast_io(B)
  20.  
  21. //void enciende(int);
  22. void letra_I(void);
  23. void letra_V(void);
  24. void letra_A(void);
  25. void letra_N(void);
  26.  
  27. /*
  28. void enciende(int leds_a_encender)
  29. {
  30.    output_b(leds_a_encender);
  31. }
  32. */
  33.  
  34. void letra_I(void)
  35. {
  36.    enciende(0b00000000);
  37.    enciende(0b00000000);
  38.    enciende(0b10000001);
  39.    enciende(0b10000001);
  40.    enciende(0b11111111);
  41.    enciende(0b10000001);
  42.    enciende(0b10000001);
  43.    enciende(0b00000000);
  44. }
  45.  
  46. void letra_V(void)
  47. {
  48.    enciende(0b00000000);
  49.    enciende(0b0000001);
  50.    enciende(0b0001111);
  51.    enciende(0b1110001);
  52.    enciende(0b1000000);
  53.    enciende(0b0111001);
  54.    enciende(0b0000111);
  55.    enciende(0b0000001);
  56. }
  57.  
  58. void letra_A(void)
  59. {
  60.    enciende(0b00000000);
  61.    enciende(0b10000000);
  62.    enciende(0b11000000);
  63.    enciende(0b10111101);
  64.    enciende(0b00100011);
  65.    enciende(0b10111100);
  66.    enciende(0b11000000);
  67.    enciende(0b10000000);
  68. }
  69.  
  70. void letra_N(void)
  71. {
  72.    enciende(0b00000000);
  73.    enciende(0b10000001);
  74.    enciende(0b11111111);
  75.    enciende(0b10000111);
  76.    enciende(0b00011000);
  77.    enciende(0b11100001);
  78.    enciende(0b11111111);
  79.    enciende(0b00000001);
  80. }
  81.  
  82. void letra_T(void)
  83. {
  84.    enciende(0b00000000);
  85.    enciende(0b11000000);
  86.    enciende(0b10000000);
  87.    enciende(0b10000001);
  88.    enciende(0b11111111);
  89.    enciende(0b10000001);
  90.    enciende(0b10000000);
  91.    enciende(0b11000000);
  92. }
  93.  
  94. void letra_O(void)
  95. {
  96.    enciende(0b00000000);
  97.    enciende(0b00000000);
  98.    enciende(0b01111110);
  99.    enciende(0b10000001);
  100.    enciende(0b10000001);
  101.    enciende(0b10000001);
  102.    enciende(0b10000001);
  103.    enciende(0b01111110);
  104. }
  105.  
  106. void letra_D(void)
  107. {
  108.    enciende(0b00000000);
  109.    enciende(0b10000001);
  110.    enciende(0b11111111);
  111.    enciende(0b10000001);
  112.    enciende(0b10000001);
  113.    enciende(0b10000001);
  114.    enciende(0b01111110);
  115.    enciende(0b00000000);
  116. }
  117.  
  118. void letra_P(void)
  119. {
  120.    enciende(0b00000000);
  121.    enciende(0b10000001);
  122.    enciende(0b11111111);
  123.    enciende(0b10010001);
  124.    enciende(0b00010001);
  125.    enciende(0b00010001);
  126.    enciende(0b00001110);
  127.    enciende(0b00000000);
  128. }
  129.  
  130. void letra_C(void)
  131. {
  132.    enciende(0b00000000);
  133.    enciende(0b00000000);
  134.    enciende(0b01111110);
  135.    enciende(0b10000001);
  136.    enciende(0b10000001);
  137.    enciende(0b10000001);
  138.    enciende(0b01000010);
  139.    enciende(0b00000000);
  140. }
  141.  
  142. void main(void)
  143. {
  144.    set_tris_b(0b00000000);
  145.    set_tris_c(0b00000000);
  146.    set_tris_a(0b00000000);
  147.  
  148.    port_b_pullups(FALSE);
  149.  
  150.    output_high(PIN_B0);
  151.    output_high(PIN_C7);
  152.    delay_ms(500);
  153.  
  154. //************************************************************
  155. //
  156. //    EXPLICACION
  157. //
  158. //    Cada letra ocupa un tiempo de 40ms.
  159. //    En 200ms. haciendo girar el llavero a una velocidad
  160. //    normal, se repetirá 2 veces la palabra que pongamos.
  161. //
  162. //
  163. //************************************************************
  164.  
  165.    while(1)
  166.    {
  167.  
  168. #ifdef TODOPIC
  169.       letra_T();
  170.       letra_D();
  171.       letra_P();
  172.       letra_I();
  173.       letra_C();
  174. #else      
  175.       letra_I();
  176.       letra_V();
  177.       letra_A();
  178.       letra_N();
  179. #endif
  180.  
  181.       output_low(PIN_B0);
  182.       output_low(PIN_B1);
  183.       output_low(PIN_B2);
  184.       output_low(PIN_B3);
  185.       output_low(PIN_B4);
  186.       output_low(PIN_B5);
  187.       output_low(PIN_B6);
  188.       output_low(PIN_B7);
  189.       output_low(PIN_C7);
  190.  
  191.       delay_ms(40);             // retardo necesario para completar los 200ms.
  192.                                 // 40ms*4 letras + 40 ms = 200 ms.
  193.  
  194.    }
  195. }

Un saludo
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 04 de Junio de 2007, 19:16:16
Hola colegas!!

Ufff... hoy no he podido nirespirar! En el curro he podido escribir esta mañana para responder una duda de un compañero forero y hasta este mismo instante (23:51 en España) no he parado (tenía ganas de responder las dudas planteadas  :D :D)

Citar
a ver si este verano entre cañita y cañita me hago uno

Ten cuidao J1M, que como te lo empiecen a pillar los colegas con unas cuantas birras de más acaba en cuenca el bicho  :D

Citar
1º) ¿nos dejarias el esquema de montaje del circuito?

No tengo el esquema hecho (lo hice a pelo) pero, mañana en un rato lo hago.

Citar
2º) ¿Utilizaste por alguna razón en especial el 18F2550?, ¿conectaste el USB algún sitio desconocido?  

Hace un tiempo de dió por jugar con el USB (aprobecho para agradecer a J1M su maravilloso aporte al foro). Entonces... en un ataque de ansia me puse a pedir samples como un loco del PIC18F2550, PIC18F4550, PIC18F2455 y el PIC18F4455. Los pedía desde mi trabajo, desde la empresa de mi hermano, y las de otros dos amigos  :D  tengo una bolsa llena!  :D :D

Citar
3º) ¿Cuantas veces se te ha escapado el cacharro probandolo?  

Jeje... Sólo una  :mrgreen:. Se lo iba a enseñar a mi cuñao (cuando no estaba acabado) y salió volando. Trastazo contra el techo y contra el suelo (pero sobrevivió como un campeón). Hoy se lo he vuelto a enseñar y el cabroncete se ha escondido y sólo asomaba la cabeza jeje.

Citar
¿No llevan resistencias esos leds?

Mi cutraza me avergüenza Manolo, están soldados por la otra cara, pero, se ha quedado tan fea que no le he hecho ni una foto  :D

Bueno gente, gracias por las felicitaciones. A ver que nueva idiotez se me ocurre ahora  :D :D


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 04 de Junio de 2007, 19:21:06
Jeje...

jfh900 así se queda mucho más profesional  :mrgreen:

Seguro que más de uno ha aprendido algo sobre compactación de código (yo el primero  :D)


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: vicent en 04 de Junio de 2007, 21:14:56
Iván, me encanta este proyectillo, es una pasada. Como algo tan simple hace algo tan vistoso.

Cuando tenga un rato (y pongas el esquema,  :P) lo haré, voy a dejar a la peña to rallá, jajaajja.

Un saludo. Au.
Título: Re: Otra de led´s.
Publicado por: J1M en 09 de Junio de 2007, 21:26:57
Lo siento, he pecado, acabo de comprar una 'macarrada' (lease: modding para PC) ... pero no he podido evitarlo!

El culpable es este trasto:
(http://www.thermaltake.com/product/DCfan/LEDfan/a2461/+a2461image/01_a2461.gif)
(http://www.thermaltake.com/product/DCfan/LEDfan/a2461/+a2461image/03-a2461_AngleView_500.gif)

Por 15€ hace esto:

La cosa es que me intriga muchiiiisimo el como lo han adaptado a un ventilador, es decir, como alimentan la placa del microcontrolador, si es por inducción o por cable o que se yo... y como era taaaan barato y tenía taaantas ganas de hacer algo similar... pues va a ser mi conejillo de indias! XDDD

También tengo en camino desde China esto:
http://cgi.ebay.com/50X-New-5mm-4-Pin-RGB-Common-Cathode-LED-8-000mcd-F-R_W0QQitemZ250122856641QQihZ015QQ

Unos poquitos para hacer dibujos en el aire! y otros tantos para hacer pruebas de 'Ambilight'... a ver si me sale tan bien como a los de Philips! XDDD
Título: Re: Otra de led´s.
Publicado por: LABmouse en 09 de Junio de 2007, 21:42:01
Funcionamiento, espectacular!!!!   :shock:

La idea es perfecta del circuito impreso y la forma que tiene!!!!  :P

Le puedes quitar la pasta transparente y tomarle una foto de frente al PCB? :mrgreen: Es por el bien de la humanidad.  Por favor! :P


Título: Re: Otra de led´s.
Publicado por: J1M en 09 de Junio de 2007, 21:48:53
La verdad es que aunque no se lo pondría a mi PC ( ejeje ), creo que sustituyendo el micro que lleva por uno de nuestros queridos PICs se podría hacer alguna cosilla graciosa! Por cierto se me ha olvidado poner la página del fabricante, es Thermaltake, bastante conocida en el tema de modding. Lo he encontrado a raíz de una noticia publicada en la famosa página del propeller clock.

http://www.thermaltake.com/product/DCfan/LEDfan/ledfan_index.asp

saludos!

edito: Son fotos 'de estudio', el trasto no lo tengo aún en casa, la semana que viene en cuanto llegue lo despiezo y enseño sus entrañas! :P jejeje
Título: Re: Otra de led´s.
Publicado por: Nocturno en 10 de Junio de 2007, 02:52:23
A mi realmente no me sorprende el perfecto acabado del tema, a mi lo que me sorprende sobremanera es el precio, macho.
Buen pedido de leds, eh, cómo te vas a divertir :D
Título: Re: Otra de led´s.
Publicado por: J1M en 10 de Junio de 2007, 08:03:29
La verdad es que está ajustado sí! Esperando estoy que lleguen para meterles mano, harán su acto presencial justo después de exámenes, así que entre playa, cervezas y leds este 'pinta' buen verano! jajaja

La idea es hacer algo parecido a esto:
http://home.versatel.nl/edithenwilliam/william/magic.htm
http://home.versatel.nl/edithenwilliam/william/magic/mb_rgb.wmv

A ver en que queda la historia.... ^o^
Título: Re: Otra de led´s.
Publicado por: Nocturno en 10 de Junio de 2007, 08:21:48
El vídeo es espectacular. ¡Y con un 16F628!
Título: Re: Otra de led´s.
Publicado por: gONzAO en 11 de Junio de 2007, 15:23:35
El primer video está grabado frente a un espejo, verdad?
Título: Re: Otra de led´s.
Publicado por: xocas en 11 de Junio de 2007, 15:40:43
hola, yo también era de los que tenían ganas de meterle mano a algo así y todos en el foro acabarán teniendo uno menos yo  :D :D

os dejo una dirección que tengo a mano: http://www.rickard.gunee.com/projects/mechscan/dualpic/gamesys.php

enhorabuena Azicuetano por el tuyo

saludos
Título: Re: Otra de led´s.
Publicado por: jfh900 en 20 de Junio de 2007, 01:31:10
Parece que se está poniendo de moda. ¡Ojo al precio!.

http://navegante2.elmundo.es/navegante/gadgetoblog.html?a=517c30d7e0b26770bf7e792978a9296e&t=1182313470

A mi me gusta mas el de Azicuetano.

Un saludo
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 20 de Junio de 2007, 04:15:13
Ufff...  291 euros, sale a cuenta comprarte 2 o 3 ventiladores de los que comentaba J1M  :D

A mi me llegó ayer un acelerómetro (lo voy a utilizar en mi segunda versión) pero es tan chiquitajo que no se como lo voy a soldar  :?

Ya os cuento.
Título: Re: Otra de led´s.
Publicado por: vicent en 31 de Agosto de 2007, 19:23:41
Azicuetano, me encanta este proyecto. No podrás poner el esquema y la pcb, es que me interesa hacerlo, si no te importa claro.

Un saludo. Au.
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 01 de Septiembre de 2007, 12:54:48
Ufff... que cabeza la mía, no había puesto el esquema  :z)

Lo acabo de hacer ahora mismo, es este:

(http://img212.imageshack.us/img212/3327/luciernaguitarx1.jpg)

Puesto que el cacharro lo hice un día que me dió el puntazo de forma rápida y cutre no tengo la PCB hecha (lo soldé todo a pelo en una pcb de pruebas)

Juraría que no me falta nada (lo he mirado y remirado varias veces). No puedo estar seguro al 100% porque no tengo el bicho en mis manos (se lo regalé a una amiga y que actualmente es mi novia  :g)  y ahora está de vacaciones en Ávila).

Si utilizas un micro que tenga oscilador interno no le pongas el cristal de cuarzo ni los condensadores (yo en la ultima versión que hice le quité el cristal).

Un par de cosas:

La patilla MCLR no está conectada a nada porque así lo digo en el correspondiente fuse (NOMCLR).

Otra cosa que me calentó un poco la cabeza fué el fuse BROWNOUT. Si te fijas lo tengo deshabilitado porque no le he puesto el condensador de 100nF al PIC. Esto no hay que hacerlo nunca pero quería probar si era capaz de hacerlo funcionar con los mínimos componentes posibles  :mrgreen: (ponlo si queres)

Bueno... cualquier duda ya sabes.


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: vicent en 01 de Septiembre de 2007, 13:15:06
Muchas gracias!!

A ver si tengo un rato y lo monto.

Si que tiene pocos componente, si. Me gusta.

Un saludo. Au.
Título: Re: Otra de led´s.
Publicado por: LABmouse en 01 de Septiembre de 2007, 14:56:51
Aja!!!!! Con que usando la electrónica para conseguir novia..  :D


Que mensaje le colaste para que si fuera definitivo???
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 01 de Septiembre de 2007, 22:44:10
Jaja... Dios que vergüenza  :oops:  :D

Ponia:

MARIA ♥ MARIA ♥

jiji.


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: Marioguillote en 02 de Septiembre de 2007, 14:55:46
Jaja... Dios que vergüenza  :oops:  :D

Ponia:

MARIA ♥ MARIA ♥

jiji.

 :D  :D  :D

Yo ya estoy medio vejete para andar buscando novia, pero no pude resistirme a la tentación y también he armado uno con un 16F84A.
La organización básica es la misma que la usada por Iván, salvo que éste tiene algunas cosillas más en Hardware.
Otra variante es que el programa, si bien es una copia del de Iván, está hecho en Protón. (Hoy mismo lo subo)(Tengo que pulirlo)
La idea original era comenzar con una versión propia del Giroplay que están armando en ÉSTE (http://www.todopic.com.ar/foros/index.php?topic=18345.msg126605#msg126605) hilo, pero que he decidido comenzarla desde lo más bajo posible.

Algo así como aprender a caminar, antes de querer correr.

Lo alimento con una batería de 9V + un 7805 y a cada led lo maneja un NPN, obteniendo un consumo medido con el téster de unos 30 mA.

(http://preview.shareapic.net/preview/003321965.gif) (http://www.shareapic.net/content.php?id=3321965&owner=servisystem)

(Cilc en las imágenes para ampliarlas)

(http://preview.shareapic.net/preview/003321966.gif) (http://www.shareapic.net/content.php?id=3321966&owner=servisystem)

Como arandela de giro en el dedo índice, he usado una vieja rejilla de un cooler, atada con clabecillos al PCB.
Le coloqué un conector para el ICSP y está formado por 7 leds rojos waterclear + 2 amarillos waterclear en el extremo que encienden en el momento en que no hay texto, cerrando el círculo de giro en la imágen lograda.
Muy bonito queda éste efecto. Le dá una especie de "llenado" a la imagen.

Una llave pequeña para encenderlo y listo !
A divertir a mis sobrinos !  :)  :-)
 
Intenté grabar un videíto, pero mi cámara evidentemente no es muy buena. Se notan las interrupciones en la imágen. Igual se los dejaré luego, por si alguien logra verlo y observar bien el efecto. (cuanto más pequeña la pantalla mejor)(Está en MOV)

Aquí está el VIDEO (http://www.megaupload.com/?d=B77A2D1V)
AQUI (http://www.4shared.com/file/23409529/898f8ac4/DSCN3218.html?dirPwdVerified=68b0d74e) está en 4Shared

Es un aparatito muy sencillo de armar, muy didáctico y muy "entusiasmador" de lograr cosas más complejas.

Más tarde vuelvo con el diagrama y el listado del programa.

Saludos
Mario
Título: Re: Otra de led´s.
Publicado por: flacoclau en 02 de Septiembre de 2007, 15:46:48
Muy bueno Mario!!, ya me están tentando a hacerlo....
ya me fijo si tengo un 628 o 627 para no usar cristal.
también quiero hacerlo minimalista como azicuetano!!!  :D
muy buena la idea azi :idea:
otra cosa no sé quien fué pero hace un tiempito alguien desarmó un trompo que dibujaba con leds, el tema es que se le podría hacer un sistemita
de sensado parecido para que se amolde a la velocidad de giro....
bueno saludos!!
Título: Re: Otra de led´s.
Publicado por: Marioguillote en 02 de Septiembre de 2007, 16:11:16
Hola flaco !  :)

Gracias por estar ahí  :)
Sí; realmente está muy lindo el bichito y dá un efecto muy llamativo.
Para quienes nos conocen, saben que de locos como nosotros puede resultar cualquier cosa  :D, pero quien no entiende del tema, queda así  :shock: MAGIA !

Lo del trompo lo recuerdo, creo que era Hugo (veguepic), y me parece que habían descubierto que tenía algún sistema de brújula, ya que siempre arrancaba hacia el norte .... algo de eso había.

Respecto a la velocidad de giro, es lo próximo que le toca al mío. Transportarse a un sistema fijo de base, con un motor sencillo y un sensado de "inicio de vuelta" para que sepa aqué velocidad debe "largar" el texto al puerto.
La alimentación por ahora la voy a mantener igual que éste, con batería en la parte móvil.
Después avanzaremos a la transmisión de energía de la parte fija a la móvil. Pero para eso falta mucho aún.
Paso a paso dijo Mostaza ....  :D

Acá dejo el listado del programa en Protón para los que sean gustosos del Basic.

Código: [Seleccionar]
   DEVICE = 16F84A ' VAMOS A USAR UN PIC16F84A
   XTAL = 4        ' CON UN CRISTAL DE  4MHz
   
   SYMBOL LED1 = PORTB               ' RENOMBRO AL PUERTO B (PONGO UN ALIAS) CON "LED1"
   DIM A AS BYTE      'DEFINO LA VARIABLE QUE VOY A USAR PARA LOS FOR .... NEXT
   DELAYMS 100                'PAUSA HASTA ESTABILIZAR
   LOW LED1      'ARRANCA TODO CON LAS SALIDAS EN ESTADO BAJO
 
   INICIO:    
   A = 0
   FOR A  = 0 TO 20    'VAN A SER VEINTE GIROS CON EL TEXTO
   DELAYMS 116   ' TIEMPO PARA COMPENSAR LA DURACIÓN DEL TEXTO MÁS EL RESTO DE LA VUELTA
             ' TOTAL DE LA VUELTA COMO MUESTRA EL VIDEO = 300 MS
   'TIEMPO DE LETRAS = 184 MS + 116 MS = 300MS
   'ESTO ES PARA QUE SIEMPRE APAREZCA EN EL MISMO LUGAR EL TEXTO SI SE MANTIENE
  ' CONSTANTE LA VELOCIDAD DE GIRO.
   
   '*****************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %01111111
   DELAYMS 2
   LED1 = %00001000
   DELAYMS 2    ' LETRA H
   LED1 = %00001000
   DELAYMS 2
   LED1 = %00001000
   DELAYMS 2
   LED1 = %01111111
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA O
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00111111
   DELAYMS 2
   LED1 = %01000000
   DELAYMS 2     ' LETRA L
   LED1 = %01000000
   DELAYMS 2
   LED1 = %01000000
   DELAYMS 2
   LED1 = %01000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %01111110
   DELAYMS 2
   LED1 = %00001001
   DELAYMS 2     ' LETRA A
   LED1 = %00001001
   DELAYMS 2
   LED1 = %00001001
   DELAYMS 2
   LED1 = %01111110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2     'ESPACIO ENTRE PALABRAS
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '******************************************************
   
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000001
   DELAYMS 2
   LED1 = %00000001
   DELAYMS 2     ' LETRA T
   LED1 = %01111111
   DELAYMS 2
   LED1 = %00000001
   DELAYMS 2
   LED1 = %00000001
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '******************************************************    
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA O
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
    LED1 = %00000000
   DELAYMS 2
   LED1 = %01111111
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA D
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA O
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %01111111
   DELAYMS 2
   LED1 = %00001001
   DELAYMS 2     ' LETRA P
   LED1 = %00001001
   DELAYMS 2
   LED1 = %00001001
   DELAYMS 2
   LED1 = %00000110
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA I
   LED1 = %01111111
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '******************************************************
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00111110
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2     ' LETRA C
   LED1 = %01000001
   DELAYMS 2
   LED1 = %01000001
   DELAYMS 2
   LED1 = %00100010
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   LED1 = %00000000
   DELAYMS 2
   '*******************************************************
   LED1 = %10000000
   NEXT
   
   'LAS LETRAS SE PUSIERON TODAS PARA HACER MÁS DIDÁCTICO EL PROGRAMA. LAS "O" PUEDEN USARSE CON LLAMADAS "GOSUB"
   ' SI SE QUIERE ACORTAR EL NÚMERO DE LÍNEAS
   
   A = 0    'ESPACIO VACÍO SIN FRASE
   LED1 = %10000000
   DELAYMS 800
   LED1 = %00000000
   DELAYMS 400
   LED1 = %10000000     'PARPADEA LA AMARILLA DEL BORDE
   DELAYMS 800
   LED1 = %00000000
   DELAYMS 400
   
   ' LAS DURACIONES DEL FLASHEO DE LOS LED DEL EXTREMO, SON MÚLTIPLOS DE 300 PARA QUE  AL VOLVER EL TEXTO A APARECER,
   ' LO HAGA EN EL LUGAR QUE SALÍA EN LA APARICIÓN ANTERIOR.
   
   GOTO INICIO                              'CIERRA EL LAZO DE PROGRAMA. TODO VUELVE A EMPEZAR

Saludos
Mario
Título: Re: Otra de led´s.
Publicado por: Nocturno en 02 de Septiembre de 2007, 17:03:47
Bien, Mario, bien, muy chulo queda el bicho
Título: Re: Otra de led´s.
Publicado por: Marioguillote en 02 de Septiembre de 2007, 17:14:17
Bien, Mario, bien, muy chulo queda el bicho

Hola Maestro !  :)

Gracias por el ánimo Manolo.
Ya estoy juntando materiales para colocarlo en una base fija.
Tal vez la semana próxima lo tenga en marcha y sea más fácil filmarlo ó fotografiarlo en marcha.

Saludos
Mario
Título: Re: Otra de led´s.
Publicado por: vicent en 02 de Septiembre de 2007, 17:29:45
Me encanta como lo has hecho, está muy bien.

Sois unos cracks, cada día me gusta más haberos descubierto, jeejje.

Un saludo. Au.
Título: Re: Otra de led´s.
Publicado por: Marioguillote en 02 de Septiembre de 2007, 17:57:39
Saludos vicent !  :)

Ánimo que se puede !

FOTOS !!!
Un llavero muy particular .... Sin borde amarillo.
(http://preview.shareapic.net/preview/003324404.gif) (http://www.shareapic.net/content.php?id=3324404&owner=servisystem)

(Clic para agrandar)

Modelito Nº 2 de llavero para enloquecer chicas en la plaza del pueblo  ...  8)  Con borde amarillo.
(http://preview.shareapic.net/preview/003324515.jpg) (http://www.shareapic.net/content.php?id=3324515&owner=servisystem)

Saludos
Mario
Título: Re: Otra de led´s.
Publicado por: aitopes en 02 de Septiembre de 2007, 18:58:54
Mario!!!!

¿Que puedo decir? Sos un capo! :)

Te quedo estupendo!

Saludos.
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 02 de Septiembre de 2007, 19:11:05
ME ENCANTA!!!  :-/

Que bien que se te ha quedado Mario!!!

No podré dormir hasta que no me digas una cosa... ha volado?? se te ha escapado alguna vez??  :D :D :D

Yo había pensado en un acelerómetro para detectar el inicio de cada vuelta, pero, es demasiado caro. La idea de utilizar una brújula no la había pensado (me leeré unos cuantos datasheet´s).

Mi segunda versión (luciernaguita 2.0) va montada en una carraca con led´s RGB jeje... en cuanto la acabe pongo unas fotillos.


Un saludo desde Alicante.

PD: Me ha encantado tú bicho Mario. :mrgreen:
Título: Re: Otra de led´s.
Publicado por: aitopes en 02 de Septiembre de 2007, 19:12:31
PD: Me ha encantado tú bicho Mario. :mrgreen:
Hola amigo!

Ten cuidado cuando le digas eso a un argentino..... al menos, si hay otro Argentino cerca que te pueda oir. ;)

Saludos!
Título: Re: Otra de led´s.
Publicado por: Veguepic en 02 de Septiembre de 2007, 19:57:01
Felicitaciones Mario!!

Te ha quedado chevere, tu y Azicuetano son los culpables de que arme el mio.  :mrgreen: :mrgreen:

El bicho (http://www.todopic.com.ar/foros/index.php?topic=12665.msg72316#msg72316) que tengo usa una simple bobina para ubicar el polo magnetico, por lo cual solo sirve si el giro es horizontal, como ustedes lo giran verticalmente no se puede usar ese sistema.

No se si con un acelerometro se pueda, en todo caso seria cuestion de probar.

Saludos.
Título: Re: Otra de led´s.
Publicado por: Marioguillote en 02 de Septiembre de 2007, 20:51:12
Hola a todos !  :)

Gracias por los saludos !

Para Ivan:

No podré dormir hasta que no me digas una cosa... ha volado?? se te ha escapado alguna vez??  :D :D :D

Sinceramente aún no; pero ya tuvo 3 intentos de despegue que por milagro he podido controlar.
Lo que sí me he tenido que colocar una gruesa cinta en el dedo, porque tanta vueltita empieza a lastimar.

Para Hugo:

Esperamos con ganas tus imágenes.
Respecto al acelerómetro, me parece que tal vez sea demasiado, porque eso requeriría (tal vez) mucho espacio en el PIC por el código para hacerlo funcionar y sincronizar.
Lo que había pensado (y esto es para todos, a ver, que les parece) es lo siguiente.

Para hacer funcionar estos "GIRODEDO", se colocan el mismo, sobre el dedo índice y el dedo medio obligatoriamente queda hacia abajo. (Si ... ése .... el dedo que se usa para ...  :-/)

En ese dedo, a la altura de la última falange, ó la anterior, colocar con un trozo de cinta, un imán.

Al girar la placa, y pasar cerca de dicho imán (la placa le pasa muy cerquita a ése dedo) activar un hall que fuese en el lado "solder" del PCB.

Se entiende la idea ? Sinó hacemos dibujos.
Creo que sería una forma más sencilla de resolver el problema del "sensor de posición de texto"

Para Ariel:

Master, ahora voy a hacer a partir de ésto, un reloj de pared.
Necesito un motor .....  :D
Es broma.
Tengo montones más por aquí.

Saludos a todos.
Ma voy a cenar.
Mario
Título: Re: Otra de led´s.
Publicado por: MGLSOFT en 02 de Septiembre de 2007, 20:53:12
Que motor economico!!!  :D :D
Bravo Mario!!
Esta recanchero !! :-/ :-/
Título: Re: Otra de led´s.
Publicado por: PalitroqueZ en 03 de Septiembre de 2007, 12:49:38
que bien Mario  :-/ :-/ :-/ :-/
Título: Re: Otra de led´s.
Publicado por: Veguepic en 24 de Septiembre de 2007, 01:46:00
Estoy molido!   :(  Recien acabo de pintar el cuarto donde duermo y me di una escapada para jugar un ratito y salio esto

(http://img217.imageshack.us/img217/6119/79827952of2.th.jpg) (http://img217.imageshack.us/my.php?image=79827952of2.jpg)

Lo arme directamente pues ando corto de tiempo para hacer el PCB, en el lado izquierdo aunque no se note tiene el aro para el dedo, luego de varios giros hace doler.  :P

El programa lo hice en PBP, espero darme otra escapada para poder afinar el programa pero creo que va a ser dificil, aun falta pintar el cuarto del bebe, si no termino me cae
(http://img217.imageshack.us/img217/647/nunuka3.gif)

Para el sensor de posicion podriamos usar este (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=12665.0;attach=973) circuito que al parecer es del juguetito que tengo, a ver que opinan.

Saludos
Título: Re: Otra de led´s.
Publicado por: Nocturno en 24 de Septiembre de 2007, 01:48:31
¡Ten cuidadoooooo que van a salir los leds volando!

¿No tienes vídeo?
Título: Re: Otra de led´s.
Publicado por: Veguepic en 24 de Septiembre de 2007, 02:13:29
¡Ten cuidadoooooo que van a salir los leds volando!

 :D :D

Va a ser un pococ dificil que pase Nocturno, los leds tienen como una especie de tope en los pines que al meterlos al protoboard es a presion, a parte que por cuestion de espacio lime los leds y estan tan apretados que es dificil sacar uno.  :mrgreen: (me paso porque los puse al reves)

Mañana espero pegar un videito o una foto en funcionamiento.

Saludos
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 24 de Septiembre de 2007, 20:12:45
OOHHH QUE MARAVILLA!!! ENHORABUENA!!! Video!! Video!!

jejee...

PD: Ponte un guante o algo en la mano antes de empezar a darle vueltas o te dejarás el dedo hecho un churro :D

Video!! Video!!  :-/


Un saludo desde Alicante
Título: Re: Otra de led´s.
Publicado por: togarha en 27 de Septiembre de 2007, 12:48:31
Wenas,

Tremendo, ya sirve hasta para ligar el asunto xD , si al final a las mujeres tb les gustarán los pics :P


Para J1M, ya sabes como transmiten los de thermaltake la alimentación a la parte movil???

Un saludo,
Título: Re: Otra de led´s.
Publicado por: Veguepic en 28 de Septiembre de 2007, 01:12:12
Soy un desastre como camarografo!!  :(

http://www.mytempdir.com/2029088

Es el mejor de los videos que he podido hacer, un poco porque los leds no son de buen brillo y use la camara de fotos para grabar el video.

Espero mañana recibir ayuda para hacer un video decente.

Saludos
Título: Re: Otra de led´s.
Publicado por: J1M en 28 de Septiembre de 2007, 01:29:13
togarha, sí, juraría que puse las fotos!!... fallo mío.

La parte superior del ventilador (el plástico transparente) hace de estator, y la plaquita electrónica de rotor, puesto que dispone de un bobinado. Con lo anterior se obtiene una dinamo que proporciona la energía a la placa electrónica a partir del movimiento propio del ventilador.

un saludo!
Título: Re: Otra de led´s.
Publicado por: civerpic en 02 de Octubre de 2007, 00:59:08
muchachos me gosto su proyecto me gustaria hacerme uno me podrian explicar el funcionamiento basico de este panel que conponentes utilizaron para que capte lkas vueltas o como funcione por faaaaaaaaaaaaaaaa...
Título: Re: Otra de led´s.
Publicado por: Azicuetano en 02 de Octubre de 2007, 18:56:26
Hola civerpic!

He puesto en el google las palabras 'leds giratorios' y me ha aparecido esto:

http://www.hardcore-modding.com/modules.php?name=Forums&file=viewtopic&t=24825&highlight=propeller

Ahí explican la dinámica de como funciona.

Si te queda alguna duda exponla y te lo explico lo mejor que pueda.


Un saludo desde Alicante.
Título: Re: Otra de led´s.
Publicado por: togarha en 03 de Octubre de 2007, 03:56:17
A mi lo que no me queda claro todavía es la parte de transmitir la alimentación a la parte móvil.

J1M, puedes poner alguna foto del thermaltake? Es que no entiendo exactamente como lo hace...

Salu2

PS: Estoy deseando ponerme con un monstruo de estos, pero la parte mecánica no me deja, soy totalmente inútil en ello...
Título: Re: Otra de led´s.
Publicado por: RedPic en 03 de Octubre de 2007, 08:57:07
PS: Estoy deseando ponerme con un monstruo de estos, pero la parte mecánica no me deja, soy totalmente inútil en ello...

Bienvenido al Club de los Inútiles (como yo) Ja, ja, ja  :D :D :D
Título: Re: Otra de led´s.
Publicado por: Marttyn en 05 de Octubre de 2007, 22:28:38
que facilidad teneis para crearme necesidades... como si no tuviera nada que hacer, ahora quiero uno de estos!
pues nada, tendre que hacerlo para que no me señalen en el foro con un mensaje de que no tengo uno de estos...  :D :D
pronto os contare que tal quedo...
y por favor dejen de publicar proyectos sin sentido... que yo me engancho a todo  :mrgreen:
salu2
Título: Re: Otra de led´s.
Publicado por: Marttyn en 05 de Octubre de 2007, 23:45:38
Hola Azicuetano, me he permitido una pequeña licencia para "compactar" el código y reducir el número de líneas:

Código: C
  1. //************************************************************
  2. //
  3. //                 LED&#180;S GIRATORIOS MAREADOS ;)
  4. //                  Azicuetano (foro Todopic)
  5. //
  6. //************************************************************
  7.  
  8. #include <18F2550.h>
  9.  
  10. #fuses XTPLL,PROTECT,NOLVP,PLL1,CPUDIV3,PUT,NOBROWNOUT,NOMCLR
  11. #use delay(clock=12000000)
  12.  
  13. #define delay_led 5
  14. #define enciende(leds_a_encender) {output_b(leds_a_encender); delay_ms(delay_led);}
  15.  
  16. #define TODOPIC
  17.  
  18. //#use fast_io(C)
  19. //#use fast_io(B)
  20.  
  21. //void enciende(int);
  22. void letra_I(void);
  23. void letra_V(void);
  24. void letra_A(void);
  25. void letra_N(void);
  26.  
  27. /*
  28. void enciende(int leds_a_encender)
  29. {
  30.    output_b(leds_a_encender);
  31. }
  32. */
  33.  
  34. void letra_I(void)
  35. {
  36.    enciende(0b00000000);
  37.    enciende(0b00000000);
  38.    enciende(0b10000001);
  39.    enciende(0b10000001);
  40.    enciende(0b11111111);
  41.    enciende(0b10000001);
  42.    enciende(0b10000001);
  43.    enciende(0b00000000);
  44. }
  45.  
  46. void letra_V(void)
  47. {
  48.    enciende(0b00000000);
  49.    enciende(0b0000001);
  50.    enciende(0b0001111);
  51.    enciende(0b1110001);
  52.    enciende(0b1000000);
  53.    enciende(0b0111001);
  54.    enciende(0b0000111);
  55.    enciende(0b0000001);
  56. }
  57.  
  58. void letra_A(void)
  59. {
  60.    enciende(0b00000000);
  61.    enciende(0b10000000);
  62.    enciende(0b11000000);
  63.    enciende(0b10111101);
  64.    enciende(0b00100011);
  65.    enciende(0b10111100);
  66.    enciende(0b11000000);
  67.    enciende(0b10000000);
  68. }
  69.  
  70. void letra_N(void)
  71. {
  72.    enciende(0b00000000);
  73.    enciende(0b10000001);
  74.    enciende(0b11111111);
  75.    enciende(0b10000111);
  76.    enciende(0b00011000);
  77.    enciende(0b11100001);
  78.    enciende(0b11111111);
  79.    enciende(0b00000001);
  80. }
  81.  
  82. void letra_T(void)
  83. {
  84.    enciende(0b00000000);
  85.    enciende(0b11000000);
  86.    enciende(0b10000000);
  87.    enciende(0b10000001);
  88.    enciende(0b11111111);
  89.    enciende(0b10000001);
  90.    enciende(0b10000000);
  91.    enciende(0b11000000);
  92. }
  93.  
  94. void letra_O(void)
  95. {
  96.    enciende(0b00000000);
  97.    enciende(0b00000000);
  98.    enciende(0b01111110);
  99.    enciende(0b10000001);
  100.    enciende(0b10000001);
  101.    enciende(0b10000001);
  102.    enciende(0b10000001);
  103.    enciende(0b01111110);
  104. }
  105.  
  106. void letra_D(void)
  107. {
  108.    enciende(0b00000000);
  109.    enciende(0b10000001);
  110.    enciende(0b11111111);
  111.    enciende(0b10000001);
  112.    enciende(0b10000001);
  113.    enciende(0b10000001);
  114.    enciende(0b01111110);
  115.    enciende(0b00000000);
  116. }
  117.  
  118. void letra_P(void)
  119. {
  120.    enciende(0b00000000);
  121.    enciende(0b10000001);
  122.    enciende(0b11111111);
  123.    enciende(0b10010001);
  124.    enciende(0b00010001);
  125.    enciende(0b00010001);
  126.    enciende(0b00001110);
  127.    enciende(0b00000000);
  128. }
  129.  
  130. void letra_C(void)
  131. {
  132.    enciende(0b00000000);
  133.    enciende(0b00000000);
  134.    enciende(0b01111110);
  135.    enciende(0b10000001);
  136.    enciende(0b10000001);
  137.    enciende(0b10000001);
  138.    enciende(0b01000010);
  139.    enciende(0b00000000);
  140. }
  141.  
  142. void main(void)
  143. {
  144.    set_tris_b(0b00000000);
  145.    set_tris_c(0b00000000);
  146.    set_tris_a(0b00000000);
  147.  
  148.    port_b_pullups(FALSE);
  149.  
  150.    output_high(PIN_B0);
  151.    output_high(PIN_C7);
  152.    delay_ms(500);
  153.  
  154. //************************************************************
  155. //
  156. //    EXPLICACION
  157. //
  158. //    Cada letra ocupa un tiempo de 40ms.
  159. //    En 200ms. haciendo girar el llavero a una velocidad
  160. //    normal, se repetir&#225; 2 veces la palabra que pongamos.
  161. //
  162. //
  163. //************************************************************
  164.  
  165.    while(1)
  166.    {
  167.  
  168. #ifdef TODOPIC
  169.       letra_T();
  170.       letra_D();
  171.       letra_P();
  172.       letra_I();
  173.       letra_C();
  174. #else      
  175.       letra_I();
  176.       letra_V();
  177.       letra_A();
  178.       letra_N();
  179. #endif
  180.  
  181.       output_low(PIN_B0);
  182.       output_low(PIN_B1);
  183.       output_low(PIN_B2);
  184.       output_low(PIN_B3);
  185.       output_low(PIN_B4);
  186.       output_low(PIN_B5);
  187.       output_low(PIN_B6);
  188.       output_low(PIN_B7);
  189.       output_low(PIN_C7);
  190.  
  191.       delay_ms(40);             // retardo necesario para completar los 200ms.
  192.                                 // 40ms*4 letras + 40 ms = 200 ms.
  193.  
  194.    }
  195. }

Un saludo

mmm  :?
no estoy seguro, pero creo que lo que haces realmente es reducir el numero de lineas escritas, pero al compilar el programa ocupara mas... ya que un "define" simplemente reemplaza todos los "enciende(leds_a_encender)" por "output_b(leds_a_encender); delay_ms(delay_led);" al compilarse... en cambio una llamada a una funcion, como puede ser "enciende(leds_a_encender)" solo se grabara una vez en la memoria rom del pic y se accedera a ella cada vez que se requiera.
desde mi punto de vista, la modificacion que se podria hacer es esta:
Código: C
  1. //************************************************************
  2. //
  3. //                 LED&#180;S GIRATORIOS MAREADOS ;)
  4. //                  Azicuetano (foro Todopic)
  5. //
  6. //************************************************************
  7.  
  8. #include <18F2550.h>
  9.  
  10. #fuses XTPLL,PROTECT,NOLVP,PLL1,CPUDIV3,PUT,NOBROWNOUT,NOMCLR
  11. #use delay(clock=12000000)
  12.  
  13. #define delay_led 5
  14.  
  15. #define TODOPIC
  16.  
  17. //#use fast_io(C)
  18. //#use fast_io(B)
  19.  
  20. void enciende(int);
  21. void letra_I(void);
  22. void letra_V(void);
  23. void letra_A(void);
  24. void letra_N(void);
  25.  
  26. void enciende(int leds_a_encender)
  27. {
  28.    output_b(leds_a_encender);
  29.    delay_ms(delay_led);
  30. }
  31.  
  32. void letra_I(void)
  33. {
  34.    enciende(0b00000000);
  35.    enciende(0b00000000);
  36.    enciende(0b10000001);
  37.    enciende(0b10000001);
  38.    enciende(0b11111111);
  39.    enciende(0b10000001);
  40.    enciende(0b10000001);
  41.    enciende(0b00000000);
  42. }
  43.  
  44. void letra_V(void)
  45. {
  46.    enciende(0b00000000);
  47.    enciende(0b0000001);
  48.    enciende(0b0001111);
  49.    enciende(0b1110001);
  50.    enciende(0b1000000);
  51.    enciende(0b0111001);
  52.    enciende(0b0000111);
  53.    enciende(0b0000001);
  54. }
  55.  
  56. void letra_A(void)
  57. {
  58.    enciende(0b00000000);
  59.    enciende(0b10000000);
  60.    enciende(0b11000000);
  61.    enciende(0b10111101);
  62.    enciende(0b00100011);
  63.    enciende(0b10111100);
  64.    enciende(0b11000000);
  65.    enciende(0b10000000);
  66. }
  67.  
  68. void letra_N(void)
  69. {
  70.    enciende(0b00000000);
  71.    enciende(0b10000001);
  72.    enciende(0b11111111);
  73.    enciende(0b10000111);
  74.    enciende(0b00011000);
  75.    enciende(0b11100001);
  76.    enciende(0b11111111);
  77.    enciende(0b00000001);
  78. }
  79.  
  80. void letra_T(void)
  81. {
  82.    enciende(0b00000000);
  83.    enciende(0b11000000);
  84.    enciende(0b10000000);
  85.    enciende(0b10000001);
  86.    enciende(0b11111111);
  87.    enciende(0b10000001);
  88.    enciende(0b10000000);
  89.    enciende(0b11000000);
  90. }
  91.  
  92. void letra_O(void)
  93. {
  94.    enciende(0b00000000);
  95.    enciende(0b00000000);
  96.    enciende(0b01111110);
  97.    enciende(0b10000001);
  98.    enciende(0b10000001);
  99.    enciende(0b10000001);
  100.    enciende(0b10000001);
  101.    enciende(0b01111110);
  102. }
  103.  
  104. void letra_D(void)
  105. {
  106.    enciende(0b00000000);
  107.    enciende(0b10000001);
  108.    enciende(0b11111111);
  109.    enciende(0b10000001);
  110.    enciende(0b10000001);
  111.    enciende(0b10000001);
  112.    enciende(0b01111110);
  113.    enciende(0b00000000);
  114. }
  115.  
  116. void letra_P(void)
  117. {
  118.    enciende(0b00000000);
  119.    enciende(0b10000001);
  120.    enciende(0b11111111);
  121.    enciende(0b10010001);
  122.    enciende(0b00010001);
  123.    enciende(0b00010001);
  124.    enciende(0b00001110);
  125.    enciende(0b00000000);
  126. }
  127.  
  128. void letra_C(void)
  129. {
  130.    enciende(0b00000000);
  131.    enciende(0b00000000);
  132.    enciende(0b01111110);
  133.    enciende(0b10000001);
  134.    enciende(0b10000001);
  135.    enciende(0b10000001);
  136.    enciende(0b01000010);
  137.    enciende(0b00000000);
  138. }
  139.  
  140. void main(void)
  141. {
  142.    set_tris_b(0b00000000);
  143.    set_tris_c(0b00000000);
  144.    set_tris_a(0b00000000);
  145.  
  146.    port_b_pullups(FALSE);
  147.  
  148.    output_high(PIN_B0);
  149.    output_high(PIN_C7);
  150.    delay_ms(500);
  151.  
  152. //************************************************************
  153. //
  154. //    EXPLICACION
  155. //
  156. //    Cada letra ocupa un tiempo de 40ms.
  157. //    En 200ms. haciendo girar el llavero a una velocidad
  158. //    normal, se repetir&#225; 2 veces la palabra que pongamos.
  159. //
  160. //
  161. //************************************************************
  162.  
  163.    while(1)
  164.    {
  165.  
  166. #ifdef TODOPIC
  167.       letra_T();
  168.       letra_D();
  169.       letra_P();
  170.       letra_I();
  171.       letra_C();
  172. #else      
  173.       letra_I();
  174.       letra_V();
  175.       letra_A();
  176.       letra_N();
  177. #endif
  178.  
  179.       output_low(PIN_B0);
  180.       output_low(PIN_B1);
  181.       output_low(PIN_B2);
  182.       output_low(PIN_B3);
  183.       output_low(PIN_B4);
  184.       output_low(PIN_B5);
  185.       output_low(PIN_B6);
  186.       output_low(PIN_B7);
  187.       output_low(PIN_C7);
  188.  
  189.       delay_ms(40);             // retardo necesario para completar los 200ms.
  190.                                 // 40ms*4 letras + 40 ms = 200 ms.
  191.  
  192.    }
  193. }

es decir, mantener la funcion original, y agregarle el dalay a la misma, permitiendo eliminar todos los delay intermedios.

por cierto... es necesario que el pic trabaje a 12mhz? pensaba hacerlo con un 16f88, con su oscilador interno de 8mhz asi me ahorraba componentes en la placa. ademas tiene menos pines, ya que 28 me parecen demasiados...
me estoy planteando AUMENTAR este proyecto... mi ultimo proyecto utilizaba la libreria para displays de 7-seg de vszener, y nocturno le agrego un printf para sacar mensajes...
tal vez, si a esto le agregamos una memoria I2C con los caracteres ascii que nos interesen guardados (si cada caracter ocupa 64bits en una memoria de 16k podemos meter toda la tabla ascii) para no tener que recurrir a una funcion por cada letra...
y otra memoria en la que podamos tener guardados algunos mensajes seleccionables con un dipswitch...
se le implementa el printf... no se si captais por dodne van los tiros
quedaria REDONDO... nunca mejor dicho  :mrgreen:
pues... son las 4:40 de la madrugada, y deberia irme a dormir... pero me estoy entusiasmando con esto y creo que hoy voy a trasnochar...  :shock:
espero obtener resultados pronto... salu2
Título: Re: Otra de led´s.
Publicado por: jfh900 en 06 de Octubre de 2007, 08:12:39
Hola Azicuetano, me he permitido una pequeña licencia para "compactar" el código y reducir el número de líneas:

mmm  :?
no estoy seguro, pero creo que lo que haces realmente es reducir el numero de lineas escritas, pero al compilar el programa ocupara mas... ya que un "define" simplemente reemplaza todos los "enciende(leds_a_encender)" por "output_b(leds_a_encender); delay_ms(delay_led);" al compilarse... en cambio una llamada a una funcion, como puede ser "enciende(leds_a_encender)" solo se grabara una vez en la memoria rom del pic y se accedera a ella cada vez que se requiera.

Totalmente de acuerdo. Cuando me refiero a compactar el código, es el código fuente, el propio programa en "C", reduciendo el número de líneas y haciendole más facil de seguir.

Efectiamente con una subrutina se reduce el código generado y el escrito al mismo tiempo, pero como todo tiene un precio, y es que se hace una llamada más a una función, con lo que el tiempo de ejecución aumenta, creo que este no es el caso, en el que el tiempo de proceso es muy critico, pero en un programa con los tiempos muy justos esta perdida de velocidad de ejecución puede ser crítica.

Un saludo
Título: Re: Otra de led´s.
Publicado por: stk500 en 06 de Octubre de 2007, 15:49:38
Hola amigos me dejais colaborar
Aqui os dejo una pagina muy buenas de codigo para LED :mrgreen:
http://www.hobby-elec.org/e_pic6.htm
http://www.hobby-elec.org/e_menu.htm aqui esta el menu :lol:
o este http://tobe.nimio.info/led_mood_lamp.php en RGB son geniales
 :mrgreen:
Un saludo
tengo un projecto en la web de una matrix de 512 LED
 :-)
si usted se animan hacer algo avisen :mrgreen:
estoy para ayudar

Título: Re: Otra de led´s.
Publicado por: JJcorps en 06 de Octubre de 2007, 16:18:30
Una manera ingeniosa (http://www.hardcore-modding.com/guia-8.html) de sacar tension de alimentacion a un pic con un ventilador de PC

Lo sabia desde hace tiempo pero es interesante para este proposito

Un saludo
Título: Re: Otra de led´s.
Publicado por: neo en 03 de Abril de 2013, 13:27:50
Hola a todos, se que este post es antiguo, pero me ha molado jeje  :D pero no entiendo esta parte, la de los numeros,alguien me podria explicar el tema de las letras como vá,  ejemplo:
Citar
void letra_A(void)
{
   enciende(0b00000000);
   enciende(0b10000000);
   enciende(0b11000000);
   enciende(0b10111101);
   enciende(0b00100011);
   enciende(0b10111100);
   enciende(0b11000000);
   enciende(0b10000000);
}