15-03-2016, 09:36 PM
(Última modificación: 16-03-2016, 07:26 PM por biketrial981.)
Buenas, dado que hay gente que me ha preguntado por el sistema de iluminación de mis impresoras con neopixel (WS2812b), voy a dejarlo por aquí documentado y así si alguien mas se anima, podemos entre todos seguir con el desarrollo del mismo y mejorando su uso y efectos.
El funcionamiendo es sencillo:
Utilizaremos uno de los pines auxiliares para enviar nuestras peticiones hacia el arduino micro/mini, y leeremos el valor de la señal pwm.
Siempre tendremos unas variaciones en la misma, por lo que podremos ver los valores desde el serial descomentando las líneas de debug.
Solo tendremos que unir las masas de los 2 arduinos, y cablear un pin para la comunicación.
En este caso he utilizado el primer pin se servo de la ramps, y el pin 3 en nuestro arduino micro/mini. Este cableado será siempre el mismo
independientemente del número de leds/aros que controlemos.
Necesitaremos la librería de Adafruit para los neopixel, que podréis descargar desde su github.
https://github.com/adafruit/Adafruit_NeoPixel
La instalaremos de la forma habitual dependiendo de nuestro SO.
Una vez instalado, subiremos el sketch "base_kossel". Al tenerlo montado en una kossel plus, tenía 3 líneas independientes de iluminación, una por torre.
Si solo utilizáis una tira, subiremos el sketch "base"
Hardware:
Software:
Los leds los podremos controlar mediante Mcode, al igual que si controlaramos un servo.
Enviando desde Repetier por ej el comando M42 P4 S255 estaremos enviando una señal PMW 255. Este último valor será el que tengamos que cambiar según el comando a ejecutar.
Equivalencias en el sketch base con sus Mcode
Y en el arduino:
Como podéis comprobar, al enviar un 10 en el mcode recibiremos un señal que oscilará entre 37-38, por lo que acotamos la comparación entre 36 y 40
En cada bloque de código al que lo enviamos, podemos hacer el efecto correspondiente con los leds.
Utilizando correctamente los Mcode en los gcode de inicio y final de nuestro fileteador, podemos hacer cosas interesantes como que cambien los leds al finalizar una impresión, al alcanzar una temperatura, al hacer homing, etc...
Además, podemos agregarlos al menú de nuestro lcd y controlarlos desde el mismo.
Estoy poniendo el mismo sistema en mi kossel mini para la cama, en breves actualizo con fotos y novedades!
Dejo adjuntos los sketch base y base_kossel
El funcionamiendo es sencillo:
Utilizaremos uno de los pines auxiliares para enviar nuestras peticiones hacia el arduino micro/mini, y leeremos el valor de la señal pwm.
Siempre tendremos unas variaciones en la misma, por lo que podremos ver los valores desde el serial descomentando las líneas de debug.
Solo tendremos que unir las masas de los 2 arduinos, y cablear un pin para la comunicación.
En este caso he utilizado el primer pin se servo de la ramps, y el pin 3 en nuestro arduino micro/mini. Este cableado será siempre el mismo
independientemente del número de leds/aros que controlemos.
Necesitaremos la librería de Adafruit para los neopixel, que podréis descargar desde su github.
https://github.com/adafruit/Adafruit_NeoPixel
La instalaremos de la forma habitual dependiendo de nuestro SO.
Una vez instalado, subiremos el sketch "base_kossel". Al tenerlo montado en una kossel plus, tenía 3 líneas independientes de iluminación, una por torre.
Si solo utilizáis una tira, subiremos el sketch "base"
Hardware:
Software:
Los leds los podremos controlar mediante Mcode, al igual que si controlaramos un servo.
Enviando desde Repetier por ej el comando M42 P4 S255 estaremos enviando una señal PMW 255. Este último valor será el que tengamos que cambiar según el comando a ejecutar.
Equivalencias en el sketch base con sus Mcode
Código:
"Off" M42 P4 S0
"Blanco" M42 P4 S10
"Rojo" M42 P4 S20
"Verde" M42 P4 S30
"Azul" M42 P4 S40
Y en el arduino:
Código:
if(pwm_value == 0){Serial.println("Off");Off();}
if(pwm_value > 36 && pwm_value < 40 ){Serial.println("Blanco");Blanco();}
if(pwm_value > 64 && pwm_value < 77 ){Serial.println("Rojo");Rojo();}
if(pwm_value > 101 && pwm_value < 111 ){Serial.println("Verde");Verde();}
if(pwm_value > 120 && pwm_value < 146 ){Serial.println("Azul");Azul();}
Como podéis comprobar, al enviar un 10 en el mcode recibiremos un señal que oscilará entre 37-38, por lo que acotamos la comparación entre 36 y 40
En cada bloque de código al que lo enviamos, podemos hacer el efecto correspondiente con los leds.
Utilizando correctamente los Mcode en los gcode de inicio y final de nuestro fileteador, podemos hacer cosas interesantes como que cambien los leds al finalizar una impresión, al alcanzar una temperatura, al hacer homing, etc...
Además, podemos agregarlos al menú de nuestro lcd y controlarlos desde el mismo.
Estoy poniendo el mismo sistema en mi kossel mini para la cama, en breves actualizo con fotos y novedades!
Dejo adjuntos los sketch base y base_kossel