Caleidoscopio con Arduino y tiras de leds

Caleidoscopio con Arduino y tiras de leds RGB



Os presento un nuevo proyecto Arduino: un Caleidoscopio (o algo parecido) , con una construcción y una lista de materiales de los más sencilla.
Podéis ver el resultado en el vídeo. Se puede utilizar como decoración en un salón o como adorno para la cuna del bebé, seguro que alucina ... Muy relajante acompañado de música Chill-Out.
Gracias a la aparición de las tiras de leds direccionables, o tiras de pixels, es extremadamente sencillo (y barato) poder crear proyectos con múltiples leds RGB.
Estas tiras, contienen pequeños leds RGB formato 5050, donde cada led va acompañado de un circuito WS2811, capaz de controlar un led RGB (o varios) con 256 niveles para cada color.
En el post anterior (Arbol de navidad shield para Arduino) ya hable de las bondades de estos chips
Las tiras tienen tres conexiones +5V, GND y la entrada de datos (DI). Hay que tener cuidado, pues en las tiras viene indicado el sentido de los datos, los datos deben entrar por DI y salen por DO (en el lado opuesto). Para conectar un trozo de tira con otro, hay que conectar el DO del primero con el DI del segundo.



Las tiras se pueden cortar con unas simples tijeras por las zonas indicadas


El montajes es muy sencillo, simplemente una tira de leds de 60 leds/m cortada en 12 partes de 5 leds cada una y montadas sobre una pieza de PVC (forex) . Las tiras son adhesivas, por lo que es muy sencillo. Como se puede observar en la foto , he utilizado un Arduino pro mini, que ahora es posible encontrarlos en ebay por menos de 3€ ..

Caleidoscopio con Arduino y tiras de leds

Una plancha de plexiglas opalino, se encarga de difuminar la luz de los leds y realzar el efecto.

Caleidoscopio con Arduino y tiras de leds

El circuito es tan sencillo que no necesita esquema ..., tan solo un pin de salida del Arduino, conectado a la estrada de datos de las tiras (DI), y por supuesto la alimentación (GND y 5V).

Esquema caleidoscopio con Arduino


El código realiza una serie de patrones aleatorios simétricos para simular el funcionamiento de un Caleidoscopio.

Puedes descargar el código de
https://github.com/arduino-guay/Blog/tree/master/Caleidoscopio

Si te ha gustado, recuerda compartirlo en tu red social favorita. Gracias

44 comentarios:

  1. disculpa el código del caleidoscopio no lo puedo descargar

    ResponderEliminar
  2. @Anónimo
    ¿Cuál es el problema?, He comprobado el enlace y funciona

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Como puedo adaptar el programa para el arduino 1 r3?? esque yo te esa tarjeta

    ResponderEliminar
  5. @Anónimo
    Funciona sin problemas con un Arduino UNO R3.

    ResponderEliminar
  6. Enhorabuena por el proyecto¡ Me gustaría hacerme uno ya que me parece un proyecto sencillo y vistoso.

    Los materiales (aparte de la placa arduino) donde los has adquirido?

    ResponderEliminar
  7. @Anónimo
    La base (Forex) se utiliza para impresión de cartelería, tenía algunos restos de un trabajo ... , pero puedes utilizar un simple tablero de DM blanco o contrachapado.
    Las tiras las compré a través de EBAY, las puedes encontrar en multitud de variantes 1m, 5m, por cm ... y de distinta cantidad de leds/m 30, 60, 144 .... busca WS2812 led strip, por ejemplo.
    Por ultimo la cubierta es de plexiglass blanco, se utiliza para rótulos. Puedes buscar en una tienda de rotulación a ver si consigues un trozo (a veces tiran los restos en un contenedor cercano ....), si no puedes encontrarlo en tiendas de ferretería tipo Leroy (el problema es que a veces las planchas son grandes y caras ...), pero en su defecto también se puede utilizar otro material tipo papel vegetal, o un cristal opalino.

    ResponderEliminar
  8. me parecio increíble este proyecto ! y ya lo ando empezando
    me podrias mostrar el diagrama de conexión ?

    ResponderEliminar
  9. @Anónimo
    Como comento en el texto el circuito es muy simple, sólo hay que conectar un pin del arduino (yo he utilizado el pin D7 pero lo puedes cambiar en el código) conectado a al pin DI de la primera tira de leds, la salida DO de esta con el DI de la siguiente tira y así con todas (DO -> DI).
    Arduino D7 -> (DI....DO) -> (DI....DO) -> ... -> (DI....DO)
    Las tiras tienen que tener los pines GND (masa) y +5V conectados a la alimentación.
    En la segunda foto se aprecia bastante bien.

    ResponderEliminar
  10. tengo un problema con el código al momento de cargarlo en la arduino me marca error en la línea Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800); y no me deja cargarlo no tienes otro código con el que pueda utilizar ?

    ResponderEliminar
  11. Si ya la tengo cargada, ya no me aparecen errores y ya se carga a la arduino pero no me produce ningun efecto nada los leds no los enciende, me ti uno que diste en los comentarios del arbol de navida ese si me sirvio pero quisiera darle el efecto del caleidoscopio

    ResponderEliminar
  12. @Anónimo
    ¡Ojo! El código utiliza el pin 7 para controlar los leds, si no utilizas el mismo pin debes cambiarlo en el código

    ResponderEliminar
  13. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  14. Hola, pasa algo si utilizo un arduino uno, en cambio de un arduino pro mini?

    ResponderEliminar
  15. Buenas este programa funcionara en el Arduino Mega?? disculpa

    ResponderEliminar
  16. Hola, En qué pais conseguiste las tiras de leds direccionables? y cuanto tardaron en llegar?

    ResponderEliminar
  17. @Anónimo
    Las compré en ebay, en China.
    Tardaron unos 20 días.

    ResponderEliminar
  18. ¿hola, podrías hacerme el favor de explicarme de manera sencilla el código de arduino?

    ResponderEliminar
  19. ¿En que programa hiciste el esquema de las tiras pixel?

    ResponderEliminar
  20. Hola, sera Que Podrias Darme Una Breve Explicacion Sobre Como Conectar Un Arduio Uno R3 Con Unas Tiras De Led De Cuatro Entradas (Rojo, Green, Blue Y Grn)

    ResponderEliminar
  21. @Anónimo
    Básicamente la rutina PonBola(), crea una 'bola' de varios pixels.
    Pixel4 crea una imagen simétrica de cuatro bolas para dar el efecto de un caleidoscopio.
    Luego simplemente en el bucle loop(), se crean aleatoriamente bolas de distinto color y tamaño y se 'mueven' o giran tb aleatoriamente.

    ResponderEliminar
  22. @carolina Rodriguez
    Para este tipo de tiras necesitas 3 salidas del Arduino, una para cada color (Rojo, Verde, Azul).
    Necesitaras o bien transistores o bien un driver para aumentar la corriente disponbile (con las salidas del Arduino no puede controlar más que un par de leds).
    Aqui puedes ver un tutorial.

    ResponderEliminar
  23. Hola, Quisiera pedirte un consejo. Estoy lidiando con un proyecto y no consigo llevarlo a cabo. La idea es conectar una tira de led por USB a la tele y cuando la tele se enciende quiero que me alimente la tira y de una luz fija. (luz ambiente)

    Actualmente estoy probando las conexiones con un enchufe USB del tipo cargador apple, en el USB de mi portatil. Lo que ocurre que la tire solo hace flashes de luz ya sea uno solo o varios y de diferentes colores. Podrias decirme por favor como he de conectarla?

    Dispongo de una tira de 70 cm con 40 leds independientes a 5v. tiene las mismas 3 conexiones que la tira de led de tu proyecto.

    gracias de antemano
    Radu

    ResponderEliminar
  24. Hola. Interesante proyecto. Me gustaría hacer algo parecido a tu proyecto pero en grandes dimensiones. Me gustaría preguntarte cuál serí el límite de metros que se podrían controlar con una arduino MEGA. gracias.

    ResponderEliminar
  25. @JMGM
    Hola
    Este tipo de pixel puede tener varias 'limitaciones'.
    La librería de Adafruit necesita 3 bytes por cada pixel, así que puedes calcular la cantidad de RAM que necesitas.
    Por otro lado frecuencia de los datos es fija, así que a mayor número de pixels, menor velocidad de refresco. Por ejemplo para 100 leds la velocidad de refresco es de 328Hz, depende de si necesitas una frecuencia muy rápida.
    Y por último atención a la alimentación, puede llegar a consumir 60 mA por pixel (6A para 100 pixel!!). Se recomienda distribuir la alimentación por partes.
    Te recomiendo la página de Adafruit con todo sobre estas joyas:
    https://learn.adafruit.com/adafruit-neopixel-uberguide/overview
    Y esta página sobre como controlar 1000 pixels con tan sólo 1K RAM
    http://hackaday.com/2014/05/19/driving-1000-neopixels-with-1k-of-arduino-ram/

    ResponderEliminar
  26. @Radu Aleman
    Si la tira es igual que la del proyecto, no puedes encenderla con un USB sólo.
    Estas tiras necesitan una 'logica' para encenderlas, necesitarías poner un Arduino por ejemplo como es este proyecto.

    ResponderEliminar
  27. Donde tengo que añadir la libreria neopixel?

    ResponderEliminar
  28. @Anónimo
    En la carpeta de librerías del Arduino.
    Aquí hay un tutorial: Instalar librería en Arduino

    ResponderEliminar
  29. |buenas tardes, una pregunta, lo que pasa es que la tira de leds que he conseguido traen 4 salidas, R, G, B y 12v, como habría que conectarlo para hacer este proyesto, gracias

    ResponderEliminar
  30. !!!!!!!!!!!!!!!???????????????????

    ResponderEliminar
  31. @Anónimo
    Las tiras que comentas encienden todos los leds al mismo timepo, puedes variar el color de al tira completa, no encender leds individuales ....
    Eso lo complica bastante. Podrias encender distintos 'trozos' de tiras ..., pero además son de 12v así que necesitas un transistor on un ULN2003 para poder activar cada una de las salidas ..
    Puedes ver algo parecido aquí:
    Controlling Dioder RGB LED Strips with Arduino

    ResponderEliminar
  32. hey, Can you help me understand the code? I cannot figure it out how it works...

    It would be great if you can reply on this mail-id
    "s.shreyak96@gmail.com"

    Hope to see your reply!

    Thank you!

    ResponderEliminar
  33. @Unknown
    Basically the routine "PonBola ()" creates a 'ball' from several pixels.
    the routine "Pixel4" creates a mirror image of four balls to give the effect of a kaleidoscope.
    Then simply the loop "loop()", create randomly balls of different colors and sizes and move it or rotate randomly.

    ResponderEliminar
  34. hola, quisiera saber cuantos led de estos puedo controlar con arduino uno, gracias

    ResponderEliminar
  35. @Unknown
    Es difícil decir un número exacto, depende de varios factores (memoria, alimentación velocidad de refresco), pero en un comentario anterior (mira un poco más arriba ;-) )ya comento el tema y un par de enlaces de interés.

    ResponderEliminar
  36. una consulta, yo consegui la tira que trae el controlador lpd6803, quisiera saber que cambios tengo que hacer para que funcione, Desde ya muchas gracias

    ResponderEliminar
  37. @Elias Vargas
    Tendrás que cambiar de librería para ese controlador.
    Hay una en https://github.com/adafruit/LPD6803-RGB-Pixels
    Al parecer es casi compatible con la de los ws2812, salvo que en el setup debes añadir una instrucción:
    strip.setCPUmax(50);
    Tienes un tutorial en https://learn.adafruit.com/20mm-led-pixels/code

    ResponderEliminar
  38. Hola! Muy buen proyecto! Me gustaría hacer uno parecido solo que la iluminacion cambie en función de un angulo de giro, por ejemplo añadiendo un potenciómetro de manera que en función de la posición la imagen cambie. Como afectaría eso al código? o qué se debería añadir para que funcione con el potenciómetro?
    Un saludo y gracias!

    ResponderEliminar
  39. hola quisiera saber como puedo descargar la aplicasion del arduino para programarlo

    ResponderEliminar
  40. Hola J.Daniel! gracias por compartirlo. Acabo de construir uno, y la verdad que es muy intersante el resultado. Es ciertto que yo lo estoy modificando un poco, pues tengo 10 tiras y 40 leds en total.... pero funciona todo perfecto. Gracias!

    ResponderEliminar