Stap 4: De code
De regeling werkt is heel simpel. Een versnellingsmeter informatie verkeer over de x, y, z-as. Op basis van de afdrukstand, zijn de RGB-waarden van de LED's bijgewerkt.
Het werk is onderverdeeld in de volgende fasen.
- Een lezing van sensor doen.
Gewoon gebruik maken van de api. - Trigonometrie, lossen de waarden van de "roll en toonhoogte".
Vindt u veel meer informatie in dit document door Mark Pedley. - Het verkrijgen van de corresponderende kleur, aan de rotatiewaarden gerelateerde.
Voor dat we ons wenden tot 0-360 RGB-waarde met behulp van een HSL - RGB conversiefunctie.
De waarde van het veld wordt op verschillende schalen te regelen de intensiteit van wit licht en kleurverzadiging. De tegenovergestelde hemisferen van de bol van de Plukker van kleur zijn volledig wit. - Update de buffer van lichten waarin informatie van individuele LED kleuren is opgeslagen.
Afhankelijk van deze informatie, de buffer-controller zal een animatie maken of zal reageren met complementaire kleuren. - Ten slotte toont de kleuren en de LEDs te vernieuwen.
Aanvankelijk was het idee om te maken een kleur bol waar u elke kleur kon kiezen. De donkere en lichte tinten brengen het kleurenwiel op de meridiaan en de poleward.
Maar snel het idee werd verworpen.
Omdat de LED's verschillende tonen maakt, en snel iedere rgb LED, verlicht wanneer gezien lage waarden voor donkere kleuren, de LEDs een zeer slechte prestaties geven en u kunt zien hoe ze beginnen te knipperen. Dit maakt de donkere hemisfeer van de bol van de kleur niet naar behoren kan functioneren.
Dan kom ik omhoog met het idee om het complementaire kleuren toewijzen aan de momenteel geselecteerde Toon.
Dus, een halfrond is het oppakken van een monochromatische kleurwaarde van een wiel van 50% verlichting 90 ~ 100% verzadiging. Ondertussen de andere kant, pikt een kleurverloop van dezelfde kleur-positie, maar voegt eraan toe, aan de andere kant van het verloop, de complementaire kleur.
Het lezen van gegevens van de sensor is ruw. Een filter kan worden toegepast om het lawaai en de trillingen van de lamp zelf. Op dit moment vind ik het interessant want het ziet er meer analogisch, reageert op elke aanraking en vergt een seconde aan volledig stabiliseren.
Ik ben nog steeds bezig met de code en het toevoegen van nieuwe functies en optimaliseren van de animaties.
U kunt de meest recente versies van de code op mijn github-accountcontroleren.