900 LED-skärm (6 / 8 steg)
Steg 6: PICxel bibliotek-hur fungerar det?
Men låt oss gå förbi som och få in den mer intressant stycke om mjukvaran: själva koden. Igen, som jag inte personligen skriva någon av koden, detta kommer att vara mer av en styrelse översikt illustrerar några av punkterna av koden fungerar.
Vi ska kolla den viktigaste drivkraften som gör att våra särskilda 30 x 30 utbud av lysdioder för att köra som planerat: PICxel bibliotek. Detta bibliotek är förvånansvärt enkel och okomplicerad att använda.
För att starta och initiera matrisen med alla 900 lysdioder kräver vi först byggandet klassen PICxel:
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);
Här kan vi erbjuda hur LEDs vi kör (900), som pin data kommer att användas för att ansluta till data linjen på lysdioder (stift 3 i vårt fall) och önskad färgläget. Marshall's library stödjer två olika färglägen: GRB (RGB i en annan ordning) och HSV. Vår orm spel händer att använda HSV eftersom som får mer flexibilitet för användaren att välja en färg och ljusstyrka.
Vi kan få lysdioderna lyser igång genom att första ringa i vår inställning till
name_of_the_set_of_LEDs.BEGIN();
fungera och anger sedan inställningarna av lysdioder och därefter uppdatera remsa av lysdioder med våra nya värden.
För HSV färgläge, kan du ange den nyans, mättnad och värde. För er som inte kanske vet, översätta dessa värden ungefär till färgen, hur "fet" en viss färg är i stället för att sköljas och hur "ljusa" en färg är istället för att vara mörk, respektive. Dessa är allt klart med följande funktion:
name_of_the_set_of_LEDs.HSVsetLEDColor (which_LED_out_of_your_set_you_want_to_change, hue, saturaturation, värde);
Denna funktion kommer att endast ange (men ännu inte uppdatera) på bara en LED, så det har rekommenderar för att använda en for-loop att ändra flera LED värden.
Om du vill uppdatera lamporna så att de alla visar sin nya inställningar (eller gamla om det särskilt LED inte var uppdaterad), helt enkelt utfärda följande kommando:
name_of_the_set_of_LEDs.refreshLEDs();
Funktionen refresheLEDs() använder port manipulation och församlingen koden göra för ett tight bibliotek så mycket lite tid går till spillo i skicka ut den nya informationen till WS2812 lysdioderna på deras utsedda datahastighet.
Du kan kolla in en skärmdump av HSV demo för det här biblioteket i bilden för detta steg.