Stap 3: Software
De functie 'putc' zal plaats een teken op het display als volgt:
putc (karakter, positie, voorgrond kleur, achtergrondkleur)
Dit toont slechts twee van de functies, er zijn anderen zoals tekening vakken, lijnen en tekst schuiven vanaf de linkerkant.
De software is opgebouwd in lagen, waardoor het gemakkelijker te begrijpen en te ontwikkelen. Hieronder volgt een beschrijving van elke laag en hoe het werkt.
LED Driver
Er is een volledige beschrijving van deze adresseerbare LEDs at http://www.bypic.co.uk/projects/colour-addressable-leds/ rijden, maar een herhaling zal niet mis gaan.
De WS2811 controller nodig heeft slechts één draad, het signaal wordt verzonden uit LED naar LED bij een specifiek tempo (frequentie) en dus de timing is belangrijk. De apparaten die worden gebruikt in deze weergave zijn 400kHz die volgens de data sheet halve snelheid is, volle snelheid is 800 kHz
De 1's en 0's worden verzonden als hierboven waar de overgang van H tot L vindt plaats voordat halverwege 0 en na halverwege voor 1. De werkelijke timing voor het frame of de cel is 2500nS voor 400kHz. Voor de BV500 kloksnelheid van 40MHz dit is 24 CPU-cycli, dus het is geregeld dat 1 16/8 cycli (hoog/laag) en 0 is 8/16 cycli (hoog/laag).
Dit wordt gedaan door het uitstellen van de timing lus met nop of dummy instructies. Ik heb gezien het SPI interface die wordt gebruikt voor dit doel, maar kan niet begrijpen waarom?
De volgende stap omhoog wordt voor de levering van de LED met drie bytes die de kleur beschrijven zal, de volgorde is groen, rood en blauw, hoe hoger het aantal helderder het licht dat bepaalde kleur. Voor het gemak worden de drie bytes in een 32-bits geheel getal geplaatst en er zijn zoveel gehele getallen als er LEDs zo voor een strook van 40 LED's zal er 40 32-bits gehele getallen. Een ByPic matrix is gunstig gebruikt voor het opslaan van deze en een twee dimensionale array wordt gebruikt omdat er 8 stroken, een dimensie voor elke strip.
Omdat de timing is van cruciaal belang is de afhandeling rechtstreeks in C, via een functie plug-in. ByPic kan een functie aanroepen en doorgeven van informatie aan het. De functie verwerkt de kritieke timing verzenden van de gegevens die aan het wordt doorgegeven. Gelukkig de LEDs hun status te behouden en zo de plug-in alleen moet uitvoeren als er een update is. Dit heet render() die alle 8 stroken bijwerken zal.
Een individuele LED verlichting is gewoon een kwestie van de matrix de waarde op de vereiste RGB en vervolgens waardoor zij door het aanroepen van de functie render(). De grootte van de matrix is groter dan 8 x 40 zoals sommige van de eerste bytes in de matrix worden gebruikt voor de plug-in vertellen welke poort en de lijnen te gebruiken, zodat de werkelijke eerste LED op strip 1 disp(7,0) is.
Hogere niveaus
De volgende reeks van functies de array initialiseren en zorgen voor het weergeven van tekens. De teken vormen worden gevormd met behulp van 5 bytes en worden weergegeven als een cel 5 x 7 op het display. Ik had al het font dossier en zo maakte gebruik van.
Een lichte complicatie is het scrollen, het hele teken weergeven in plaats van in een keer kan slechts één kolom weergeven van het, dit is wat schuiven mogelijk maakt.
Er zijn 7 programma's in totaal vermeld op de achterkant van deze tekst. Afgezien van de RTC afhankelijk elkaar van functie in het vorige voorbeeld. Dit kan zijn alle gebracht in één programma, maar door te doen het op deze manier het ontwikkeling veel gemakkelijker maakt.
Als voorbeeld is er een grafisch programma dat tekent u lijnen en vakken enz. Doordat de basisfuncties in plaats, in Flash was eenvoudig en snel te ontwikkelen en krijgen deze functies gelijk zonder te laden alle vorige functies over en weer. Evenzo is het 'effecten'-programma werd ontwikkeld na het grafische programma met behulp van enkele van de functies in het grafische programma.
Valkuilen
Zoals eerder gezegd dat dit display is een concept en zo als u van plan bent om iets te bouwen bevalt dan zijn de volgende dingen aan horloge uit voor.
Dode LEDs: De vertoning die ik gebouwd heeft 3 dode LEDs – niet volledig slechts één kleur. Het was niet iets wat ik verwacht en dus niet gecontroleerd voor. Voordat u een strook door ervoor te zorgen dat al de kleuren werken.
LED afstanden: Ik was onder de indruk dat het toen je hem een 5m tekenreeks van LEDs die kocht alle één strip, was niet zo. De LEDs worden samengevoegd met tussenpozen door samen de koperen delen van de PCB solderen. Het gewricht veroorzaakt de LED afstand variëren en deze moeten dus worden los gesoldeerd en gesoldeerd op de juiste afstand.
Bouw: Acryl op een aluminium frame werkt goed maar de hoek van de 20mm die ik gebruikte is niet echt diep genoeg om de componenten te huisvesten.
Power supply: Als de kleine 5V regelgevers zijn gebruikt dan één per twee stroken zijn nodig, ze zijn goedkoop genoeg om dit te doen maar wat ruimte in beslag zou nemen. Tien versterkers is nogal een flinke lineaire voeding en dus ik zou gaan voor een switch levering. Het alternatief genoemd in de tekst is een lithium accu en een lader van de muur wrat type. Dit zou nog steeds een probleem maar als ik veronderstel dat de gemiddelde huidige getrokken in de regio van 2-4A zijn zou
Verbeteringen
Percelen; maar waarschijnlijk een goed idee is om een DCF radio tijd module en temperatuur / luchtvochtigheid sensor.