Paso 1: Conectar la tira de LED y configuración software de LED RGB
Un buen diagrama para conectar la tira del RGB LED para el RasPi puede encontrarse en el sitio de adafruit.
Soldar los 5V, tierra, líneas de reloj y datos hasta el final de la entrada de la tira LED y conectar con el Pi como se muestra en el enlace o en mis fotos. Asegúrese de conectar la tierra de la fuente de 5V a la tierra de la Pi.
Agarra el software y siga las instrucciones para obtener el Pi capaz para la salida SPI. Es importante que use el hardware SPI porque cualquier enfoque golpeando poco no ser lo suficientemente rápido.
sudo raspi-configpara habilitar el hardware SPI (siga las instrucciones en la página de git).
He añadido el directorio de instalación a mi PYTHONPATH en bashrc así podría llamar a las funciones desde cualquier lugar.
interior bashrc:
Export PYTHONPATH = $PYTHONPATH: / home/pi/RPi-LPD8806-master
probar que la tira funciona ejecutando el código de ejemplo:
Python example.py
El código ligero de Navidad que vamos a descargar más tarde quiere ejecutar como root, y al ejecutar cosas con un sudo delante, las variables de entorno, específicamente, PYTHONPATH no transferido.
Tuve que editar/etc/sudoers escribiendo
sudo visudo
y luego en la parte inferior
Por defecto env_keep = SYNCHRONIZED_LIGHTS_HOME
Por defecto env_keep += PYTHONPATH
la primera línea es algo que necesitará para que el paquete de luz de Navidad a ser instalado después. Estos Asegúrese de que las variables de entorno quedarse al ejecutar cosas como sudo.
Para probar que usted tiene derecho de instalación, cerca de la terminal y vuelva a abrir, escriba
sudo python
de importación bootstrap *
LED.Fill(color(50,50,50),0,10)
LED.Update()
debe encender los 10 LEDs.
Un paso final es hacer algunas modificaciones en la velocidad de escritura a la franja.
Dentro de ledstrip.py, hacer que use_py_spi = True en la línea de def __init__
def __init__ (self, leds, use_py_spi = verdadera, dev="/dev/spidev0.0", driver = "LPD8806"):
Ahora dentro de LPD8806.py, vamos a cambiar la velocidad SPI a 16MHz
Si self.use_py_spi:
importación spidevSelf.SPI = spidev. SpiDev() self.spi.open(0,0)
self.spi.max_speed_hz = 16000000
imprimir ' py-spidev MHz: %d ' % (self.spi.max_speed_hz / 1000000.0)
Que instrucción print está allí sólo para asegurarse de que todo se establece correctamente.
Un cambio final en el LPD8806.py archivo está en la función update(). Por alguna razón, me di cuenta led.update() estaba tomando mucho tiempo, upwords de 25ms. Para obtener un buen efecto visual, quería mi todo análisis y presentación el lazo a 20Hz o 50ms por lazo y quema la mitad que tiempo de espera para la tira de LED no funcionaría. Y extrañamente, a 16MHz, debe haber tomado menos de un ms. 3 bytes por led, 152 LED, (3 * 152 * 8 bits / 16M) =.2ms! (no 25 ms) Cuando le pongo un alcance hasta el puerto SPI, cada octeto fue saliendo a 16 MHz, pero hubo una pausa 160uS después de cada llamada a self.spi.xfer2(). Mi solución fue recoger toda la cadena de bytes en un buffer y sólo llamar a self.spi.xfer2() una vez:
actualización de DEF (sí, tampón):
temp_buffer =]Si self.use_py_spi:
para x en range(self.leds):
temp_buffer = temp_buffer + [i i en tampón [x]]
#self.spi.xfer2 ([i i en buffer[x]])
Self.SPI.xfer2 (temp_buffer)
Self.SPI.xfer2([0x00,0x00,0x00]) #zero llenar el último para evitar que los colores al final
Self.SPI.xfer2([0x00]) #once más con sentimiento - esto ayuda :) time2 = time.time()
Escribir a 152 LEDs en 16 que MHz no debería tomarse ningún tiempo, debería ver el último cambio de LED a la vez que el primero de ellos hace
Algunas otras personas tienen luchado con esto y consiguió alrededor, compruebe el increíble efecto de video POV con una sola tira de LED vertical (envío de datos a 8 MHz a 20 pies de gato 5!):