Bónusz feladat: tudsz dobolni is?

Könnyen csinálhatsz egy "elektromos dobot" egy kis alufólia és egy kanál segítségével.

Villanydob :-D

Ez ugye tulajdonképpen egy... egy nyomógomb: mert a két drót összeér, ha a kanalat az alufóliához érinted.

Indítsd el a bongókat itt http://makeymakey.com/bongos/ és próbáld ki az előző oldalon a progit, ami ezzel dobol.

Azonban most a gomb helyett kösd be az alufóliás dobot! Próbáld ki! Mit tapasztalsz?

Rémséges prellezés

Nekem tök jól ment minden, de előfordult, hogy egyetlen "dobütés" helyett 2-3 ütésnek a hangját hallottam. Pedig én csak egyet ütöttem, komolyan! Mi lehet a gond?

Sajnos az történik, hogy ugyan én csak egyet akarok ütni, de mihelyst hozzáér az ütő a dobhoz, onnét rögvest picit visszapattan, majd ismét hozzáér. Ez elég gyorsan történik, de a mikrovezérlőnk simán észreveszi, és emiatt kapunk több dobütést. Ezt a nem várt be-ki-be-ki-be kapcsolgatás a prellezés. Sajnos a legtöbb nyomógomb, és kapcsoló is műveli ezt, némelyik kevésbé rontja el, némelyik sokkal jobban.

Szerencsére a billentyűzet gombjai sokkal precízebbek, így ha egy gombot lenyomsz, akkor abból egyetlen betű lesz.

A fóliás dobunk viszont nem ilyen precíz. Mit tegyünk? Egyszerű: ugyanúgy mint az infra esetén, fogjuk be a szemünket egy kicsi időre, hogy a prellezéskor érkező változásokra ne reagáljunk.

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

void loop() {
    if (digitalRead(0)==0) {
        Keyboard.press(' ');
        delay(100); // most nem figyelünk 100ms-ig        
        while(digitalRead(0)==0) {
            delay(10);
        }
        Keyboard.release(' ');        
    }

    if (digitalRead(1)==0) {
        Keyboard.press(KEY_LEFT_ARROW);        
        delay(100); // most nem figyelünk 100ms-ig        
        while(digitalRead(1)==0) {
            delay(10);
        }
        Keyboard.release(KEY_LEFT_ARROW);        
    }

}

No ez már döfi! Jöhet mindkét csatorna! De ehhez kelleni fog egy további darab alufólia, és egy kis ragasztó, valahogy így:

Fólia felvillanyozása :-D

...és bekötése

Van egy kis csalás. Mármint hogy egy ütőnk van, és két dobunk. Most akkor hova kössük a 0-ás, 1-es portot, meg a GND-t? Nyilván mindegyiket valahova - de nem mindegy, hogy hova. Ha mondjuk a GND-t az egyik dobra kötöd, a 0-ás portot az ütőre, a 2-eset meg a másik dobra, akkor csak az első dob fog dobolni. Amikor az ütővel a 2-es dobra ütnél, akkor az 1-es és 2-es port záródik össze, nem pedig a GND és a 2-es port. Viszont, ha a második dobot az elsőhöz érinted, akkor meg szól :)

Tehát a logika: a GND legyen az ütőn, a többi bemenet meg a felületeken, így bármely ütés a GND-vel kapcsolja össze a megütött felület inputját.

Mindkét bongó működik!

Ahogy a videón is látszik, sokat segít, ha a fólia le van ragasztva az asztalra, vagy rá van ragasztva valami nehezebbre: a bal oldali dob, ahol a fólia egy CD lemezen van, sokkal stabilabb mint a jobb oldali, ahol a fólia csak úgy zizeg a semmi közepén.

Mit tanultunk ebből?

Mindenből lehet gombot csinálni, és akármilyen fémes (vezető) anyagon lehet villanydobolni!