Stap 6: PICxel bibliotheek-hoe het werkt?
Maar laten we gaan voorbij dat en krijgen in de meer interessante bit van de software: de code zelf. Nogmaals, zoals ik niet persoonlijk van de code schrijven heb, dit is gonna be meer van een overzicht van de Raad van bestuur ter illustratie van enkele van de verschillende punten van de code werken.
We controleren uit de belangrijkste drijvende kracht waarmee onze bepaalde 30 x 30 serie van LEDs uit te voeren zoals gepland: de PICxel bibliotheek. Deze bibliotheek is verrassend eenvoudig en ongecompliceerd om te gebruiken.
Om te beginnen en het initialiseren van de array van alle 900 LEDs noemen we eerst de bouw voor de PICxel-klasse:
PICxel name_of_the_set_of_LEDs (how_many_LEDs_we_have, which_pin_the_data_is_being_sent_from_to_the_LEDs, color_mode);
Hier kunnen wij hoe LED's we lopen (900), die de gegevens pin is gonna worden gebruikt om te verbinden met de data lijn op de LEDs (pin 3 in ons geval), en de gewenste kleurmodus. Marshalls bibliotheek ondersteunt twee verschillende kleurmodi: GRB (RGB in een andere volgorde) en HSV. Onze slang spel gebeurt worden met behulp van HSV aangezien die toegestaan meer flexibiliteit voor de gebruiker om te kiezen voor zowel een kleur en de helderheid.
Kunnen we de LEDs verlicht gebruiksklaar door het aanroepen van de eerste in onze opstelling de
name_of_the_set_of_LEDs.begin();
functie en kies vervolgens de instellingen van de LED's en vervolgens de strip voor LEDs met onze nieuwe waarden bijwerken.
Voor HSV kleurmodus, kunt u de kleurtoon, verzadiging en waarde instellen. Voor degenen onder u die misschien niet weten, vertalen deze waarden ongeveer naar de kleur, hoe "vet" is een bepaalde kleur in plaats van worden gewassen en hoe "helder" een kleur is in plaats van donker, respectievelijk. Dit zijn alle set met de volgende functie:
name_of_the_set_of_LEDs.HSVsetLEDColor (which_LED_out_of_your_set_you_want_to_change, Kleurtoon, saturaturation, waarde);
Deze functie zal alleen ingesteld (maar nog niet de update) de waarden op slechts één LED, dus het heeft aanraden aan gebruik een for-lus meerdere LED-waarden wilt wijzigen.
Als u wilt bijwerken de LEDs, zodat ze alle tonen hun nieuwe instellingen (of oud als dat bepaalde LED werd niet bijgewerkt), gewoon het volgende commando:
name_of_the_set_of_LEDs.refreshLEDs();
De refresheLEDs()-functie maakt gebruik van poort manipulatie en assemblage code te maken voor een strakke bibliotheek dus zeer dat weinig tijd wordt verspild in het verzenden van de nieuwe informatie aan de WS2812 LEDs op hun aangewezen gegevenssnelheid.
U kunt een screenshot van de HSV demo voor deze bibliotheek in de afbeelding voor deze stap.