Paso 10:
¡ Oh! En otras noticias para utilizar este código necesita descargar la biblioteca de LPD8806 o esto no va a funcionar https://github.com/adafruit/LPD8806
#include "LPD8806.h"
#include "SPI.h"
Esto es tomado principalmente de la simple prueba de mechón de LED RGB y solo jugaba con
/*****************************************************************************/
Número de LEDs RGB en strand: debe especificar cuántos son en su franja más largo
nLEDs int = 20;
Eligió 2 pines para la salida; puede ser las patas de salida válidos:
int dataPin = 11;
clockPin int = 13;
Primer parámetro es el número de LEDs en el filamento. Las tiras de LED
son 32 LEDs por metro, pero usted puede extender o cortar la tira. A continuación dos
los parámetros son pins de datos y reloj SPI:
Tira de LPD8806 = LPD8806 (nLEDs, dataPin, clockPin);
Opcionalmente puede utilizar hardware SPI para escribe más rápido, simplemente dejar de lado
los parámetros de pin de datos y reloj. Pero esto no limita uso a muy
pasadores específicos en el Arduino. Para Arduinos "clásico" (ONU, Duemilanove,
etc.), datos = pin 11, reloj = pin 13. Para Arduino Mega, datos = pin 51,
reloj = pin 52. Para 32u4 Breakout Board + y Teensy, datos = pin B2,
reloj = pin B1. Para Leonardo, esto sólo es posible en los pines ICSP.
Tira de LPD8806 = LPD8806(nLEDs);
void setup() {}
Poner en marcha la tira del LED
Strip.Begin();
Actualizar la faja, para empezar todos son 'off'
Strip.Show();
}
void loop() {}
Enviar una persecución simple pixel...
colorChase (de la tira. Color(127, 127, 127), 500); Blanco
colorChase (de la tira. Color(127, 0, 0), 500); Rojo
colorChase (de la tira. Color(127, 127, 0), 500); Amarillo
colorChase (de la tira. Color (0, 127, 0), 500); Verde
colorChase (de la tira. Color (0, 127, 127), 500); Cyan
colorChase (de la tira. Color (0, 0, 127), 500); Azul
colorChase (de la tira. Color(127, 0, 127), 500); Violeta
Llenar toda la banda con...
colorWipe (de la tira. Color(127, 0, 0), 50); Rojo
colorWipe (de la tira. Color (0, 127, 0), 50); Verde
colorWipe (de la tira. Color (0, 0, 127), 50); Azul
colorWipe (strip2. Color(127, 0, 0), 50); Rojo
colorWipe (strip2. Color (0, 127, 0), 50); Verde
colorWipe (strip2. Color (0, 0, 127), 50); Azul
Rainbow(10);
rainbowCycle(0); hacer que vaya bastante rápido a través del ciclo
}
{} void arco iris (uint8_t esperar)
int i, j;
para (j = 0; j < 384; j ++) {/ / 3 ciclos de todos los 384 colores en la rueda
para (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, rueda ((i + j) % 384));
}
Strip.Show(); escribir todos los píxeles
Delay(Wait);
}
}
Ligeramente diferente, esta se hace la rueda del arco iris igualmente distribuida
a lo largo de la cadena
void rainbowCycle (uint8_t espera) {}
uint16_t i, j;
para (j = 0; j < 384 * 5; j ++) {/ / 5 ciclos de todos los 384 colores en la rueda
para (i = 0; i < strip.numPixels(); i ++) {}
matemáticas complicadas! utilizamos cada píxel como una fracción de la rueda completa 384-color
(que es la i / strip.numPixels() parte)
Luego añadir en j que hace que recorrer los colores por píxel
el % 384 es hacer la rueda de ciclo de alrededor de
strip.setPixelColor (i, rueda (((i * 384/strip.numPixels()) + j) % 384));
}
Strip.Show(); escribir todos los píxeles
Delay(Wait);
}
}
Llene los puntos progresivamente a lo largo de la tira.
{} void colorWipe (uint32_t c, uint8_t espera)
int i;
para (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c);
Strip.Show();
Delay(Wait);
}
}
Perseguir un punto abajo de la tira completa.
{} void colorChase (uint32_t c, uint8_t espera)
int i;
Empezar por apagar todos los píxeles:
para (i = 0; i < strip.numPixels(); i ++) strip.setPixelColor (i, 0);
Luego mostrar un píxel a la vez:
para (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c); Activado nuevo pixel
Strip.Show(); Actualizar Estados de LED
strip.setPixelColor (i, 0); Borrar pixel, pero no actualizar!
Delay(Wait);
}
Strip.Show(); Actualización para apagar el último pixel
}
/ * Funciones auxiliares * /
Un valor 0 a 384 para obtener un valor de color de entrada.
Los colores son una transición r - g -b - a r
Rueda de uint32_t (uint16_t WheelPos)
{
byte r, g, b;
Switch(WheelPos / 128)
{
caso 0:
r = 127 - WheelPos % 128; Rojo hacia abajo
g = WheelPos % 128; Verde para arriba
b = 0; azul apagado
rotura;
caso 1:
g = 127 - WheelPos % 128; abajo verde
b = WheelPos % 128; arriba azul
r = 0; rojo apagado
rotura;
caso 2:
b = 127 - WheelPos % 128; abajo azul
r = WheelPos % 128; arriba rojo
g = 0; verde apagado
rotura;
}
retorno (de la tira. Color(r,g,b));
}
¡ Yay! Ahora funciona! ' Tis de lujo! He incluido este código porque desde este código usted puede realmente hacer que hacer una variedad de cosas, sólo cortar lo que no quieres a cabo!