Az előző rész végén ott tartottunk, hogy nekünk kellene ledenként 24 bittel bíbelődni... Természetesen lehet! De, muszáj?
A NeoPixel ledek kezelése egy tipikus hogyan feladat. Merő apróság. Ráadásul nem csak nekünk hogyan feladat, hanem annak a pártízezer fejlesztőmérnöknek is, akik ezt használják.
Ezért úgy döntöttek, segítenek egymásnak! Egy ember megírta a NeoPixelek kezelésére a programot, és úgy gondolta, hogy mindenki más szabadon használhassa!
Azonban, ez nem egy 10 soros rövid dolog. Ráadásul hogyan probléma, szóval jó lenne, ha nem kellene a mi kis pársoros programunkba bemásolni 500 sornyi olvashatatlan hogyan kódot.
A hogyan kódokat el kell rejteni, be kell söpörni a szőnyeg alá, ne is lássuk őket, minket az érdekel, hogy mit akarunk megcsinálni.
A szőnyeg alá söprés módszere a library-k (magyarul könyvtárak). Úgy kell elképzelni ezt, hogy egy-egy funkcióra mások megírtak egy jó adag programdarabkát, amit becsomagoltak egy nagy zip file-ba.
Ezeket mi betehetjünk az Arduino IDE-be, és utána a mi programunkból használhatjuk a mások által megírt függvényeket, konstansokat, és minden mást is!
Honnan vannak ilyen könyvtárak? Mások megírták, és feltették a netre. Az Arduino IDE-ben meg ezeket könnyen tudjuk használni.
(Nem találod itt az Adafruit NeoPixel-t? Használd a Library Managert - a könyvtárost!)
A library (röviden lib) szó jelentése szó szerint könyvtár. A könyvtárban könyvek vannak, de informatikában egy library mások által megírt programdarabkák gyűjteménye.
A libekkel a programdarabkák újrahasznosíthatók, így nem kell mindig mindent nulláról kezdeni. Ezért a libekkel gyorsan és hatékonyan lehet haladni.
A libek további előnye, hogy elrejtik előlünk azokat a technikai részleteket, amivel nem akarunk foglalkozni, mert igazából nem a mi célunk hogy azokkal foglalkozzunk.
Például, egy betűt kirajzolni a képernyőre valójában nagyon bonyolult, hiszen egyeneseket és íveket kell pontosan kiszámolni, majd besatírozni az ezek közti területet, stb... De ha szeretnénk egy helló világ programot, akkor valószínűleg csak annyit akarunk írni, hogy drawString("Helló Világ") és rábízni valami jó kis libre minden részletet ezen kívül.
Programozni néha könnyű, néha bonyolult. Igazából bármely programsort be lehet tenni egy kategóriába:
Természetesen a számítógép buta, és fogalma sincs a HOGYAN-ról, tehát valakinek pontosan a szájába kell rágni minden lépést.
Azonban nekünk nem mindegy, hogy egyszerre 2000 sor programot kell átlátni, fejleszteni, vagy ehelyett csak 20 sornyi "MIT" programsort, és minden mást el lehet rejteni, be lehet söpörni a szőnyeg alá, olyan, mintha nem is lenne.
A programozást és a programírást az különbözteti meg, hogy a programíráskor boldogok vagyunk, ha valami nagyjából sikerül, míg a programozás során picit figyelünk arra is, hogy minél rövidebb, áttekinthetőbb, olvashatóbb, érthetőbb legyen a programunk.
Sok érdekes programtervezési módszer van erre, idővel megismersz majd párat! Egyelőre legyen elég annyi, hogy a HOGYAN sorokat próbáljuk meg jó messzire pakolni a MIT soroktól:
Tedd rá a próbapanelre az egyik NeoPixel ledet! Kösd be úgy, hogy:
Próbáld ki a következő progit:
#include <Adafruit_NeoPixel.h>
const int NEOPIXEL_PORT=0;
const int NEOPIXEL_CNT=1;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NEOPIXEL_CNT,NEOPIXEL_PORT, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
}
void fade() {
for (int b=0;b<=255;b++) {
pixels.setPixelColor(0, pixels.Color(255-b,b,0));
pixels.show();
delay(40);
}
for (int b=0;b<=255;b++) {
pixels.setPixelColor(0, pixels.Color(0,255-b,b));
pixels.show();
delay(40);
}
for (int b=0;b<=255;b++) {
pixels.setPixelColor(0, pixels.Color(b,0,255-b));
pixels.show();
delay(40);
}
}
void loop() {
fade();
}
Őőőő... a progi elég furán néz ki, de a led amit csinál, az mágikus! Teljes szivárvány!