Stap 3: Dimmen algoritme - het Kruis fade effect en dubbele buffering
Ik hoefde te hebben individuele LED's worden gecontroleerd op aparte helderheidsniveaus te doen op een kruis vervagen. Het eerste patroon bij een helderheid en de tweede bij een lage helderheid nodig. Vervolgens over een korte periode, ik zou de helderheid van de eerste een beetje afneemt, en het verhogen van de tweede... zou dit blijven gaan tot de tweede patroon op volledig. Toen de klok tot de volgende wachten zou patroon moest tonen en zou er een andere overgang.
Dus ik nodig had om op te slaan van twee patronen. Degene die momenteel wordt weergegeven en de tweede patroon, die moest worden weergegeven. Deze zijn in matrices nLedsA [] en nLedsB. (Opmerking niets te maken met poorten in dit geval). Dit is de dubbele buffer.
De update_display() functie was aangepast zodat het doorlopen van acht frames en tonen een aantal frames van de eerste matrix, dan de andere. Wijzigen van het aantal frames die zijn toegewezen aan elke buffer gedurende de acht cycli gedefinieerd hoe helder elk patroon zou worden. Toen we klaar Fietsen tussen buffers we overstapten buffers de 'display' en 'volgende display' rond, zodat het patroon voortbrengende functie zou vervolgens schrijven alleen aan de buffer 'volgende weergeven'.
Het onderstaande diagram toont dit hopelijk. U moet zitten kundig voor zien dat de overgang 64 scan frames duurt. In de afbeelding, de kleine inzet toont de scan fram schema uit de vorige pagina kunstig verkleind.
Een woord op re-vers tarief. Dit alles moet worden gedaan zeer snel. We hebben nu twee niveaus van extra berekening, één voor de ambient weergave-dimmness en één voor de cycli van de acht frame bezig geweest met het doen van een overgang tussen twee buffers. Zo was deze code moet worden geschreven in de vergadering, maar goed genoeg in "C" is.