A mágikus USB

Eddig nem volt semmi extra, csak drót. De az USB ám nagyon okos! Ha valamit USB-n dugsz rá a gépre, akkor a gép:

Ha ez a folyamat magától megtörténik, akkor tényleg csak rá kell dugni a gépre a bármit, és innentől kezdve használható!

Az USB osztályok

Ennek semmi köze a programozáshoz. Az osztály jelentése hasonló, hasonlóan viselkedő vagy hasonló tulajdonságú dolgok gyűjteménye.

Nagyon gyakran más-más gyártóktól de hasonló eszközöket használunk. Mindegy, hogy hol készült az egerünk, az csak egy egér, elvégre is. Ezért a gyakran használt eszközöknek szép USB-s osztály neveket adtak:

és még sok-sok más. Az is előfordul, hogy egyetlen eszköz egyszerre több USB eszköz. Például, egy webkamerában van mikrofon is, ezért az egyszerre USB Video és USB Audio, tehát igaz, hogy egy kütyü nekünk, és egy USB portba dugjuk, de a gépnek mégis két kütyü.

Hogyan lehet USB-t használni?

Ez kissé fogós kérdés. Igaz, hogy voltaképpen csak ott táncolnak a bitek a madzagon, mint a morzés panelünkön, de a bitek ám borzasztóan gyorsan táncolnak. Ezért néhány mikrovezérlőbe beépítettek egy olyan kis modult, ami ezt a nagyon gyors kommunikációt elrendezi. Nekünk csak használni kell.

Szerencsére az Ardunino rendszerhez elkészítették a szükséges libeket is, legalábbis ahhoz, hogy egér és gombozat legyen az Arduinobol.

Noh, de nekünk van egy Trinketünk, nézzük meg, hogy ez mit tud! Tud például egérnek és gombozatnak lenni egyszerre. Ezt úgy nevezik hogy HID Combo. Nem rossz...

Köss egy nyomógombot a 0-ás port és a GND közé, és próbáld ki ezt a progit:

void setup() {
    pinMode(0,INPUT_PULLUP);
    Keyboard.begin(); // indítsuk el az USB kezelését
}

void loop() {
    if (digitalRead(0)==0) {
        Keyboard.println("Hello");
    }
}

No, töltsd le ezt a progit az A-starba! Ha most villog a képernyőn valahol a kurzor, és megnyomod a gombot, akkor az A-star "begépeli" hogy Hello és még egy soremelést (új sort) is tesz a végére. (Oda fog írni, ahol épp a kurzor van: nyiss meg egy Notepad-et, vagy Word-ot, és bele tud írni.)

Nem volt nehéz, ugye? A progiban már semmi újdonság nincs? Az elején beállítjuk a 0-ás portot bemenetnek, elindítjuk a Keyboard.begin()-nel az USB billentyűzet módot. Amikor begépelést akarunk, akkor a print metódusát hívjuk a Keyboard osztálynak. A println() még egy új sort is tesz a begépelt szöveg végére.

Honnan is van ez a Keyboard dolog? Nagybetűvel kezdődik, és pontok is kellenek hozzá: ez tehát egy osztály. Ez egy osztály egy libben. A neopixel esetben nekünk kellett leszedni a libet, viszont az alap Arduino rendszerhez magától jár a Keyboard és a Mouse osztályt tartalmazó lib, így máris használhatjuk.
Mi most az Arduino IDE 1.6.4-es verzióját használjuk. Az újabb verziók esetén a progi elejére oda kell írni, hogy #include<Keyboard.h> ami hozzáteszi a Keyboard libet a programunkhoz.

Mit tanultunk ebből?

Mi csupán használni szeretnénk az USB-t, és van hozzá az Arduinoban beépített lib, így máris kész a gombozat!