Stap 1: Hardware overwegingen 1: rijden LEDs
De normale Arduino heeft slechts 6 PWM-uitgangen, waardoor dat het 2 RGB LEDs kan rijden door zelf. Youll ' nood sommige extra hardware te controleren 15 van hen. In mijn project gebruik ik een aangepaste board dat is in wezen een Arduino Mini variatie met 3 LED drivers geïnstalleerd; hebt u met uw eigen oplossing te komen. In deze sectie zal ik proberen uit te leggen van de beschikbare opties.
Er zijn vier manieren om te rijden een stelletje LEDs uit een Arduino: een speciale LED-driver; een shift register; de bestuurder van een multiplex/charlieplexing; of LEDs met een chip aan boord. Ik heb weinig of geen eerste hand ervaring met de twee laatstgenoemde opties, dus ik zal kort over hen.
Multiplexing van stuurprogramma's, zoals de overbekende in Arduino zijn cirkels MAX7219, bedoeld voor gebruik in aantal LED-displays en 8 x 8 LED matrices. Ze kunnen maximaal 64 afzonderlijke LEDs, rijden, zodat ze lijken te zijn vrij goed is voor dit project, zoals het 45 verbindingen vereist zijn. Deze stuurprogramma's hebben echter geen gewenste PWM-opties, zodat u zal niet zitten kundig voor individuele helderheid van elke LED instellen en zal worden geplakt met 7 basiskleuren voor RGB-LEDs met geen extra opties zoals zacht levendigheid, fade-outs en dergelijke (om precies te zijn, is er een project rudimentaire 4-bits PWM vermogen aan MAX7219 toe te voegen, kunt u de beperkingen op video er). Ook zal het nogal moeilijk om draad ze, zoals ze zijn bedoeld voor ander gebruik. Ten slotte LEDs zullen flikkeren als gevolg van multiplex-de meeste mensen niet merken, maar ik houd niet van het idee. Al met al is dit niet aanbevolen.
LED's met een controller chip zijn WS2812B (verkocht in de VS als NeoPixels) of APA102 (aka DotStar). De eerste is meer of minder algemeen bekend is, wordt op de markt voor enige tijd; Ik overwogen nooit zelfs dit ding als gevolg van haar absoluut infernal beheermethode met precieze timing eisen. De APA102 ontstaan vrij onlangs terwijl mijn project aan de gang was, en dit een stuk beter dan zijn voorganger, lijkt als het gecontroleerd met SPI of zelfs bit-banging worden kan. In de Staten APA102 zelfs heeft een zeer adequate prijskaartje, verkopen bij $4.5 voor 10 LEDs. Helaas ben ik niet daar, dus voor mij deze nog steeds niet een optie is. Sommige nota's zijn wel verschuldigd. Ten eerste, de APA102 is momenteel alleen beschikbaar in SMD formulier (5050): geen Thru b-l-hole LEDs voor u. Ten tweede, zelfs met de WS2812B wordt op de markt voor enige tijd, het niet uitgegroeid tot een industrie standaard. Persoonlijk heb ik ernstige twijfels met betrekking tot deze levensduur van de LEDs als gevolg van verwarming. Ten derde, er rekening mee dat zelfs in de VS kunt u ondervinden problemen bij het zoeken naar een vervanger voor de uitgebrande LED. Dat gezegd hebbende, vind ik nog steeds APA102 LEDs als een interessante ontwikkeling die overwegen, zelfs indien voor experimenten alleen.
En dan nu de ernstige, industrie-goedgekeurde opties.
1. LED driver
Deze chips zijn vrij normaal, omdat ze worden gebruikt in grote reclame LED-schermen. Ze zijn speciaal ontworpen om te rijden LEDs, zijn ze de hand liggende beste optie. Deze stuurprogramma's zijn bedoeld als spelpoortadapters, zodat kunt u hen in de keten tot zoveel LEDs als u wilt met behulp van hetzelfde aantal Arduino uitgangen oplichten. Ze zijn huidige wastafel apparaten, wat betekent dat alleen gemeenschappelijke anode die RGB LED's kunnen worden gebruikt; maar het betekent ook dat u weerstanden voor elke LED-etappe, slechts één per spaander (of geen bij allen met sommige drivers) niet nodig.
De meest bekende onder Arduino liefhebbers LED driver is Texas Instruments' TLC5940 16-kanaals 12-bits huidige wastafel stuurprogramma. Het werd populair omdat het een van de weinige breadboard-vriendelijke LED drivers, beschikbaar in de DIP pakket. Er is een zeer grondig en veel-getest bibliotheek beschikbaar voor deze chip. TLC5940 moet data van slechts 5 lijnen van de controller plus de spanning en de grond.
Ik gebruik de duistere LED drivers genaamd DM633 en DM634 van sommige Taiwanese fabrikant. Ik struikelde op hen tijdens het wachten voor het pakket TLCs die nooit zijn aangekomen en ik ben behoorlijk blij op mijn geluk, zoals deze jongens 3 keer goedkoper en eigenlijk beter zijn: ze hebben hun eigen PWM free-running, dus moet slechts drie data lijnen van de controller. Ze beschikken ook over wereldwijde Helderheidsregeling (die in feite, is een interne weerstand – dus het is mogelijk om sloot de externe is, hoewel ik niet zou aanraden) en 634 heeft 16-bits grayscale diepte. Ze zijn echter beschikbaar in SMD pakketten alleen, dus je moeten zult om te solderen hen (zelfs indien aan de SSOP-DIP-connector om op een breadboard te gebruiken). Als je weten te verkrijgen van deze chips en problemen waardoor ze werken hebben voel je vrij om mijn schets met de basisfunctionaliteit hier (merk op dat dit werk-in-progress en een bibliotheek nog niet, dus gewoon de code in uw schets opnemen).
De beste en snelste manier om controle LED drivers is met behulp van SPI interface. Echter, deze chips zijn niet speciaal ontworpen voor SPI, zodat ze kunnen worden geprogrammeerd met behulp van eenvoudige bit-banging techniek als u SPI uitgangen (10-13 pins op Arduino) voor iets anders nodig. Zie de TLC5940 bibliotheek voor meer informatie.
Als een bonus, kunnen LED drivers ook worden gebruikt voor station servo's en motoren. Ze zijn immers net PWM-uitgang multiplicatoren.
2: verschuiving van registers
Shift registers zijn beschikbaar in een verscheidenheid van pakketten bijna overal, ze zijn uitzonderlijk goedkoop en zij gemakkelijk kunnen worden gebruikt als LED drivers dankzij de uitstekende shiftPWM bibliotheek. Ze kunnen ook worden aaneengeschakeld. Waardoor ze de mogelijke tweede-beste keuze, vooral voor breadboard prototyping (op voorwaarde dat u vinden een plek om te zetten 6 van hen).
Het meest voorkomende en goedkoopste shift register is de goede oude 74HC595. U kunt zowel gemeenschappelijke anode en gemeenschappelijke kathode RGB LED's mee, maar heeft een aanzienlijk nadeel: u zult moet zetten een weerstand op elk been van de gegevens van elke LED, en het is 45 weerstanden in alle voor dit project (vrij uitvoerbaar, in feite).
Het alternatief is een huidige wastafel shift register, dat in wezen een LED driver zonder een ingebouwde PWM is. Hier moet u slechts één weerstand per shift register, maar zal ook worden beperkt tot het gebruik van gemeenschappelijke anode alleen LEDs. Deze fiches zijn ook duurder.
Als shift registers niet hebben een ingebouwde PWM, alles wat de modulatie zal worden gedaan door ShiftPWM library in de microcontroller, en deze berekeningen eten bronnen. Voor dit project zal deze resource wastafel zelfs niet merkbaar tenzij u uitproberen te halen sommige ernstige visualisaties met anti-aliasing en dergelijke. Er is een calculator van de resource op ShiftPWM pagina die geef je een idee van hoeveel tijd de controller drukke PWMing worden zal. Nogmaals, het is aanbevolen om de SPI gebruiken om te communiceren met shift registers, zoals dit sneller is; bit-banging is ook beschikbaar.
Om samen te vatten:
-LED drivers zijn het beste maar niet de goedkoopste optie. Bent u geïnteresseerd in het maken van LED visualisaties met Arduino, moet u zeker voor gaan: uiteindelijk zul je kennismaken met deze chips, dus waarom niet nu beginnen? U moet drie 16-kanaals LED drivers plus drie weerstanden voor dit project.
-Shift registers, namelijk 74HC595, presenteren de goedkoopste optie, met een nadeel van een heleboel weerstanden nodig. Nog, zoals shift registers in een workshop Arduino aanwezig zijn, kan deze optie worden ideaal voor mensen die dwalen in de LED veld slechts sporadisch rijden en niet willen investeren in een speciale hardware. Dit is ook een goede (maar niet de enige) optie als u van plan bent te bouwen alles op een breadboard. U moet zes 8-kanaals shift registers plus 45 weerstanden voor dit project.
-LEDs met chip aan boord, namelijk APA102, zijn overwegen als u toegang tot hen hebben en tevreden met hun SMD-alleen vorm zijn waard. Merk op dat deze nieuwe en unieke, zodat u zal niet kundig voor vervanging te vinden zitten als ze om wat voor reden stopgezet krijgen. Moet u slechts 15 dergelijke LEDs hier.
-Multiplexing coureurs als MAX7219 worden beschouwd slechts als u reeds hen hebt en dat ze op sommige zinvolle gebruik, willen aangezien zij het volledige vermogen van de PWM zal niet bieden. Koop ze niet voor dit project – een echte MAX7219 hetzelfde als drie TLC5940s kost. Een MAX7219 kan rijden 15 RGB LED's.