Könyvtáros, segíts!

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!

Tedd a helyére

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.

A NeoPixel cuccok hozzárakása

(Nem találod itt az Adafruit NeoPixel-t? Használd a Library Managert - a könyvtárost!)

Mi is akkor ez a könyvtár dolog?

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.

A MIT és a HOGYAN programsorok

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:

Az első NeoPixel program

Tedd rá a próbapanelre az egyik NeoPixel ledet! Kösd be úgy, hogy:

A-star egy NeoPixellel

Fontos!

A NeoPixelnek két sor lába van, ezért úgy tedd a próbapanelre, hogy a két sor lába között legyen a próbapanel vájata, mint a képen! (A próbapanel érintkezési pontjai a vájat jobb és bal oldalán vízszintesen össze vannak kötve. Ha nincs a vájat a led két lábsora között, akkor ott összeköti a lábakat a próbapanel - amit nem akarunk!)

Fontos!

Ha egy áramkörben olyan alkatrészeket szerelsz, aminek több, mint 2 lába van, akkor kapcsold ki (húzd ki az USB-ből), mielőtt átalakítod az áramkört.

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!

Mi a lib?

A library (programkönyvtár, lib) mások által készített programdarabkák gyűjteménye, amit mi fel tudunk használni.