Paso 1: Consideraciones de Hardware 1: conducción LEDs
El Arduino normal tiene sólo 6 salidas PWM, lo que significa 2 LEDs RGB puede conducir por sí mismo. Necesitarás algún hardware adicional para controlar 15 de ellos. En mi proyecto utilizo un tablero personalizado que es esencialmente una variación de Arduino Mini con 3 conductores de LED instalado; usted tendrá que encontrar su propia solución. En esta sección voy a intentar explicar las opciones disponibles.
Hay cuatro maneras principales de manejar un montón de LEDs apagados un Arduino: un conductor del LED dedicado; un registro de cambio; un conductor de multiplexación/charlieplexing; o LED con la viruta a bordo. Tengo poco o nada de primera mano la experiencia con las dos últimas opciones, así que voy a ser breve sobre ellos.
Multiplexación de controladores, como el ampliamente conocido en Arduino círculos MAX7219, sirven para uso en pantallas de LED número y matrices de LED 8 x 8. Pueden manejar hasta 64 LEDs individuales, por lo que parece ser bastante bueno para este proyecto, ya que requiere 45 conexiones. Sin embargo, estos controladores no tienen las opciones PWM, por lo que no será capaz de configurar el brillo individual de cada LED y se queda con 7 colores básicos RGB LED sin opciones adicionales como animaciones suaves, fundidos y similares (para ser precisos, hay un proyecto de añadir capacidad de PWM de 4-bit rudimentario a MAX7219, puede ver sus limitaciones en el vídeo hay). También será algo duro al alambre, como se piensan para diverso uso. Por último, LED parpadeará por multiplexación – mayoría de las personas no se dan cuenta esto, pero no me gusta la idea. En total, no es recomendable.
LEDs con una viruta de regulador son WS2812B (comercializado en Estados Unidos como NeoPixels) o APA102 (aka DotStar). La primera es más o menos conocida, está en el mercado por algún tiempo; Nunca consideré esta cosa debido a su método de control absolutamente infernal con los requisitos de sincronización precisa. El APA102 surgió bastante recientemente mientras que mi proyecto estaba en marcha, y esta parece mucho mejor que su predecesor, ya que puede ser controlado con SPI o incluso golpes de bit. En los Estados APA102 incluso tiene un precio muy adecuado, vendiendo a $4,5 por 10 LEDs. Lamentablemente no estoy allí, así que para mí este todavía no es una opción. Sin embargo, algunas notas son debidas. En primer lugar, APA102 actualmente sólo está disponible en forma SMD (5050): ningún LED de agujero pasante para usted. En segundo lugar, aún siendo WS2812B en el mercado por algún tiempo, no pudo convertirse en una industria estándar. Personalmente tengo serias dudas con respecto a estos LED vida útil debido a la calefacción. En tercer lugar, tenga en cuenta que incluso en Estados Unidos que pueden surgir problemas al buscar un reemplazo para el LED quemado. Dicho esto, me sigue pareciendo APA102 LEDs para ser un desarrollo interesante que vale la pena considerar, aunque sea para experimentación sólo.
Y ahora para las opciones serias, aprobados por el sector.
1. conductor del LED
Estos chips son bastante comunes, porque son utilizados en pantallas LED de gran publicidad. Están específicamente diseñados para coche LED, son la mejor opción obvia. Estos controladores están diseñados para ser encadenada, por lo que los puede conectar en cadena para encender tantos LEDs como desee utilizando el mismo número de salidas de Arduino. Son dispositivos actuales del fregadero, que significa sólo común ánodo que RGB LED se pueden utilizar; pero también significa que no necesita resistencias por cada pata del LED, sólo uno por chip (o ninguno en absoluto con algunos controladores).
El más conocido entre conductor de entusiastas LED Arduino es conductor de fregadero actual Texas Instruments TLC5940 16 canales 12 bits. Se hizo popular porque es uno de los pilotos de LED tablero respetuoso muy pocos, están disponible en paquete de la inmersión. Hay una muy completa y muy probado biblioteca disponible para este chip. TLC5940 necesita líneas de sólo 5 datos del controlador más voltaje y tierra.
Utilizar controladores de LED oscuros llamados DM633 y DM634 de algunos fabricante taiwanés. Me topé con ellos esperando el paquete de TLCs que nunca llegó y estoy muy contento en mi suerte, ya que estos chicos son 3 veces más barato y realmente es mejor: tienen su propio PWM libre, así que necesitan líneas de sólo tres datos del controlador. También cuentan con control de brillo global (que, de hecho, es una resistencia interna, por lo que es posible zanja el uno externo, aunque no lo recomiendo) y 634 tiene profundidad de escala de grises de 16 bits. Sin embargo, están disponibles en paquetes SMD, por lo que vas a tener que soldarlos (incluso si al conector SSOP-DIP en un protoboard). Si se las arregló para conseguir estos chips y tener problemas haciéndoles trabajar no dude en utilizar mi bosquejo con funcionalidad básica aquí (nota que esto es trabajo en progreso y no una biblioteca aún, así que sólo incluya el código en su bosquejo).
La manera mejor y más rápida para el control de conductores del LED está utilizando la interfaz de SPI. Sin embargo, estos chips no están diseñados específicamente para SPI, por lo que pueden ser programados usando técnica golpeando poco sencilla si necesita salidas SPI (pines 10 al 13 de Arduino) para otra cosa. Ver la biblioteca TLC5940 para más detalles.
Como extra, controladores de LED se pueden utilizar también con los motores servos de la unidad. Después de todo, son sólo los multiplicadores de salida PWM.
2: cambiar los registros
Registros de desplazamiento están disponibles en una variedad de paquetes casi por todas partes, que son excepcionalmente baratos y pueden ser fácilmente utilizados como conductores de LED gracias a la excelente biblioteca de shiftPWM. También pueden ser encadenada. Lo que les hace la segunda mejor elección, especialmente para los prototipos de protoboard (siempre encontrará un lugar para poner 6 de ellos).
El registro de desplazamiento más común y más barato es el 74HC595 vieja buena. Puede usar ánodo común y cátodo común LEDs RGB con ella, pero tiene un inconveniente importante: tendrás que poner una resistencia en cada pata de los datos de cada LED, y es 45 resistencias en total para este proyecto (muy factible, de hecho).
La alternativa es un registro de cambio fregadero actual, que es esencialmente un controlador LED sin ningún PWM incorporado. Aquí necesita sólo una resistencia por cada cambio de registro, pero se limitará al uso de ánodo común solo LEDs. Estos chips son también más caros.
Como cambio de registros no tienen ningún PWM incorporado, todos la modulación se realizará en la biblioteca de ShiftPWM en el microcontrolador, y estos cálculos comen recursos. Para este proyecto este sumidero de recursos aún no será notable a menos que usted intentar hacer algunas visualizaciones graves con antialiasing y tal. Hay una calculadora de recursos en la página de ShiftPWM que voy a dar una idea de cuánto tiempo el controlador será ocupado PWMing. Una vez más, se recomienda utilizar SPI para comunicarse con los registros de cambio, ya que es más rápido; golpeando de bits también está disponible.
Para resumir:
-Controladores LED son los mejores pero no la opción más barata. Si usted está interesado en hacer visualizaciones LED con Arduino, sin duda debe ir para él: eventualmente usted tendrá que familiarizarse con estos chips, así que ¿por qué no empezar ahora? Necesitarás tres controladores de LED de 16 canales y tres resistencias para este proyecto.
-Cambio de registros, es decir, 74HC595, actualmente la opción más barata, con un inconveniente de necesitar un montón de resistencias. Aún así, como registros de desplazamiento están presentes en cualquier taller de Arduino, esta opción puede ser ideal para personas que deambulan en el LED conducción campo sólo ocasionalmente y no quieren invertir en hardware dedicado. Esto también es una buena (pero no la única) opción si va a construir todo en un protoboard. Necesitará seis registros de cambio de 8-canal plus 45 resistencias para este proyecto.
-LED con la viruta a bordo, es decir, APA102, son merece la pena considerar si usted tiene acceso a ellos y está contentos con su forma sólo SMD. Tenga en cuenta que estas son nuevas y únicas, por lo que no podrás encontrar repuesto Si haz interrumpidos por alguna razón. Usted necesita sólo 15 estos LEDs.
-Conductores multiplexación como MAX7219 deben ser consideradas sólo si ya los tienen y quieren poner a algún uso significativo, ya que no proporcionan la capacidad completa de PWM. No las compre para este proyecto – un MAX7219 genuino cuesta lo mismo que tres TLC5940s. Un MAX7219 coche 15 LEDs RGB.